('max must not be before min');
    }

    var start = tryToStartAt?.start ?? min.start;

    // Clamp to maximum possible length
    if (length > years) length = years;

    // Enforce minimum
    if (start < min.start) {
      start = min.start;
    }

    // Enforce maximum (the end cannot go past max)
    var end = start.add(years: length - 1);
    if (end > max.start) {
      start = max.start.add(years: -(length - 1));
    }

    return YearRange(start, length);
  }

  /// Eagerly construct a list of [CalendarYear] instances corresponding to
  /// this [YearRange].
  ///
  /// The first entry will have the same year as [startDate]. All
  /// entries will have the specified [state] and [startingWeekday].
  List<CalendarYear> toList(CalendarState state, int startingWeekday) {
    var startYear =
        CalendarYear(start.year, state, startingWeekday: startingWeekday);
    return List.generate(length, (i) => startYear.addYears(i));
  }
}
// Copyright (c) 2016, 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:html';

import 'package:angular/angular.dart';
import 'package:intl/intl.dart';
import 'package:angular_components/button_decorator/button_decorator.dart';
import 'package:angular_components/dynamic_component/dynamic_component.dart';
import 'package:angular_components/focus/keyboard_only_focus_indicator.dart';
import 'package:angular_components/material_checkbox/material_checkbox.dart';
import 'package:angular_components/material_icon/material_icon.dart';
import 'package:angular_components/src/material_tree/material_tree_node.dart';
import 'package:angular_components/src/material_tree/material_tree_root.dart';
import 'package:angular_components/mixins/material_dropdown_base.dart';
import 'package:angular_components/model/selection/selection_options.dart';

const materialTreeLeftPaddingToken =
    OpaqueToken('MaterialTreeGroupComponent_materialTreeLeftPaddingToken');

/// An internal component for rendering selection options.
///
/// It must be rendered as a child of a [MaterialTreeRoot] implementation.
///
/// __Example use__:
///     <material-tree-group [group]="group"></material-tree-group>
@Component(
  selector: 'material-tree-group',
  directives: [
    ButtonDirective,
    DynamicComponent,
    MaterialIconComponent,
    KeyboardOnlyFocusIndicatorDirective,
    MaterialCheckboxComponent,
    MaterialTreeGroupComponent,
    NgFor,
    NgIf,
    NgClass
  ],
  directiveTypes: [
    Typed<MaterialTreeGroupComponent>.of([#T]),
  ],
  templateUrl: 'material_tree_group.html',
  styleUrls: ['material_tree_group.scss.css'],
)
class MaterialTreeGroupComponent<T> extends MaterialTreeNode<T>
    implements OnDestroy {
  @HostBinding('attr.role')
  static const hostRole = 'group';

  static final defaultConstantLeftPadding = 24;
  static final baseGridStep = 8; // Based on $mat-grid
  static final rowIndentationStep =
      baseGridStep * 5; // DUPLICATION of _size.scss
  static final checkboxWidth = baseGridStep * 5; // DUPLICATION of _size.scss
  final DropdownHandle _dropdownHandle;
  @Input()
  int level = 0;
  @Input()
  bool parentHasCheckbox = false;
  @Input()
  @override
  bool allowParentSingleSelection = false;
  @Input()
  @override


cap="round" stroke-linejoin="round" stroke-width="4"><path d="M33 44H13m10-16v16m12-28c0 6.5-5.373 12-12 12s-12-5.373-12-12c0-6.5 4-12 4-12h16s4 5.5 4 12Z"/><path d="m23 4-2 6 4 1-2 6M15 4h16"/></g></svg>';
  static const String goblet_full =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"><g fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"><path d="M33 44H13m10-16v16m12-28c0 1.675-.357 3.284-1 4.75C32.148 24.97 27.92 28 23 28a12 12 0 01-10.79-6.742A11.953 11.953 0 0111 16c0-2.373.533-4.613 1.21-6.5C13.387 6.217 15 4 15 4h16s1.815 2.496 3 6.112c.574 1.752 1 3.767 1 5.888Z"/><path d="M35 16s-7 3-12 0-12 0-12 0"/><path d="M34 10.112c.574 1.752 1 3.767 1 5.888 0 1.675-.357 3.284-1 4.75M12.21 9.5C11.533 11.387 11 13.627 11 16c0 1.886.435 3.67 1.21 5.258"/></g></svg>';
  static const String goblet_one =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"><g fill="currentColor"><g stroke="currentColor" stroke-width="4" clip-path="url(#svgIDa)"><path stroke-linecap="round" stroke-linejoin="round" d="m5.736 24.121 4.95 4.95c5.077 5.077 13.308 5.077 18.385 0v0c5.077-5.077 5.077-13.308 0-18.385l-4.95-4.95"/><path stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="2" d="m30 30 6 6"/><ellipse cx="14" cy="14" rx="13" ry="7" transform="rotate(-45 14 14)"/><ellipse cx="38" cy="38" rx="6" ry="3" transform="rotate(-45 38 38)"/></g><defs><clipPath id="svgIDa"><path d="M0 0h48v48H0z"/></clipPath></defs></g></svg>';
  static const String gold_medal =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"><g fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"><path d="M44 4H31l-4 10.3A15.023 15.023 0 0137.27 22L44 4ZM17 4H4l6.73 18A15.023 15.023 0 0121 14.3L17 4Z"/><path d="M39 29c0 8.284-6.716 15-15 15-8.284 0-15-6.716-15-15 0-2.528.625-4.91 1.73-7A15.023 15.023 0 0121 14.3c.97-.197 1.973-.3 3-.3s2.03.103 3 .3A15.


      |{
      |  "isvalid" : true|false,       (boolean) If the address is valid or not. If not, this is the only property returned.
      |  "address" : "bitcoinaddress", (string) The bitcoin address validated
      |  "scriptPubKey" : "hex",       (string) The hex encoded scriptPubKey generated by the address
      |  "ismine" : true|false,        (boolean) If the address is yours or not
      |  "iswatchonly" : true|false,   (boolean) If the address is watchonly
      |  "isscript" : true|false,      (boolean) If the key is a script
      |  "pubkey" : "publickeyhex",    (string) The hex value of the raw public key
      |  "iscompressed" : true|false,  (boolean) If the address is compressed
      |  "account" : "account"         (string) DEPRECATED. The account associated with the address, "" is the default account
      |}
      |
      |Examples:
      |> bitcoin-cli validateaddress "1PSSGeFHDnKNxiEyFrD1wcEaHr9hrQDDWc"
      |> curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "validateaddress", "params": ["1PSSGeFHDnKNxiEyFrD1wcEaHr9hrQDDWc"] }' -H 'content-type: text/plain;' http://127.0.0.1:8332/
    """.trimMargin()
}

package io.scalechain.blockchain.api.command.wallet.p3

import io.scalechain.blockchain.api.command.RpcCommand
import io.scalechain.blockchain.api.domain.RpcError
import io.scalechain.blockchain.api.domain.RpcRequest
import io.scalechain.blockchain.api.domain.RpcResult
import io.scalechain.util.Either
import io.scalechain.util.Either.Left
import io.scalechain.util.Either.Right

/*
  CLI command :
    bitcoin-cli -testnet listaddressgroupings

  CLI output :
    [
        [
            [
                "mgKgzJ7HR64CrB3zm1B4FUUCLtaSqUKfDb",
                0.00000000
            ],
            [
                "mnUbTmdAFD5EAg3348Ejmonub7JcWtrMck",
                0.00000000,
                "test1"
            ]
        ]
    ]

  Json-RPC request :
    {"jsonrpc": "1.0", "id":"curltest", "method": "listaddressgroupings", "params": [] }

  Json-RPC response :
    {
      "result": << Same to CLI Output >> ,
      "error": null,
      "id": "curltest"
    }
*/

/** ListAddressGroupings: lists groups of addresses that
  * may have had their common ownership made public by common use as inputs in the same transaction or
  * from being used as change from a previous transaction.
  *
  * https://bitcoin.org/en/developer-reference#listaddressgroupings
  */
object ListAddressGroupings : RpcCommand() {
  override fun invoke(request : RpcRequest) : Either<RpcError, RpcResult?> {
    // TODO : Implement
    assert(false)
    return Right(null)
  }
  override fun help() : String =
"""

"""
}

package io.scalechain.blockchain.api.command.wallet.p2

import io.scalechain.blockchain.api.command.RpcCommand
import io.scalechain.blockchain.api.domain.RpcError
import io.scalechain.blockchain.api.domain.RpcRequest
import io.scalechain.blockchain.api.domain.RpcResult
import io.scalechain.util.Either
import io.scalechain.util.Either.Left
import io.scalechain.util.Either.Right

/*
  CLI command :
    bitcoin-cli -testnet dumpprivkey moQR7i8XM4rSGoNwEsw3h4YEuduu


                    return true;
                }
            });

           /* ShapeView stick = itemStick.getFMview(context,false);
            stick.setInCenter(Ui.cd.getHt(16),height);
            //addView(stick);*/

            final ShapeView menu = itemMenu.getFMview(context,true);
            menu.setRipple(true,0.3f);
            menu.setRippleDown(false);
            menu.setX(width - menu.width);
            menu.onClick(new call(){
                @Override
                public void onCall(boolean bl) {
                    ContentHome.This.MenuHome.drawCatch();
                    final artitstBtns mn = new artitstBtns(getContext(), Ui.cd.DPW, Ui.cd.DPH,data.get(position));
                    //mn.fromHtml = true;
                    ContentHome.This.addPopup(mn);
                    mn.setClickable(true);
                    Ui.bk.add(new call() {
                        @Override
                        public void onCall(boolean bl) {
                            ContentHome.This.MenuHome.removeCatch();
                            ContentHome.This.removePopup(mn);
                        }
                    });
                }
            });

             onClick(new call(){
                @Override
                public void onCall(boolean bl) {

                    if(seclection){
                        if(selected[position]){
                            selected[position] = false;
                        }else{
                            selected[position] = true;
                        }
                        Item.this.invalidate();
                        onSelect();
                    }else{
                        ContentHome.This.MenuHome.drawCatch();
                        final songsPopup mn = new songsPopup(context, Ui.cd.DPW, Ui.cd.DPH,data.get(position));
                        ContentHome.This.addPopup(mn);
                        mn.setClickable(true);
                        Ui.bk.add(new call() {
                            @Override
                            public void onCall(boolean bl) {
                                ContentHome.This.removePopup(mn);
                                ContentHome.This.MenuHome.setVisibility(VISIBLE);
                                ContentHome.This.MenuHome.removeCatch();
                                ContentHome.This.MenuHome.setAlpha(1,true);
                            }
                        });
                    }

                }
            });

            addView(menu);

            no = textImg.getFMText(context,(position+1) + ".", Ui.cd.getHt(14));
            no.setX(Ui.cd.getHt(8+30));
            no.setY(Ui.cd.getHt(13));
            no.img.P0.setColor(0x33FFFFFF);
            no.setClickable(false);
            addView(no);

            name = textImg.getFMText(context,data.get(position)[0], Ui.cd.getHtF(18));
            name.setX(no.width + Ui.cd.getHt(5) + no.getX());
            name.setY(Ui.cd.getHt(12));
            if(width - Ui.cd.getHt(120) < name.width){
                name.setSize((int) (width - Ui.cd.getHt(100)),name.height);
                name.img.setEfects(new int[]{0x66FFFFFF,0x66FFFFFF,0x00FFFFFF});
            }else{
                name.img.P0.setColor(0x66FFFFFF);
            }
            name.setClickable(false);
            addView(name);

            artist = textImg.getFMText(context,data.get(position)[2]+ " TRACKS


kets());
        let index = key.hash() as usize % buckets.len();
        if let Ok(start_bucket) = buckets.get(index).unwrap().downcast::<EnvBucket>() {
            // there was a bucket chain at the index
            if let Some(mut bucket) = start_bucket.lookup(key) {
                // the chain has a bucket with the key; replace the value
                return Ok(bucket.set_value(value));
            }
        }
        // didn't exist, so we create it here:
        Ok(self.assoc(key, value))
    }

    pub fn concat(self, parent: ValueHandle<Env>) -> CtrResult<Env> {
        fn concat_(env: CtrResult<Env>, parent: ValueHandle<Env>) -> CtrResult<Env> {
            match env {
                Ok(env) => {
                    let parent_ = env.parent();
                    let parent__ = try!(concat_(parent_, parent));
                    let res = Env::new(Some(parent__));
                    let buckets = env.buckets().unwrap();
                    res.borrow().extend(buckets);
                    Ok(res)
                },
                _ => Ok(parent.root())
            }
        }
        concat_(Ok(self.root()), parent)
    }

    fn assoc(self, key: ValueHandle<Symbol>, value: ValueHandle<Any>) {
        if self.load_factor() >= 0.75 {
            self.rehash();
        }
        self._assoc(key, value);
    }

    fn _assoc(self, key: ValueHandle<Symbol>, value: ValueHandle<Any>) {
        let buckets = self.buckets().unwrap();
        let index = key.hash() as usize % buckets.len();
        let old_buckets = buckets.get(index).unwrap().downcast::<EnvBucket>().ok();
        let new_bucket = EnvBucket::new(old_buckets, key.root(), value.root());
        buckets.set(index, new_bucket.as_any_ref()).unwrap();
        self.inc_count();
    }

    fn rehash(self) {
        let buckets = self.buckets().unwrap();
        self.extend(buckets);
    }

    fn extend(mut self, old_buckets: Root<ArrayMut>) {
        self.set_buckets(Env::new_bucket_array(2 * old_buckets.len()).borrow());
        self.set_count(0);
        for bucket_list in old_buckets.iter() {
            let mut bucket = bucket_list.downcast::<EnvBucket>();
            while let Ok(b) = bucket {
                let k = b.key().unwrap();
                let v = b.value();
                self._assoc(k.borrow(), v.borrow());
                bucket = b.next().and_then(|bucket| bucket.downcast::<EnvBucket>());
            }
        }
    }

    fn set_count(mut self, count: usize) {
        let count = UInt::new(count);
        self.count = count.ptr();
    }

    fn inc_count(self) {
        let old_count = self.count().unwrap();
        self.set_count(old_count + 1);
    }
}

/// A hash bucket for Env.
ctr_struct!{
    struct EnvBucket = env_bucket_t {
        next: EnvBucket,
        key: Symbol,
        value: Any
    }
}

impl EnvBucket {
    fn new(next: Option<Root<EnvBucket>>, key: Root<Symbol>, value: Root<Any>) -> Root<EnvBucket> {
        let next = next.map(Root::as_any_ref)
                       .unwrap_or_else(|| Bool::new(false).as_any_ref());
        ITP.with(|itp| {
            let mut itp = itp.borrow_mut();
            let typ = itp.env_bucket_t.clone();
            let fields = ArrayVec::from([next, key.as_any_ref(), value]);
            itp.alloc_rec(


i", (netIncome, total, totalWithCess) => {
        getSlab("new")
            .then((slab) => expect(Math.round(getTotalTax(netIncome, slab).annual)).toBe(total))
            .then(() => expect(getWithCess(total, cess)).toBe(totalWithCess))
            .catch((e) => console.error(e));
    });
});// NOTE: Code kept as close to spec examples as possible but avoid compile errors.

/*~ https://wicg.github.io/webhid/#example-1 */
async function example_1() {
    // Retrieve devices and log the device names to the console.

    document.addEventListener('DOMContentLoaded', async () => {
        const devices = await navigator.hid.getDevices();
        devices.forEach(device => {
            console.log(`HID: ${device.productName}`);
        });
    });
    // Register event listeners for connection and disconnection of HID devices.

    navigator.hid.addEventListener('connect', ({ device }) => {
        console.log(`HID connected: ${device.productName}`);
    });

    navigator.hid.addEventListener('disconnect', ({ device }) => {
        console.log(`HID disconnected: ${device.productName}`);
    });

    // Devices are not accessible through getDevices() and will not generate connection events until permission has been granted to access the device.
    // The page may request permission using requestDevice(). In this example, the page requests access to a device with vendor ID 0xABCD, product ID 0x1234.
    // The device must also have a collection with usage page Consumer (0x0C) and usage ID Consumer Control (0x01).
    const requestButton = document.getElementById('request-hid-device');
    requestButton?.addEventListener('click', async () => {
        let device;
        try {
            const devices = await navigator.hid.requestDevice({
                filters: [
                    {
                        vendorId: 0xabcd,
                        productId: 0x1234,
                        usagePage: 0x0c,
                        usage: 0x01,
                    },
                ],
            });
            device = devices[0];
        } catch (error) {
            console.log('An error occurred.');
        }

        if (!device) {
            console.log('No device was selected.');
        } else {
            console.log(`HID: ${device.productName}`);
        }
    });
}
import styled from 'src/themes/StyledComponents';

/** Style component to display a generic button that you can customize based
 * on the styled component theme.
 */
export const Button: any = styled('button')<{
  bgColor: string | undefined;
  adaptiveWidth: boolean;
}>`
  border: ${// tslint:disable-next-line: typedef
    (props: any) =>
      props.theme.borderSize} ${// tslint:disable-next-line: typedef
    (props: any) =>
      props.theme.borderStyle} ${// tslint:disable-next-line: typedef
    (props: any) => props.theme.color.primary};
  height: 35px;
  text-align: center;
  cursor: pointer;
  background-color: ${// tslint:disable-next-line: typedef
  (props: any) => props.theme.colorBackground};
  color: ${// tslint:disable-next-line: typedef
  (props: any) => props.theme.color.primary};
  ${// tslint:disable-next-line: typedef
  (props: any): string => {
    if (props.adaptiveWidth) {
      return `padding: 0 ${props.theme.gutterSmall};`;
    } else {
      return 'width: 35px; padding: 0;';
    }


nt_v1_postgresql_proto_rawDescGZIP(), []int{0}
}

func (x *AddPostgreSQLServiceParams) GetNodeId() string {
	if x != nil {
		return x.NodeId
	}
	return ""
}

func (x *AddPostgreSQLServiceParams) GetNodeName() string {
	if x != nil {
		return x.NodeName
	}
	return ""
}

func (x *AddPostgreSQLServiceParams) GetAddNode() *AddNodeParams {
	if x != nil {
		return x.AddNode
	}
	return nil
}

func (x *AddPostgreSQLServiceParams) GetServiceName() string {
	if x != nil {
		return x.ServiceName
	}
	return ""
}

func (x *AddPostgreSQLServiceParams) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *AddPostgreSQLServiceParams) GetPort() uint32 {
	if x != nil {
		return x.Port
	}
	return 0
}

func (x *AddPostgreSQLServiceParams) GetDatabase() string {
	if x != nil {
		return x.Database
	}
	return ""
}

func (x *AddPostgreSQLServiceParams) GetSocket() string {
	if x != nil {
		return x.Socket
	}
	return ""
}

func (x *AddPostgreSQLServiceParams) GetPmmAgentId() string {
	if x != nil {
		return x.PmmAgentId
	}
	return ""
}

func (x *AddPostgreSQLServiceParams) GetEnvironment() string {
	if x != nil {
		return x.Environment
	}
	return ""
}

func (x *AddPostgreSQLServiceParams) GetCluster() string {
	if x != nil {
		return x.Cluster
	}
	return ""
}

func (x *AddPostgreSQLServiceParams) GetReplicationSet() string {
	if x != nil {
		return x.ReplicationSet
	}
	return ""
}

func (x *AddPostgreSQLServiceParams) GetUsername() string {
	if x != nil {
		return x.Username
	}
	return ""
}

func (x *AddPostgreSQLServiceParams) GetPassword() string {
	if x != nil {
		return x.Password
	}
	return ""
}

func (x *AddPostgreSQLServiceParams) GetQanPostgresqlPgstatementsAgent() bool {
	if x != nil {
		return x.QanPostgresqlPgstatementsAgent
	}
	return false
}

func (x *AddPostgreSQLServiceParams) GetQanPostgresqlPgstatmonitorAgent() bool {
	if x != nil {
		return x.QanPostgresqlPgstatmonitorAgent
	}
	return false
}

func (x *AddPostgreSQLServiceParams) GetMaxQueryLength() int32 {
	if x != nil {
		return x.MaxQueryLength
	}
	return 0
}

func (x *AddPostgreSQLServiceParams) GetDisableQueryExamples() bool {
	if x != nil {
		return x.DisableQueryExamples
	}
	return false
}

func (x *AddPostgreSQLServiceParams) GetCustomLabels() map[string]string {
	if x != nil {
		return x.CustomLabels
	}
	return nil
}

func (x *AddPostgreSQLServiceParams) GetSkipConnectionCheck() bool {
	if x != nil {
		return x.SkipConnectionCheck
	}
	return false
}

func (x *AddPostgreSQLServiceParams) GetDisableCommentsParsing() bool {
	if x != nil {
		return x.DisableCommentsParsing
	}
	return false
}

func (x *AddPostgreSQLServiceParams) GetTls() bool {
	if x != nil {
		return x.Tls
	}
	return false
}

func (x *AddPostgreSQLServiceParams) GetTlsSkipVerify() bool {
	if x != nil {
		return x.TlsSkipVerify
	}
	return false
}

func (x *AddPostgreSQLServiceParams) GetMetricsMode() MetricsMode {
	if x != nil {
		return x.


"You Should Thank Me";
            Tooltip = (IsRevealed) ? "https://images-cdn.fantasyflightgames.com/filer_public/30/68/3068be81-f299-4c69-b5ee-307ac1da9c89/swz82_a1_thank-me.png" : null;
        }
    }

    public class YoudBetterMeanBusiness : ZamWesellSecretCondition
    {
        public You


 bindOptionsAndCreateUsage,
  ExtraPermissions,
  toYargsCommand,
  toYargsUsage,
  YargsInstance,
  YargsOptions,
} from '../../dependencies/yargs.ts';

import { LOG_FORMATS } from '../../lib/git/logFormats.ts';
import { getCommitsUpToMax } from '../../lib/git/getCommitsUpToMax.ts';
import { getCommitsFromParentBranch } from '../../lib/git/getCommitsFromParentBranch.ts';

interface Args {
  format: string,
  number: number,
  reverse: boolean,
  fromParentBranch?: boolean,
  fromOtherRef?: string,
}

const DEFAULT_FORMAT = 'pretty';

export const baseCommand = 'history';
export const aliases = [ 'h' ];
export const describe = 'Displays the commit history';

export const ARG_FROM_PARENT_BRANCH = 'from-parent-branch';
export const ARG_FROM_OTHER_BRANCH = 'from-other-branch';
export const options: YargsOptions = {
  format: {
    alias: 'f',
    describe: 'The format name. Defaults to pretty',
    choices: Object.keys(LOG_FORMATS).map((id) => id.toLowerCase()),
    type: 'string',
    default: DEFAULT_FORMAT,
  },
  number: {
    alias: 'n',
    describe: 'Limit the number of commits to output',
    type: 'number',
    default: 10,
  },
  reverse: {
    alias: 'r',
    describe: 'Output the commits chosen to be shown in reverse order.',
    type: 'boolean',
    default: false,
  },
  [ ARG_FROM_PARENT_BRANCH ]: {
    alias: 'p',
    describe: 'Audit all commits on top of the parent branch',
    type: 'boolean',
    conflicts: ARG_FROM_OTHER_BRANCH,
  },
  [ ARG_FROM_OTHER_BRANCH ]: {
    alias: 'o',
    describe: 'Audit all commits on top of the provided branch',
    type: 'string',
    conflicts: ARG_FROM_PARENT_BRANCH,
  },
};
export const command = toYargsCommand(baseCommand, options);
export const usage = toYargsUsage(baseCommand, options);
export const extraPermissions: ExtraPermissions = {};

export function builder (yargs: YargsInstance) {
  return bindOptionsAndCreateUsage(yargs, usage, options);
}

export async function handler (args: Args) {
  const {
    format, number, reverse, fromParentBranch,
  } = args;

  const logFormat = LOG_FORMATS[ format.toUpperCase() ];

  if (!logFormat) { throw Error(`Can't find log format ${format}`); } // Can't happen

  const commits = fromParentBranch
    ? await getCommitsFromParentBranch(reverse)
    : await getCommitsUpToMax(number, reverse);

  const output = logFormat(commits);

  await log(Deno.stdout, output.concat('\n'));
  return commits;
}
export class JSLinqHelper {

    public static NonEnumerable<T>(instance: T, name: keyof T, value: any) {
        Object.defineProperty(instance, name, {
            value: value,
            enumerable: false,
            configurable: true
        });
    }

    public static OrderCompareFunction<T>(valueSelector: (item: T) => any, a: T, b: T, invert: boolean): number {
        const value_a: any = valueSelector(a);
        const value_b: any = valueSelector(b);

        const type_a: string = typeof value_a;
        const type_b: string = typeof value_b;

        if (type_a === "string" && type_a === type_b) {
            let value_a_string: string = value_a;
            value_a_string = value_a_string.toLower


<Warning>

Estas instrucciones asumen que has marcado tus líneas de costura. Pueden ser más difíciles de seguir, si te saltas este paso.

</Warning>

### Paso 2: La Corona

- Con los lados derechos juntos, haciendo coincidir las líneas de costura y los picos, cose dos piezas de corona juntas.
- Presiona las costuras para abrirlas. Para ello, si no dispone de jamón puede utilizar flanneles o toallas en su lugar.
- (Opcional) _Canteado_ ambos lados de la costura, asegurándote de coger los márgenes de costura.
- Repite la operación hasta que tengas dos mitades. Si la mitad del número de piezas de la corona es un número impar, tendrás que coser una sola pieza para cada mitad. Por ejemplo, si usted tiene 6 piezas de la corona, usted hace dos mitades de 3 coser una pieza a dos piezas cocidas juntas.
- With right sides together, matching seam lines and peaks, sew the two halves together. Es posible que le resulte más fácil unir la mano debido a la masa o a la precisión. This seam will be referred to as the "centre crown seam" going forward.
- (Opcional) _Canteado_ ambos lados de la costura central de la corona, asegurándote de coger los márgenes de costura.

<Note>

Dependiendo de su franquicia de costura puede que desee recortar costuras a medida que vaya a reducir el granel.

</Note>

### Paso 3: Las flaps auriculares

#### Aleteados con ataduras

- Corta dos trozos de cinta de 30 cm a 40 cm. These will be referred to as ties going forward.
- _Hilvana_ un lazo en el lado derecho de una solapa de la oreja (la entretela si la usas). Repetir para otro empate.
- Con los lados derechos juntos, haciendo coincidir las líneas de costura, cose una orejera con corbata a una orejera sin corbata.
- Recorta el margen de costura.
- Dale la vuelta y presiona.
- (Opcional) _Puntada de remate_ o _puntada de remate_ el borde doblado.
- _Hilvana_ juntando los bordes crudos.
- Repite la operación con la orejera restante.

<Tip>

If you are uncertain about the length you want for you ties take 1 metre (39") of ribbon and cut in half. Utilice estas mitades como los lazos en las instrucciones anteriores. Los lazos están terminados al final para que puedas ajustar las longitudes entonces.

</Tip>

<Note>

Las longitudes anteriores son recomendaciones, así que siéntete libre de ir tan largo o corto como quieras con los vínculos.
Si lo prefieres, puedes hacer tus corbatas personalizadas con tela, [ver Holmes cortando](/docs/designs/holmes/cutting/) para más información.

</Note>

#### Brillantes con agujeros de botones

- Enfrenta la parte posterior de dos de los ojales. (Esto no es necesario si dos flaps ya han sido conectados)
- Con los lados derechos juntos, haciendo coincidir las líneas de costura, cose dos piezas de solapa de oreja juntas (una con entretela, la otra no).
- Recorta el margen de costura.
- Dale la vuelta y presiona.
- (Opcional) _Puntada de remate_ o _Puntada de remate_ el borde doblado.
- _Hilvana_ juntando los bordes crudos.
- Sew the buttonhole in your preferred method.
- Repite la operación con la orejera restante.

<Warning>

Las aletas auditivas tendrán que ser lo suficientemente largas para pasar por


umentos ni recuentos de contenido, sino que se sincroniza todo el contenido\"],\"jeIRua\":[\"Community content will never be synced if the remote is set to only sync signed content. You can <0>edit the \",[\"name\"],\" remote</0> to change it.\"],\"YMFI4G\":[\"Community content will never be synced if this setting is enabled\"],\"z1+1Bb\":[\"Community score\"],\"yP0tHq\":[\"Community User Guide\"],\"RA55Iu\":[\"Nombre de la empresa\"],\"qqWcBV\":[\"Completado\"],\"ywFj2D\":[\"Configuration\"],\"iAL9tI\":[\"Configure\"],\"ogregV\":[\"Connect Private Automation Hub\"],\"RjmANw\":[\"Connect the ansible-galaxy client\"],\"IJhKhm\":[\"Connect to Hub\"],\"l011/n\":[\"Considere usar una URL segura (https://).\"],\"5FhBLI\":[\"Contact you organization administrator for more information.\"],\"MHdDrb\":[\"Póngase en contacto con el administrador de su organización para obtener más información.\"],\"1GYJFO\":[\"El contenedor debe sincronizarse primero con el repositorio remoto.\"],\"XnWR+W\":[\"Los nombres de los contenedores solo pueden contener caracteres alfanuméricos, \\\".\\\", \\\"_\\\", \\\"-\\\" y un máximo de una \\\"/\\\".\"],\"wgvEvS\":[\"Container names can only contain alphanumeric characters, \\\".\\\", \\\"_\\\", \\\"-\\\" and zero or one \\\"/\\\".\"],\"huGXPc\":[\"Espacio de nombres del contenedor\"],\"hVd6zQ\":[\"Container Registry\"],\"97UwsJ\":[\"Tipo de registro de contenedores\"],\"oNWfkV\":[\"Nombre del repositorio de contenedores\"],\"ClGcRq\":[\"Containers\"],\"4b3oEV\":[\"Contenido\"],\"4w69Y9\":[\"Contenido añadido\"],\"u2foAE\":[\"Content added to clipboard\"],\"kfmrky\":[\"Content count\"],\"di/O/K\":[\"Content from roles and collections can be referenced in Ansible playbooks and immediately put to work. You'll find content for provisioning infrastructure, deploying applications, and all of the tasks you do everyday.\"],\"bvSFpD\":[\"Content from roles and collections can be referenced in Ansible PlayBooks and immediately put to work. You'll find content for provisioning infrastructure, deploying applications, and all of the tasks you do everyday.\"],\"Y6CyM6\":[\"El contenido en repositorios sin una distribución no será visible para los clientes para sincronización, descarga o búsqueda.\"],\"CXfJAw\":[\"Content not present in remote repository will be removed from the local repository\"],\"aE2TFq\":[\"Contenido eliminado\"],\"SVyf2o\":[\"Contenido\"],\"Y60kkp\":[\"Nombre del controlador\"],\"Dhfh+1\":[\"No se pudo mostrar la lista de controladores.\"],\"gLvz8M\":[\"Cookie preferences\"],\"6V3Ea3\":[\"Copiado\"],\"he3ygx\":[\"Copiar\"],\"5wEn9x\":[\"Copiar configuración CLI\"],\"g1YhUm\":[\"Copy code to clipboard\"],\"ZCHfNb\":[\"Copy content\"],\"/4gGIX\":[\"Copiar al portapapeles\"],\"ATHo1w\":[\"Copy version \",[\"version\"],\" to repositories\"],\"BVvDwL\":[\"Copyable input\"],\"DNPD/z\":[\"


bob, noSync(),
			rename("a", "b/a"),
			reenableUpdates(),
			lsdir("a/", m{"b": "DIR"}),
			lsdir("a/b/", m{"a": "SYM"}),
			lsdir("a/b/a", m{"b": "DIR"}),
		),
		as(alice,
			lsdir("a/", m{"b": "DIR"}),
			lsdir("a/b/", m{"a": "SYM"}),
			lsdir("a/b/a", m{"b": "DIR"}),
			write("a/c", "hello"),
		),
		as(bob,
			read("a/b/a/c", "hello"),
		),
	)
}

// bob causes a complicated rename(cycle while unstaged),
func TestCrComplexRenameCycle(t *testing.T) {
	test(t,
		users("alice", "bob"),
		as(alice,
			mkdir("a"),
			mkdir("b"),
		),
		as(bob,
			disableUpdates(),
		),
		as(alice,
			rename("b", "a/b"),
		),
		as(bob, noSync(),
			mkdir("b/c"),
			rename("a", "b/c/a"),
			reenableUpdates(),
			lsdir("a/", m{"b": "DIR"}),
			lsdir("a/b/", m{"c": "DIR"}),
			lsdir("a/b/c", m{"a": "SYM"}),
			lsdir("a/b/c/a", m{"b": "DIR"}),
		),
		as(alice,
			lsdir("a/", m{"b": "DIR"}),
			lsdir("a/b/", m{"c": "DIR"}),
			lsdir("a/b/c", m{"a": "SYM"}),
			lsdir("a/b/c/a", m{"b": "DIR"}),
			write("a/d", "hello"),
		),
		as(bob,
			read("a/b/c/a/d", "hello"),
		),
	)
}

// bob causes a complicated and large rename(cycle while unstaged),
func TestCrComplexLargeRenameCycle(t *testing.T) {
	test(t,
		users("alice", "bob"),
		as(alice,
			mkdir("a/b/c"),
			mkdir("d/e/f"),
		),
		as(bob,
			disableUpdates(),
		),
		as(alice,
			rename("d", "a/b/c/d"),
		),
		as(bob, noSync(),
			mkdir("d/e/f/g/h/i"),
			rename("a", "d/e/f/g/h/i/a"),
			reenableUpdates(),
			lsdir("a/b/c/d/e/f/g/h/i", m{"a": "SYM"}),
			lsdir("a/b/c/d/e/f/g/h/i/a", m{"b": "DIR"}),
		),
		as(alice,
			lsdir("a/b/c/d/e/f/g/h/i", m{"a": "SYM"}),
			lsdir("a/b/c/d/e/f/g/h/i/a", m{"b": "DIR"}),
			write("a/j", "hello"),
		),
		as(bob,
			read("a/b/c/d/e/f/g/h/i/a/j", "hello"),
		),
	)
}

// bob and alice do a lot of complex renames cycle while unstaged
func TestCrComplexRenameNoCycle(t *testing.T) {
	test(t,
		users("alice", "bob"),
		as(alice,
			mkdir("a/b/c/d/e/f/g"),
		),
		as(bob,
			disableUpdates(),
		),
		as(alice,
			rename("a/b/c/d/e/f", "f"),
			rename("a/b/c/d", "f/g/d"),
			rename("a/b", "f/g/d/e/b")


next;
		if (fast != NULL) {
			slow = slow->next;
			fast = fast->next;
		}
	}

	/* 'slow' is before the midpoint in the list, so split it in two
	at that point. */
	*frontRef = source;
	*backRef = slow->next;
	slow->next = NULL;
}

/* Function to print nodes in a given linked list */
void printList(Node* node)
{
	while (node != NULL) {
		cout << node->data << " ";
		node = node->next;
	}
}

/* Function to insert a node at the beginning of the linked list */
void push(Node** head_ref, int new_data)
{
	/* allocate node */
	Node* new_node = new Node();

	/* put in the data */
	new_node->data = new_data;

	/* link the old list off the new node */
	new_node->next = (*head_ref);

	/* move the head to point to the new node */
	(*head_ref) = new_node;
}

/* Driver program to test above functions*/
int main()
{
	/* Start with the empty list */
	Node* res = NULL;
	Node* a = NULL;

	/* Let us create a unsorted linked lists to test the functions
Created lists shall be a: 2->3->20->5->10->15 */
	push(&a, 15);
	push(&a, 10);
	push(&a, 5);
	push(&a, 20);
	push(&a, 3);
	push(&a, 2);

	/* Sort the above created Linked List */
	MergeSort(&a);

	cout << "Sorted Linked List is: \n";
	printList(a);

	return 0;
}

// This is code is contributed by rathbhupendra
#include <bits/stdc++.h>
using namespace std;

/* Link list node */
struct Node {
    int data;
    struct Node* next;
};

void push(struct Node** head_ref, int new_data)
{
    /* allocate node */
    struct Node* new_node = new Node;

    /* put in the data  */
    new_node->data = new_data;

    /* link the old list off the new node */
    new_node->next = (*head_ref);

    /* move the head to point to the new node */
    (*head_ref) = new_node;
}

// Returns true if there is a loop in linked list
// else returns false.
bool detectLoop(struct Node* h)
{
    unordered_set<Node*> s;
    while (h != NULL) {
        // If this node is already present
        // in hashmap it means there is a cycle
        // (Because you we encountering the
        // node for the second time).
        if (s.find(h) != s.end())
            return true;

        // If we are seeing the node for
        // the first time, insert it in hash
        s.insert(h);

        h = h->next;
    }

    return false;
}

/* Driver program to test above function*/
int main()
{
    /* Start with the empty list */
    struct Node* head = NULL;

    push(&head, 20);
    push(&head, 4);
    push(&head, 15);
    push(&head, 10);

    /* Create a loop for testing */
    head->next->next->next->next = head;

    if (detectLoop(head))
        cout << "Loop found";
    else
        cout << "No Loop";

    return 0;
}
#include <bits/stdc++.h>
using namespace std;

int main(){
	int temperatureNumber;
	string temperatureType, temperatureType2;
	cout << "==============================================================================" << endl;
	cout << "Input terperatur type list \nC (Celcius) \nR (Reamur) \nK (Kevlin) \nF (Fahrenheit)" << endl;
	cout << "Example Input (45 C K)" << endl;
	cout << "It means


512,512,[],"f45c","M512 512H0V0h512v512z"],"square-root-alt":[576,512,[],"f698","M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z"],stamp:[512,512,[],"f5bf","M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z"],star:[576,512,[],"f005","M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z"],"star-and-crescent":[512,512,[],"f699","M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-


lumn;
    align-items: center;
  }

  .descriptionContainer {
    word-break: break-word;
    flex: 1;
    width: 90%;

    a {
      display: inline-block;
    }
  }

  .buttonsContainer {
    display: flex;
    flex-direction: row; /* Default horizontal layout */
    align-items: center;
    justify-content: center;
    width: auto;
    gap: 16px; /* Larger gap for horizontal layout */
    flex-wrap: wrap; /* Allow wrapping if space is tight */

    /* Switch to vertical layout when container width is too narrow */
    @media (max-width: 400px) {
      flex-direction: column;
      gap: 8px; /* Smaller gap for vertical layout */
    }

    &.ownerButtons {
      flex-direction: row;
      gap: 16px;
    }
  }

  /* styles unique to the embedded app card */
  &.embedded {
    background-color: var(--appCard-bg);
    width: calc(100% - 48px);
    height: calc(100% - 48px);
    margin: 0;
    padding: 24px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    transition: background-color 0.2s ease;

    &:hover {
      background-color: var(--appCard-hoverBg);
      cursor: pointer;
    }

    .nameContainer {
      .name {
        white-space: nowrap;
      }
    }
  }

  .consentDisclaimer {
    font-size: 0.875rem;
    color: var(--negative-fg);
  }
}

.scopeContainer {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.author {
  display: inline-block;
}
.modal {
  max-height: calc(100vh - 80px); // Maximum height is the screen height minus 20px
  overflow-y: auto; // Enable vertical scrolling if the content is larger than the container
  height: fit-content; // The height of the container will be as large as the content up to max-height
}

.container {
  h1,
  h2,
  h3,
  h4 {
    margin-block-end: 0;
    margin-block-start: 0;

    & > :global(.i):before {
      vertical-align: middle;
      font-size: 26px;
      padding-right: 4px;
    }
  }

  .shortTitle {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  input {
    flex: 1;
    border: none;
    padding: 4px 10px;

    display: flex;
    /*height: 40px;*/
    background: var(--input-bg);
    justify-content: center;
    align-items: stretch;
    border-radius: 4px;
    overflow: hidden;

    box-sizing: border-box;
    width: 100%;
    font-size: 18px;
    //margin-bottom: 16px;
  }

  .decodeInput {
    margin-top: 8px;
    width: 260px;
  }

  label {
    display: block;
    font-size: 18px;
    margin-bottom: 4px;
  }

  .decoded {
    overflow-y: auto; // Enable vertical scrolling if the content is larger than the container
  }

  button.cutButton {
    background: var(--dim2);
    color: var(--fgMedium);

    &:hover {
      background: var(--dim3);
    }

    .i:before {
      vertical-align: middle;
      font-size: 26px;
      padding-right: 4px;
    }
    span {
      margin-right: 4px;


          "Shapes of all inputs must match: values[0].shape = ",
                      shapes[0].DebugString(), " != values[", i, "].shape = ",
                      shapes[i].DebugString()));
    }

    int expanded_num_dims = shapes[0].dims() + 1;
    int axis = axis_;
    if (axis < 0) axis += expanded_num_dims;

    OP_REQUIRES(ctx, 0 <= axis && axis < expanded_num_dims,
                errors::InvalidArgument("axis = ", axis_, " not in [",
                                        -expanded_num_dims, ", ",
                                        expanded_num_dims, ")"));

    std::vector<xla::XlaOp> reshaped_inputs(num);

    TensorShape child_shape(shapes[0]);
    child_shape.InsertDim(axis, 1);

    for (int i = 0; i < num; ++i) {
      // Reshape the inputs to have an extra dimension of size 1.
      reshaped_inputs[i] = xla::Reshape(values[i], child_shape.dim_sizes());
    }

    ctx->SetOutput(0, xla::ConcatInDim(ctx->builder(), reshaped_inputs, axis));
  }

 private:
  int axis_;
};

REGISTER_XLA_OP(Name("Pack"), PackOp);

}  // namespace
}  // namespace tensorflow
/* Copyright 2017 The TensorFlow Authors. All Rights Reserved.

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

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

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

#include "tensorflow/compiler/tf2xla/lib/data_format.h"
#include "tensorflow/compiler/tf2xla/xla_helpers.h"
#include "tensorflow/compiler/tf2xla/xla_op_kernel.h"
#include "tensorflow/compiler/tf2xla/xla_op_registry.h"
#include "tensorflow/compiler/xla/client/xla_builder.h"
#include "tensorflow/core/util/tensor_format.h"

namespace tensorflow {
namespace {

class SpaceToDepthOp : public XlaOpKernel {
 public:
  explicit SpaceToDepthOp(OpKernelConstruction* ctx) : XlaOpKernel(ctx) {
    string data_format_str;
    OP_REQUIRES_OK(ctx, ctx->GetAttr("data_format", &data_format_str));
    OP_REQUIRES(ctx, FormatFromString(data_format_str, &data_format_),
                errors::InvalidArgument("Invalid data format"));

    OP_REQUIRES_OK(ctx, ctx->GetAttr("block_size", &block_size_));
    OP_REQUIRES(
        ctx, block_size_ > 1,
        errors::InvalidArgument("Block size should be > 1: ", block_size_));
  }

  void Compile(XlaOpKernelContext* ctx) override {
    xla::XlaOp input = ctx->Input(0);

    TensorFormat data_format = data_format_;
    // If the data is in a vectorized format, reformat it into a non-vectorized
    // version first. We'll undo the transformation later.
    if (data_format == FORMAT_NCHW_VECT_C) {
      data_format = FORMAT_NCHW;
      auto input_reshaped = NCHW_VECT_CToNCHW(input);
      OP_REQUIRES_OK(ctx, input_reshaped.status());
      input = input_reshaped.value();
    }

    OP_REQUIRES(ctx, data_format == FORMAT_NCH


s]%n", millis, nanos, ldt);
                throw new RuntimeException("FAILED: j.s.ts -> instant -> j.s.ts");
            }
            inst = Instant.ofEpochSecond(secs, nanos);
            Timestamp ta0 = Timestamp.from(inst);
            if (ta0.getTime() != inst.toEpochMilli() ||
                ta0.getNanos() != inst.getNano() ||
                !inst.equals(ta0.toInstant())) {
                System.out.printf("ms: %16d  ns: %10d  ldt:[%s]%n", millis, nanos, ldt);
                throw new RuntimeException("FAILED: instant -> timestamp -> instant");
            }

            ////////// java.sql.Date /////////////////////////////
            // j.s.d/t uses j.u.d.equals() !!!!!!!!
            java.sql.Date jsd = new java.sql.Date(millis);
            if (!isEqual(jsd.toLocalDate(), jsd)) {
                System.out.printf("ms: %16d  ns: %10d  ldt:[%s]%n", millis, nanos, ldt);
                print(jsd.toLocalDate(), jsd);
                throw new RuntimeException("FAILED: j.s.d -> ld");
            }
            LocalDate ld = ldt.toLocalDate();
            if (!isEqual(ld, java.sql.Date.valueOf(ld))) {
                System.out.printf("ms: %16d  ns: %10d  ldt:[%s]%n", millis, nanos, ldt);
                print(ld, java.sql.Date.valueOf(ld));
                throw new RuntimeException("FAILED: ld -> j.s.d");
            }
            ////////// java.sql.Time /////////////////////////////
            java.sql.Time jst = new java.sql.Time(millis);
            if (!isEqual(jst.toLocalTime(), jst)) {
                System.out.printf("ms: %16d  ns: %10d  ldt:[%s]%n", millis, nanos, ldt);
                print(jst.toLocalTime(), jst);
                throw new RuntimeException("FAILED: j.s.t -> lt");
            }
            // millis precision
            LocalTime lt = ldt_ms.toLocalTime();
            if (!isEqual(lt, java.sql.Time.valueOf(lt))) {
                System.out.printf("ms: %16d  ns: %10d  ldt:[%s]%n", millis, nanos, ldt);
                print(lt, java.sql.Time.valueOf(lt));
                throw new RuntimeException("FAILED: lt -> j.s.t");
            }
        }
        System.out.println("Passed!");
    }

    private static boolean isEqual(LocalDateTime ldt, Timestamp ts) {
        ZonedDateTime zdt = ZonedDateTime.of(ldt, ZoneId.systemDefault());
        return zdt.getYear() == ts.getYear() + 1900 &&
               zdt.getMonthValue() == ts.getMonth() + 1 &&
               zdt.getDayOfMonth() == ts.getDate() &&
               zdt.getHour() == ts.getHours() &&
               zdt.getMinute() == ts.getMinutes() &&
               zdt.getSecond() == ts.getSeconds() &&
               zdt.getNano() == ts.getNanos();
    }

    private static void print(LocalDateTime ldt, Timestamp ts) {
        ZonedDateTime zdt = ZonedDateTime.of(ldt, ZoneId.systemDefault());
        System.out.printf("ldt:ts  %d/%d, %d/%d, %d/%d, %d/%d, %d/%d, %d/%d, nano:[%d/%d]%n",
               zdt.getYear(), ts.getYear() + 1900,
               zdt.getMonthValue(), ts.getMonth() + 1,
               zdt.getDayOfMonth(), ts.getDate(),
               zdt.getHour(), ts.getHours(),
               zdt.getMinute(), ts.getMinutes(),
               zdt.getSecond(), ts.getSeconds(),
               zdt.getNano(), ts.getNanos());
    }

    private static boolean isEqual(LocalDate ld, java.sql.Date d) {
        return ld.getYear() == d.getYea


(public_key: threshold_crypto::PublicKeyShare) -> Self {
        PublicKey::BlsShare(public_key)
    }
}

impl Debug for PublicKey {
    fn fmt(&self, formatter: &mut Formatter) -> fmt::Result {
        match self {
            PublicKey::Ed25519(pub_key) => {
                write!(formatter, "Ed25519({:<8})", HexFmt(&pub_key.to_bytes()))
            }
            PublicKey::Bls(pub_key) => write!(
                formatter,
                "Bls({:<8})",
                HexFmt(&pub_key.to_bytes()[..XOR_NAME_LEN])
            ),
            PublicKey::BlsShare(pub_key) => write!(
                formatter,
                "BlsShare({:<8})",
                HexFmt(&pub_key.to_bytes()[..XOR_NAME_LEN])
            ),
        }
    }
}

impl Display for PublicKey {
    #[allow(trivial_casts)]
    fn fmt(&self, formatter: &mut Formatter) -> fmt::Result {
        (self as &Debug).fmt(formatter)
    }
}

#[derive(Clone, Eq, PartialEq, Serialize, Deserialize)]
#[allow(clippy::large_enum_variant)]
pub enum Signature {
    Ed25519(ed25519_dalek::Signature),
    Bls(threshold_crypto::Signature),
    BlsShare(threshold_crypto::SignatureShare),
}

impl From<threshold_crypto::Signature> for Signature {
    fn from(sig: threshold_crypto::Signature) -> Self {
        Signature::Bls(sig)
    }
}

impl From<ed25519_dalek::Signature> for Signature {
    fn from(sig: ed25519_dalek::Signature) -> Self {
        Signature::Ed25519(sig)
    }
}

impl From<threshold_crypto::SignatureShare> for Signature {
    fn from(sig: threshold_crypto::SignatureShare) -> Self {
        Signature::BlsShare(sig)
    }
}

#[allow(clippy::derive_hash_xor_eq)]
impl Hash for Signature {
    fn hash<H: Hasher>(&self, state: &mut H) {
        utils::serialise(&self).hash(state)
    }
}

impl Ord for Signature {
    fn cmp(&self, other: &Signature) -> Ordering {
        utils::serialise(&self).cmp(&utils::serialise(other))
    }
}

impl PartialOrd for Signature {
    fn partial_cmp(&self, other: &Signature) -> Option<Ordering> {
        Some(self.cmp(other))
    }
}

impl Debug for Signature {
    fn fmt(&self, formatter: &mut Formatter) -> fmt::Result {
        match self {
            Signature::Ed25519(_) => write!(formatter, "Ed25519 Sig(..)"),
            Signature::Bls(_) => write!(formatter, "Bls Sig(..)"),
            Signature::BlsShare(_) => write!(formatter, "BlsShare Sig(..)"),
        }
    }
}

#[cfg(test)]
mod test {
    use super::*;
    use threshold_crypto::SecretKey;

    #[test]
    fn zbase32_encode_decode_public_key() {
        use unwrap::unwrap;
        let key = PublicKey::Bls(SecretKey::random().public_key());
        assert_eq!(
            key,
            unwrap!(PublicKey::decode_from_zbase32(&key.encode_to_zbase32()))
        );
    }
}
<reponame>mbargull/rust-bio-tools
//! Tools that work on VCF and BCF files.
pub mod annotate_dgidb;
pub mod baf;
pub mod fix_iupac_alleles;
pub mod match_variants;
pub mod report;
pub mod split;
pub mod to_txt;
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
use std::fmt::Write;
/// See [`AssociateBrowserSettingsInput`](crate::input::AssociateBrowserSettingsInput)
pub mod associate_browser_settings_input {
    /// A builder for [`AssociateBrowserSettingsInput`](crate::input::AssociateBrowserSettingsInput)
    #[non


out:
	movl    _start-4:l,sp		| Restore caller's stack pointer
	rts				| Return to caller (PROM probably)

| Transfer control to a new program, passing on the same arguments that
| we (srt0.s) received when we were started.  Note that this does NOT call


 ChainTransformation<Bitmap>, Filter.OldTv {

    override val cacheKey: String
        get() = (value).hashCode().toString()

    override fun getTransformations(): List<Transformation<Bitmap>> = listOf(
        GrainFilter(0.36f),
        HazeFilter(0f to 0.3f),
        MonochromeFilter(1f to Color(0xFF1C3A00).toModel())
    )

}/*
 * ImageToolbox is an image editor for android
 * Copyright (c) 2024 T8RIN (Malik Mukhametzyanov)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * You should have received a copy of the Apache License
 * along with this program.  If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
 */

package com.t8rin.imagetoolbox.feature.filters.data.model

import android.graphics.Bitmap
import com.t8rin.imagetoolbox.core.domain.model.IntegerSize
import com.t8rin.imagetoolbox.core.domain.transformation.Transformation
import com.t8rin.imagetoolbox.core.filters.domain.model.Filter
import com.t8rin.imagetoolbox.core.ksp.annotations.FilterInject
import com.t8rin.trickle.DitheringType
import com.t8rin.trickle.Trickle

@FilterInject
internal class BayerFourDitheringFilter(
    override val value: Pair<Float, Boolean> = 200f to false,
) : Transformation<Bitmap>, Filter.BayerFourDithering {

    override val cacheKey: String
        get() = value.hashCode().toString()

    override suspend fun transform(
        input: Bitmap,
        size: IntegerSize
    ): Bitmap = Trickle.dithering(
        input = input,
        type = DitheringType.BayerFour,
        threshold = value.first.toInt(),
        isGrayScale = value.second
    )

}/*
 * ImageToolbox is an image editor for android
 * Copyright (c) 2024 T8RIN (Malik Mukhametzyanov)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * You should have received a copy of the Apache License
 * along with this program.  If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
 */

@file:Suppress("unused")

package com.t8rin.imagetoolbox.feature.filters.data.utils.pixelation

class PixelationLayer private constructor(val shape: Shape) {
    var enableDominantColor = false
    var resolution = 16f
    var size: Float? = null
    var alpha = 1f
    var offsetX = 0f
    var offsetY = 0f

    class Builder(shape: Shape) {
        private val layer: PixelationLayer = PixelationLayer(shape)

        fun setResolution(resolution: Float): Builder {
            layer.resolution = resolution
            return this
        }

        fun setSize(size: Float): Builder {
            layer.size = size
            return this
        }

        fun setOffset(size: Float): Builder {
            layer.offsetX = size


"private_key");
    config.setAlipayPublicKey("alipay_public_key");
    config.setEncryptKey("encrypt_key");
    defaultClient.setAlipayConfig(config);

    AlipayOpenPublicAccountApi apiInstance = new AlipayOpenPublicAccountApi(defaultClient);
    AlipayOpenPublicAccountResetModel alipayOpenPublicAccountResetModel = new AlipayOpenPublicAccountResetModel(); // AlipayOpenPublicAccountResetModel |
    try {
      AlipayOpenPublicAccountResetResponseModel result = apiInstance.reset(alipayOpenPublicAccountResetModel);
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println("Exception when calling AlipayOpenPublicAccountApi#reset");
      System.err.println("Status code: " + e.getCode());
      System.err.println("Reason: " + e.getResponseBody());
      System.err.println("Response headers: " + e.getResponseHeaders());
      e.printStackTrace();
    }
  }
}
```

### Parameters

| Name | Type | Description  | Notes |
|------------- | ------------- | ------------- | -------------|
| **alipayOpenPublicAccountResetModel** | **AlipayOpenPublicAccountResetModel**|  | [optional] |

### Return type

**AlipayOpenPublicAccountResetResponseModel**

### Authorization

No authorization required

### HTTP request headers

 - **Content-Type**: application/json
 - **Accept**: application/json

### HTTP response details
| Status code | Description | Response headers |
|-------------|-------------|------------------|
| **200** | common response |  -  |
| **0** | 请求失败 |  -  |

---
order: 0
title:
  zh-CN: 规则验证，使用默认错误提示
  en-US: Type
---

## zh-CN

## en-US
````jsx

手机号校验：

校验结果：{{phoneValidResult.isPhoneValid.tips}}

  <v-input id="phone" type="text" placeholder="请输入手机号码" :rules="phoneValidRule" :valid-result="phoneValidResult"></v-input>

非空校验

校验结果：{{notNullValidResult.requiredValid.tips}}

  <v-input type="text" placeholder="请输入内容" :rules="notNullValidRule" :valid-result="notNullValidResult" :tips="notNullTips"></v-input>

数字校验

校验结果：{{isNumberValidResult.isNumberValid.tips}}

  <v-input type="text" placeholder="请输入数字" :rules="isNumberValidRule" :valid-result="isNumberValidResult"></v-input>

固话校验

校验结果：{{isTelValidResult.isTelValid.tips}}

  <v-input type="text" placeholder="请输入固话号码" :rules="isTelValidRule" :valid-result="isTelValidResult"></v-input>

邮箱校验

校验结果：{{isEmailValidResult.isEmailValid.tips}}

  <v-input type="text" placeholder="请输入邮箱" :rules="isEmailValidRule" :valid-result="isEmailValidResult"></v-input>

最小长度校验

校验结果：{{minlengthValidResult.minlengthValid.tips}}

  <v


:'Crete Round',serif;font-weight:normal;line-height:21px;color:#333;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:42px}h1{font-size:41.25px}h2{font-size:33.75px}h3{font-size:26.25px}h4{font-size:18.75px}h5{font-size:15px}h6{font-size:12.75px}h1 small{font-size:26.25px}h2 small{font-size:18.75px}h3 small{font-size:15px}h4 small{font-size:15px}.page-header{padding-bottom:9.5px;margin:21px 0 31.5px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10.5px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:21px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}dl{margin-bottom:21px}dt,dd{line-height:21px}dt{font-weight:bold}dd{margin-left:10.5px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:21px 0;border:0;border-top:1px solid #999;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 21px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:18.75px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:21px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:21px;font-style:normal;line-height:21px}code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:13px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:21px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-bor


    0.50   0.50    -      -     0.50   0.50   vfnmsubpd	%xmm0, (%rax), %xmm2, %xmm3
# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -     vfnmsubpd	%ymm0, %ymm1, %ymm2, %ymm3
# CHECK-NEXT:  -      -     0.50   0.50    -      -     0.50   0.50   vfnmsubpd	(%rax), %ymm1, %ymm2, %ymm3
# CHECK-NEXT:  -      -     0.50   0.50    -      -     0.50   0.50   vfnmsubpd	%ymm0, (%rax), %ymm2, %ymm3
# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -     vfnmsubps	%xmm0, %xmm1, %xmm2, %xmm3
# CHECK-NEXT:  -      -     0.50   0.50    -      -     0.50   0.50   vfnmsubps	(%rax), %xmm1, %xmm2, %xmm3
# CHECK-NEXT:  -      -     0.50   0.50    -      -     0.50   0.50   vfnmsubps	%xmm0, (%rax), %xmm2, %xmm3
# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -     vfnmsubps	%ymm0, %ymm1, %ymm2, %ymm3
# CHECK-NEXT:  -      -     0.50   0.50    -      -     0.50   0.50   vfnmsubps	(%rax), %ymm1, %ymm2, %ymm3
# CHECK-NEXT:  -      -     0.50   0.50    -      -     0.50   0.50   vfnmsubps	%ymm0, (%rax), %ymm2, %ymm3
# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -     vfnmsubsd	%xmm0, %xmm1, %xmm2, %xmm3
# CHECK-NEXT:  -      -     0.50   0.50    -      -     0.50   0.50   vfnmsubsd	(%rax), %xmm1, %xmm2, %xmm3
# CHECK-NEXT:  -      -     0.50   0.50    -      -     0.50   0.50   vfnmsubsd	%xmm0, (%rax), %xmm2, %xmm3
# CHECK-NEXT:  -      -     0.50   0.50    -      -      -      -     vfnmsubss	%xmm0, %xmm1, %xmm2, %xmm3
# CHECK-NEXT:  -      -     0.50   0.50    -      -     0.50   0.50   vfnmsubss	(%rax), %xmm1, %xmm2, %xmm3
# CHECK-NEXT:  -      -     0.50   0.50    -      -     0.50   0.50   vfnmsubss	%xmm0, (%rax), %xmm2, %xmm3


/* SPDX-License-Identifier: GPL-2.0-only */

#include <acpi/acpi_device.h>
#include <acpi/acpigen.h>
#include <console/console.h>
#include <device/device.h>
#include <stdio.h>

#include "chip.h"

static const char *i2c_gpiomux_mux_acpi_name(const struct device *dev)
{
	static char name[ACPI_NAME_BUFFER_SIZE];

	snprintf(name, ACPI_NAME_BUFFER_SIZE, "MUX%01.1X", dev->path.generic.id);
	return name;
}

static void i2c_gpiomux_mux_fill_ssdt(const struct device *dev)
{
	const char *scope = acpi_device_scope(dev);
	const char *path = acpi_device_path(dev);
	struct drivers_i2c_gpiomux_mux_config *config = config_of(dev);
	struct acpi_dp *dsd = NULL;
	const char *compat_string = "i2c-mux-gpio";
	struct acpi_gpio_res_params param[MAX_NUM_MUX_GPIOS];
	int i;

	if (!scope || !path)
		return;

	/* Device */
	acpigen_write_scope(scope);
	acpigen_write_device(acpi_device_name(dev));
	acpigen_write_name_string("_HID", ACPI_DT_NAMESPACE_HID);
	acpigen_write_STA(acpi_device_status(dev));

	/* Resources */
	acpigen_write_name("_CRS");
	acpigen_write_resourcetemplate_header();
	for (i = 0; i < config->mux_gpio_count; i++) {
		acpi_device_write_gpio(&config->mux_gpio[i]);
		param[i].ref = path;
		param[i].index = i;
		param[i].pin = 0;
		param[i].active_low = config->mux_gpio[i].active_low;
	}
	acpigen_write_resourcetemplate_footer();

	/* DSD */
	dsd = acpi_dp_new_table("_DSD");
	acpi_dp_add_string(dsd, "compatible", compat_string);
	acpi_dp_add_gpio_array(dsd, "mux-gpios", param, config->mux_gpio_count);
	acpi_dp_write(dsd);

	acpigen_pop_len(); /* Device */
	acpigen_pop_len(); /* Scope */

	printk(BIOS_INFO, "%s: %s at %s\n", path, dev->chip_ops->name, dev_path(dev));
}

static struct device_operations i2c_gpiomux_mux_ops = {
	.read_resources		= noop_read_resources,
	.set_resources		= noop_set_resources,
	.scan_bus		= scan_static_bus,
	.acpi_name		= i2c_gpiomux_mux_acpi_name,
	.acpi_fill_ssdt		= i2c_gpiomux_mux_fill_ssdt,
};

static void i2c_gpiomux_mux_enable(struct device *dev)
{
	if (!dev)
		return;

	dev->ops = &i2c_gpiomux_mux_ops;
}

struct chip_operations drivers_i2c_gpiomux_mux_ops = {
	.name = "I2C GPIO MUX Device",
	.enable_dev = i2c_gpiomux_mux_enable
};


prim_gdsc,
	[USB30_SEC_GDSC] = &usb30_sec_gdsc,
};

static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s7_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src),
	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s5_clk_src),
};

static const struct regmap_config gcc_sm8150_regmap_config = {
	.reg_bits	= 32,
	.reg_stride	= 4,
	.val_bits	= 32,
	.max_register	= 0x9c040,
	.fast_io	= true,
};

static const struct qcom_cc_desc gcc_sm8150_desc = {
	.config = &gcc_sm8150_regmap_config,
	.clks = gcc_sm8150_clocks,
	.num_clks = ARRAY_SIZE(gcc_sm8150_clocks),
	.resets = gcc_sm8150_resets,
	.num_resets = ARRAY_SIZE(gcc_sm8150_resets),
	.gdscs = gcc_sm8150_gdscs,
	.num_gdscs = ARRAY_SIZE(gcc_sm8150_gdscs),
};

static const struct of_device_id gcc_sm8150_match_table[] = {
	{ .compatible = "qcom,gcc-sm8150" },
	{ }
};
MODULE_DEVICE_TABLE(of, gcc_sm8150_match_table);

static int gcc_sm8150_probe(struct platform_device *pdev)
{
	struct regmap *regmap;
	int ret;

	regmap = qcom_cc_map(pdev, &gcc_sm8150_desc);
	if (IS_ERR(regmap))
		return PTR_ERR(regmap);

	/* Disable the GPLL0 active input to NPU and GPU via MISC registers */
	regmap_update_bits(regmap, 0x4d110, 0x3, 0x3);
	regmap_update_bits(regmap, 0x71028, 0x3, 0x3);

	ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,
				       ARRAY_SIZE(gcc_dfs_clocks));
	if (ret)
		dev_err_probe(&pdev->dev, ret, "Failed to register with DFS!\n");

	return qcom_cc_really_probe(&pdev->dev, &gcc_sm8150_desc, regmap);
}

static struct platform_driver gcc_sm8150_driver = {
	.probe		= gcc_sm8150_probe,
	.driver		= {
		.name	= "gcc-sm8150",
		.of_match_table = gcc_sm8150_match_table,
	},
};

static int __init gcc_sm8150_init(void)
{
	return platform_driver_register(&gcc_sm8150_driver);
}
subsys_initcall(gcc_sm8150_init);

static void __exit gcc_sm8150_exit(void)
{
	platform_driver_unregister(&gcc_sm8150_driver);
}
module_exit(gcc_sm8150_exit);

MODULE_DESCRIPTION("QTI GCC SM8150 Driver");
MODULE_LICENSE("GPL v2");


// This file was automatically generated and may be regenerated at any
// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name
// or type changes.
namespace Machete.HL7Schema.V26.Maps
{
    using V26;

    /// <summary>
    /// ADT_A17 (MessageMap) -
    /// </summary>
    public class ADT_A17Map :
        HL7V26LayoutMap<ADT_A17>
    {
        public ADT_A17Map()
        {
            Segment(x => x.MSH, 0, x => x.Required = true);
            Segment(x => x.SFT, 1);
            Segment(x => x.UAC, 2);
            Segment(x => x.EV


.104 0.0963,-0.06 0.36905,-0.07 6.66259,5.072 -1.74365,4.966 -0.19968,0.146 -1.50474,0.827 -1.79892,-0.683 -0.0178,-0.09 -0.21572,-0.223 -0.49029,-0.233 -0.0784,0 -0.41184,0.224 -0.3851,0.442 -0.53843,0.819 -1.04476,-2.152 0.30665,0.117 -1.31219,-3.077 0.11232,-1.011 0.17829,-0.171"},"21085":{"name":"Grayson, KY","path":"m 693.19227,313.97114 0.53843,-0.819 0.3851,-0.442 0.41184,-0.224 0.0784,0 0.49029,0.233 0.21572,0.223 0.0178,0.09 1.79892,0.683 1.50474,-0.827 0.19968,-0.146 1.8631,0.709 0.49029,-0.194 0.31379,-0.175 0.34587,0.03 1.14995,1.374 0.28883,1.134 0.0431,2.18823 -1.75463,0.65577 -5.58573,0.914 -0.52352,-1.05418 -2.2328,-0.40582 -1.40278,-3.80486 1.36358,-0.13314"},"21061":{"name":"Edmonson, KY","path":"m 695.98781,319.36914 5.58573,-0.914 2.30487,2.47891 -0.0709,1.20909 -0.0218,2.4644 -0.75911,0.0886 -1.43958,-0.30892 -0.49745,-0.61614 -1.19381,0.65369 -2.29978,-1.70163 -1.60815,-3.354"},"21227":{"name":"Warren, KY","path":"m 697.59596,322.72314 2.29978,1.70163 1.19381,-0.65369 0.49745,0.61614 1.43958,0.30892 -0.65966,3.03 -0.57587,0.107 -1.04654,1.212 -0.54556,0.868 -1.79892,1.895 0.0214,-0.722 -3.37319,-0.192 -0.6347,-1.166 -1.40669,-2.58 0.62757,-4.01 -0.14011,-0.43259 1.59866,0.0389 0.62612,-0.28523 0.6556,0.59888 1.22127,-0.335"},"21031":{"name":"Butler, KY","path":"m 693.23149,317.90914 2.2328,0.40582 0.52352,1.05418 1.60815,3.354 -1.22127,0.335 -0.6556,-0.59888 -0.62612,0.28523 -1.59866,-0.0389 0.14011,0.43259 -0.62757,4.01 -4.99738,-1.132 0.44215,-3.373 1.3425,-2.027 -0.21871,-0.87635 0.64203,-0.22728 0.28927,0.49236 0.44449,0.0973 2.28029,-2.193"},"21141":{"name":"Logan, KY","path":"m 688.00947,326.01614 4.99738,1.132 1.40669,2.58 -1.80594,1.80852 -0.42978,3.85748 -5.40745,0.649 -0.7702,-9.651 2.0093,-0.376"},"21219":{"name":"Todd, KY","path":"m 682.2294,326.49714 3.77077


户信息/统计/画像接口
    - [x] 实现更新用户信息/设置接口
- [ ] **用户头像组件 (`components/user-avatar/`) - 完善**:
    - [ ] 支持不同尺寸，处理加载失败

## 阶段七：测试、优化与发布 (贯穿始终，发布前集中处理)

- [ ] **AI 相关测试**:
    - [ ] 测试不同 Prompt 下 AI 的回复质量和角色扮演一致性
    - [ ] 测试情绪分析准确率
    - [ ] 测试 Embedding 生成和兴趣分析效果
    - [ ] 测试 API 调用失败和异常处理
    - [x] 测试 ECharts 组件在各页面的正常工作
    - [x] 测试情绪分析界面在不同情绪数据下的显示效果
    - [x] 测试角色选择页面的滚动、分类和操作功能
    - [x] 测试图片服务在各种情况下的工作状态
    - [x] 测试角色创建页面的导航栏和提示词预览功能
- [ ] **功能测试**: 端到端测试所有核心流程
- [ ] **UI/UX 测试**: 真机测试，不同设备兼容性，交互流畅度
- [ ] **性能优化**:
    - [ ] 优化 AI API 调用耗时（前端 Loading, 后端超时设置, Stream 模式）
    - [ ] 优化数据库查询 (索引)
    - [ ] 优化 Embedding 分析等后台任务效率
    - [x] 实现聊天记录本地缓存，减少网络请求，提高加载速度
- [ ] **安全加固**: 确认 API Key 安全，数据库权限设置合理
- [ ] **代码规范与清理**: ESLint 检查，删除无用代码
- [x] **代码修复**:
    - [x] 修复角色选择页面的滚动、分类和操作功能问题
    - [x] 修复图片服务中的 `getApp()` 调用问题
    - [x] 优化角色创建页面的提示词预览样式
    - [x] 使角色创建页面和角色选择页面的导航栏与微信胶囊按钮齐平
    - [x] 重构用户资料页面，采用 Material Design 3 设计规范
    - [x] 修复角色选择页面角色显示不全和分


/*
    SDL - Simple DirectMedia Layer
    Copyright (C) 1997-2009 Sam Lantinga

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

    Sam Lantinga
    slouken@libsdl.org
*/
#include "SDL_config.h"

#ifndef _SDL_x11mouse_h
#define _SDL_x11mouse_h

#if SDL_VIDEO_DRIVER_X11_XINPUT
typedef struct X11_MouseData
{
    Display *display;
    XDevice *device;
    int motion;
    int button_pressed;
    int button_released;
    int proximity_in;
    int proximity_out;
    int num_xevents;
    XEventClass xevents[5];
} X11_MouseData;
#endif

extern void X11_InitMouse(_THIS);
extern void X11_QuitMouse(_THIS);

#endif /* _SDL_x11mouse_h */

/* vi: set ts=4 sw=4 expandtab: */


; Expected output, and explanation:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Written by Joel Yliluoma - http://iki.fi/bisqwit/

.segment "LIB"
.include "shell.inc"
.include "colors.inc"
.include "sync_apu.s"
.segment "CODE"

zp_res	irq_temp
zp_res	nmi_temp
zp_res	irq_count
zp_res	nmi_count
zp_res	brk_count
zp_res	brk_issued
zp_res  brk_4015
zp_res	num_cycles_plan,2
zp_res	num_cycles_min,2
zp_res	num_cycles_max,2
zp_res	test_phase

zp_res  irq_attempt_offset
zp_res  add_temp,2
zp_res	n_repeats_seen

zp_res  flags_main_1
zp_res  flags_main_2
zp_res  flags_inside_nmi
zp_res  flags_inside_irq
zp_res  flags_inside_brk
zp_res  flags_stack_nmi
zp_res  flags_stack_irq
zp_res  flags_stack_brk
zp_res  flag_errors,2
zp_res  last_checksum,4

zp_res	temp_code_pointer
zp_res	brk_opcode

zp_res  console_save,4

.macro print_flag name,expect
	text_color2
	lda name
	and #$30
	cmp #expect
	beq :+
	text_color1
	inc flag_errors
	inc flag_errors+1
:	jsr print_hex
	text_white
.endmacro
.macro print_flags_2 hdr, name1,expect1, sep, name2,expect2, trail_f, trail_o
	.local @ok
	lda #0
	sta flag_errors+1
	my_print_str hdr
	print_flag name1,expect1
	my_print_str sep
	print_flag name2,expect2
	lda flag_errors+1
	beq @ok
	my_print_str trail_f
	lda #expect1
	jsr print_hex
	my_print_str sep
	lda #expect2
	jsr print_hex
	jmp :+
@ok:	my_print_str trail_o
:	my_print_str newline
.endmacro

.macro print_str_and_ret s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15
	print_str s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15
	rts
.endmacro
.macro my_print_str s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15
	.local @Addr
	jsr @Addr
	seg_data "RODATA",{@Addr: print_str_and_ret s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15}
.endmacro

test_failed_finish:
	; Re-enable screen
	jsr console_show
	text_white
	jmp test_failed

main:
	jsr intro

	jsr verify_basic_flag_operations
	jsr verify_apu_irq_timing
	jsr verify_brk_and_irq_coincidence

	text_white
	jsr console_show
	jsr wait_vbl
	jmp tests_passed

verify_brk_and_irq_coincidence:
	; Now that we know _exactly_ how many cycles to consume
	; to have IRQ trigger on exactly the next cycle, go and
	; try to smash th


|1:1|1:1 / 1:N / N:N|
|**패킷 교환 방식**|가상 회선 방식|데이터그램 방식|
|**수신 여부 확인**|수신여부 확인|수신여부 확인하지 않음|
|**속도**|느리다|빠르다|
|**오류 감지 및 수정**| 있음 | 없음 |
|**혼잡 제어, 흐름 제어**| 있음 | 없음 |

![image](https://velog.velcdn.com/images/jjo3ys/post/46deb451-3f79-4b37-9e94-5433d23ef91c/image.png)

## IP란

- 데이터 패킷이 네트워크를 통해 이동하고 올바른 대상에 도착할 수 있도록 데이터 패킷을 라우팅하고 주소를 지정하기 위한 프로토콜

- 송신 호스트와 수신 호스트가 패킷 교환 네트워크에서 정보를 주고받는 데 사용하는 프로토콜

- 인터넷을 통해 데이터를 주고받을 때 사용되는 프로토콜로 OSI 7계층 중 LAYTER 3에 위치하는 프로토콜

- 인터넷을 통과하는 데이터는 패킷이라고 하는 더 작은 조각으로 나눠짐

- IP 정보는 각 패킷에 첨부되며, 이 정보는 라우터가 패킷을 올바른 위치로 보내는 데 도움이 됨.

- 인터넷에 연결하는 모든 장치나 도메인에는 IP 주소가 할당되며, 패킷이 연결된 IP 주소로 전달되면 데이터가 필요한 곳에 도착.

- 패킷이 목적지에 도착하면 IP와 함께 어떤 전송 프로토콜이 사용되는지에 따라 다르게 처리됨

- 가장 일반적인 전송 프로토콜은 TCP와 UDP.

### IP 주소란
- IP 주소는 인터넷에 연결하는 장치나 도메인에 할당된 고유 식별자

- IP 통신 하기 위해 장치들 구분


) {
                return ranLevel;
            }
            ranLevel++;
        }
    }

    //Node structure
    public static class Node<T extends Comparable<? super T>> {

        T val;
        Node[] forward;

        public Node(T val, int level) {
            this.val = val;
            this.forward = new Node[level];
        }
    }

    //Test
    public static void main(String[] args) {
        SkipList<Integer> skipList = new SkipList<Integer>(60);
        skipList.add(1);
        skipList.add(3);
        skipList.add(2);
        skipList.add(4);
        skipList.add(10);
        skipList.add(100);
        skipList.add(100);
        skipList.add(99);
        for (int i = 0; i < skipList.size(); i++) {
            System.out.print(skipList.get(i) + " ");
        }
        System.out.println();

        skipList.remove(100);
        for (int i = 0; i < skipList.size(); i++) {
            System.out.print(skipList.get(i) + " ");
        }
        System.out.println();

        skipList.remove(1);
        skipList.remove(3);
        skipList.remove(2);
        skipList.remove(4);
        skipList.remove(10);
        skipList.remove(100);
        skipList.remove(100);
        for (int i = 0; i < skipList.size(); i++) {
            System.out.print(skipList.get(i) + " ");
        }
    }
}
//给定一个字符串，请你找出其中不含有重复字符的 最长子串 的长度。
//
//
//
// 示例 1:
//
//
//输入: s = "abcabcbb"
//输出: 3
//解释: 因为无重复字符的最长子串是 "abc"，所以其长度为 3。
//
//
// 示例 2:
//
//
//输入: s = "bbbbb"
//输出: 1
//解释: 因为无重复字符的最长子串是 "b"，所以其长度为 1。
//
//
// 示例 3:
//
//
//输入: s = "pwwkew"
//输出: 3
//解释: 因为无重复字符的最长子串是 "wke"，所以其长度为 3。
//     请注意，你的答案必须是 子串 的长度，"pwke" 是一个子序列，不是子串。
//
//
// 示例 4:
//
//
//输入: s = ""
//输出: 0
//
//
//
//
// 提示：
//
//
// 0 <= s.length <= 5 * 104
// s 由英文字母、数字、符号和空格组成
//
// Related Topics 哈希表 字符串 滑动窗口
// 👍 5680 👎 0

package com.jacobs.basic.leetcode.editor.cn;

public class LongestSubstringWithoutRepeatingCharacters {
    public static void main(String[] args) {
        Solution solution = new LongestSubstringWithoutRepeatingCharacters().new Solution();
        System.out.println(solution.lengthOfLongestSubstring(""));
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        int[] charMap = new int[256];

        public int lengthOfLongestSubstring(String s) {
            if (s == null || s.equals("")) {
                return 0;
            }
            // 记录最长无重复字串长度
            int maxLength = 0;
            int startI = 0;
            int endJ = 0;
            char[] charArr = s.toCharArray();
            int charLen = charArr.length;
            while (endJ < charLen) {
                int index = charArr[endJ];
                if (charMap[index] != 0) {
                    while (startI < endJ) {
                        int backIndex = charArr[startI];
                        //回退保存的�


#!/usr/bin/env python

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

import sys
sys.path.insert(0, "../../python/")
import mxnet as mx
import numpy as np
import numpy.random as rnd
import time

def check_diff_to_scalar(A, x, rank=None):
    """ assert A == x"""
    assert(np.sum(np.abs((A - x).asnumpy())) == 0), (rank, A.asnumpy(), x)

# setup
keys = ['3', '5', '7']
init_test_keys = [str(i) for i in range(200,300)]
init_test_keys_big = [str(i) for i in range(300,400)]
init_test_keys_device = [str(i) for i in range(400,500)]
init_test_keys_device_big = [str(i) for i in range(500,600)]

rate = 2
shape = (2, 3)
big_shape = (1200, 1200)        # bigger than MXNET_KVSTORE_BIGARRAY_BOUND

kv = mx.kv.create('dist_device_sync')

def init_kv():
    # init kv dns keys
    kv.init(keys, [mx.nd.ones(shape)] * len(keys))
    kv.init('99', mx.nd.ones(big_shape))
    # worker info
    my_rank = kv.rank
    nworker = kv.num_workers
    # init updater on servers
    kv.set_optimizer(mx.optimizer.create('test', rescale_grad=rate))
    return kv, my_rank, nworker

def test_sync_push_pull():
    kv, my_rank, nworker = init_kv()
    num_gpus = 2
    def check_default_keys(kv, my_rank, nworker):
        nrepeat = 3
        # checks pull after push in loop, because behavior during
        # consecutive pushes doesn't offer any guarantees
        for i in range(nrepeat):
            scale = my_rank + 1
            kv.push('3', [mx.nd.ones(shape, ctx=mx.gpu(j)) * scale for j in range(num_gpus)])
            kv.push('99', [mx.nd.ones(big_shape, ctx=mx.gpu(j)) * scale for j in range(num_gpus)])
            num = (nworker + 1) * nworker * rate * num_gpus / 2 * (i + 1) + 1
            val = mx.nd.zeros(shape)
            kv.pull('3', out=val)
            check_diff_to_scalar(val, num)
            val2 = mx.nd.zeros(big_shape)
            kv.pull('99', out=val2)
            check_diff_to_scalar(val2, num)

    check_default_keys(kv, my_rank, nworker)
    print('worker ' + str(my_rank) + ' is done')

def test_sync_init():
    def check_init(kv, cur_keys, cur_shape, device=False):
        ctx = mx.gpu(0) if device else mx.cpu()
        val = [mx.nd.zeros(cur_shape, ctx) for i in cur_keys]
        for i in range(len(cur_keys)):
            expected = i
            kv.init(cur_keys[i], [mx.nd.ones(cur_shape, ctx) * i])
            kv.pull(cur_keys[i], out=val[i])
            check_diff_to_scalar(val[i], expected)
    check_init(kv, init_test_keys, shape)
    check_init(kv, init_test_keys_big, big_shape)
    check_init(kv, init_test_keys_device, shape, device=True)
    check_init(kv, init_test_keys_device_big, big_shape, device=True)
    my_rank = kv.rank
    print('worker ' + str(my_rank) + ' is initialized')

if __name__ == "__main__":
    test_sync_init()
    test_sync_push_pull()


 2020")).toISOString(),(new Date("May 27, 2020")).toISOString(),"WEEKLY",555,"Africa/Abidjan")
            assert.equal(Math.abs(myLease.getTotalAmount() - 4836.43) < 0.01, true)
            done()
        });
      });

      describe('Test Weekly ledger iterator', function () {

        it('Should return weekly ledger iterator with correct values', function (done) {
            var expected: string[] = ["Mar 28 2020", "Apr 04 2020", "Apr 11 2020", "Apr 18 2020", "Apr 25 2020",
             "May 02 2020", "May 09 2020", "May 16 2020", "May 23 2020"]
            var myLease = new Lease((new Date("March 28, 2020")).toISOString(),(new Date("May 27, 2020")).toISOString(),"WEEKLY",555,"Africa/Abidjan")
            var myLedger = new Ledger(myLease)
            var i = 0
            for (let line of myLedger.getLedger()) {
                //console.log(line.start + " " + line.end + " " + line.amount)
                assert.equal(new Date(expected[i]).getTime(),  line.start.getTime())
                i += 1
            }

            done()
        });
      });

      describe('Test Monthly ledger iterator', function () {

        it('Should return monthly ledger iterator with correct values', function (done) {
            var expected = ["Mar 31 2020","Apr 30 2020", "May 31 2020", "Jun 30 2020", "Jul 31 2020 ", "Aug 31 2020", "Sep 30 2020",
          "Oct 31 2020", "Nov 30 2020", "Dec 31 2020", "Jan 31 2021", "Feb 28 2021", "Mar 31 2021", "Apr 30 2021", "May 31 2021"]
            var myLease = new Lease((new Date("March 31, 2020")).toISOString(),(new Date("May 27, 2021")).toISOString(),"MONTHLY",555,"Africa/Abidjan")
            var myLedger = new Ledger(myLease)
            var i = 0
            for (let line of myLedger.getLedger()) {
                //console.log(line.start + " " + line.end + " " + line.amount)
                assert.equal((new Date(expected[i])).getTime(),line.start.getTime())
                i += 1
            }

            done()
        });
      });

      describe('when the request contains a Invalid date', function () {

        it('should return a 400 bad request response', function (done) {

          var requestJson = {
            start: (new Date('October 15, 1996')).toISOString(),
            end: (new Date('October 15, 1995')).toISOString(),
            frequency: "WEEKLY",
            amount: 1200,
            timezone:"Africa/Abidjan"
          };

          request(server)
            .post('/')
            .send(requestJson)
            .expect(400, done);
        });
      });

      describe('Response test', function () {

        it('should return a 200 ok response. and correct response body', function (done) {

          var expectedResponse = [
            {
              Start: '2020-03-28T00:00:00.000Z',
              End: '2020-04-10T01:00:00.000Z',
              Amount: '1110.00'
            },
            {
              Start: '2020-04-11T01:00:00.000Z',
              End: '2020-04-11T01:00:00.000Z',
              Amount: '1110.00'
            },
            {
              Start: '2020-04-25T01:00:00.000Z',
              End: '2020-04-25T01:00:00.000Z',
              Amount: '1110.00'
            },
            {
              Start: '2020-05-09T01:00:00.000Z',
              End: '2020-05-09T01:00:00.000Z',


 { color: var(--icon-violet) }
.file-icons [data-type=invalid_link] i { color: var(--icon-red) }

/* #f00 - Adobe/Oracle */

.file-icons [aria-label$=".ai"] i,
.file-icons [aria-label$=".java"] i,
.file-icons [aria-label$=".jar"] i,
.file-icons [aria-label$=".psd"] i,
.file-icons [aria-label$=".rb"] i,
.file-icons [data-type=pdf] i
{ color: var(--icon-red) }

/* #f90 - Image/Presentation */

.file-icons [aria-label$=".html"] i,
.file-icons [aria-label$=".odg"] i,
.file-icons [aria-label$=".odp"] i,
.file-icons [aria-label$=".ppt"] i,
.file-icons [aria-label$=".pptx"] i,
.file-icons [aria-label$=".vue"] i,
.file-icons [aria-label$=".xcf"] i
{ color: var(--icon-orange) }

/* #ff0 - Various */

.file-icons [aria-label$=".css"] i,
.file-icons [aria-label$=".js"] i,
.file-icons [aria-label$=".json"] i,
.file-icons [aria-label$=".zip"] i
{ color: var(--icon-yellow) }

/* #0f0 - Spreadsheet/Google */

.file-icons [aria-label$=".apk"] i,
.file-icons [aria-label$=".dex"] i,
.file-icons [aria-label$=".go"] i,
.file-icons [aria-label$=".ods"] i,
.file-icons [aria-label$=".xls"] i,
.file-icons [aria-label$=".xlsx"] i
{ color: var(--icon-green) }

/* #00f - Document/Microsoft/Apple/Closed */

.file-icons [aria-label$=".aac"] i,
.file-icons [aria-label$=".bat"] i,
.file-icons [aria-label$=".cab"] i,
.file-icons [aria-label$=".cs"] i,
.file-icons [aria-label$=".dmg"] i,
.file-icons [aria-label$=".doc"] i,
.file-icons [aria-label$=".docx"] i,
.file-icons [aria-label$=".emf"] i,
.file-icons [aria-label$=".exe"] i,
.file-icons [aria-label$=".ico"] i,
.file-icons [aria-label$=".mp2"] i,
.file-icons [aria-label$=".mp3"] i,
.file-icons [aria-label$=".mp4"] i,
.file-icons [aria-label$=".mpg"] i,
.file-icons [aria-label$=".msi"] i,
.file-icons [aria-label$=".odt"] i,
.file-icons [aria-label$=".ps1"] i,
.file-icons [aria-label$=".rtf"] i,
.file-icons [aria-label$=".vob"] i,
.file-icons [aria-label$=".wim"] i
{ color: var(--icon-blue) }

/* #60f - Various */

.file-icons [aria-label$=".iso"] i,
.file-icons [aria-label$=".php"] i,
.file-icons [aria-label$=".rar"] i
{ color: var(--icon-violet) }

/* Overrides */

.file-icons [data-dir=true] i { color: var(--icon-blue) }
.file-icons [data-dir=true] i::before { content: 'folder' }
.file-icons [aria-selected=true] i { color: var(--item-selected) }
/*
   Animation example, for spinners
*/
.animate-spin {
  -moz-animation: spin 2s infinite linear;
  -o-animation: spin 2s infinite linear;
  -webkit-animation: spin


¿Žé¯¨"],["8c80","åŠ‡æˆŸæ’ƒæ¿€éš™æ¡å‚‘æ¬ æ±ºæ½”ç©´çµè¡€è¨£æœˆä»¶å€¹å€¦å¥å…¼åˆ¸å‰£å–§åœå …å«Œå»ºæ†²æ‡¸æ‹³æ²æ¤œæ¨©ç‰½çŠ¬çŒ®ç ”ç¡¯çµ¹çœŒè‚©è¦‹è¬™è³¢è»’é£éµé™ºé¡•é¨“é¹¸å…ƒåŽŸåŽ³å¹»å¼¦æ¸›æºçŽ„ç¾çµƒèˆ·è¨€è«ºé™ä¹Žå€‹å¤å‘¼å›ºå§‘å¤å·±åº«å¼§æˆ¸æ•…æž¯æ¹–ç‹ç³Šè¢´è‚¡èƒ¡è°è™Žèª‡è·¨éˆ·é›‡é¡§é¼“äº”äº’ä¼åˆå‘‰å¾å¨¯å¾Œå¾¡æ‚Ÿæ¢§æªŽç‘šç¢èªžèª¤è·é†ä¹žé¯‰äº¤ä½¼ä¾¯å€™å€–å…‰å…¬åŠŸåŠ¹å‹¾åŽšå£å‘"],["8d40","åŽå–‰å‘åž¢å¥½å”åå®å·¥å·§å··å¹¸åºƒåºšåº·å¼˜æ’æ…ŒæŠ—æ‹˜æŽ§æ”»æ˜‚æ™ƒæ›´ææ ¡æ¢—æ§‹æ±Ÿæ´ªæµ©æ¸¯æºç”²çš‡ç¡¬ç¨¿ç³ ç´…ç´˜çµžç¶±è€•è€ƒè‚¯è‚±è…”è†èˆªè’è¡Œè¡¡è¬›è²¢è³¼éƒŠé…µé‰±ç ¿é‹¼é–¤é™"],["8d80","é …é¦™é«˜é´»å‰›åŠ«å·åˆå£•æ‹·æ¿ è±ªè½Ÿéº¹å…‹åˆ»å‘Šå›½ç©€é…·éµ é»’ç„æ¼‰è…°ç”‘å¿½æƒšéª¨ç‹›è¾¼æ¤é ƒä»Šå›°å¤å¢¾å©šæ¨æ‡‡æ˜æ˜†æ ¹æ¢±æ··ç—•ç´ºè‰®é‚äº›ä½å‰å”†åµ¯å·¦å·®æŸ»æ²™ç‘³ç ‚è©éŽ–è£Ÿååº§æŒ«å‚µå‚¬å†æœ€å“‰å¡žå¦»å®°å½©æ‰æŽ¡æ ½æ³æ¸ˆç½é‡‡çŠ€ç •ç ¦ç¥æ–Žç´°èœè£è¼‰éš›å‰¤åœ¨æç½ªè²¡å†´å‚é˜ªå ºæ¦Šè‚´å’²å


dAuthors(&AuthorBlueprint{
				ID: []int{1, 2},
			})
			g.Assert(e).Equal(nil)
			g.Assert(len(authors)).Equal(2)
		})

		g.It("allows the consumer to search for authors by ID range", func() {
			authors, e := store.FindAuthors(&AuthorBlueprint{
				IDRange: []int{1, 4},
			})
			g.Assert(e).Equal(nil)
			g.Assert(len(authors)).Equal(2)
		})

		g.It("correctly serializes null/not null values into a sql.NullInt64 field", func() {
			authors, e := store.FindAuthors(&AuthorBlueprint{
				ID: []int{1337, 1338},
			})
			g.Assert(e).Equal(nil)

			g.Assert(authors[0].Name).Equal("learned author")
			g.Assert(authors[0].UniversityID.Valid).Equal(true)
			g.Assert(authors[0].UniversityID.Int64).Equal(int64(10))

			g.Assert(authors[1].Name).Equal("other author")
			g.Assert(authors[1].UniversityID.Valid).Equal(false)
		})

		g.It("allows consumer to count w/ nil blueprint", func() {
			count, e := store.CountAuthors(nil)
			g.Assert(e).Equal(nil)
			g.Assert(count).Equal(generatedAuthorCount + 1)
		})

		g.It("allows consumer to search by authors with null UniversityID", func() {
			count, e := store.CountAuthors(&AuthorBlueprint{
				UniversityID: []sql.NullInt64{
					{Valid: false},
				},
			})
			g.Assert(e).Equal(nil)
			g.Assert(count).Equal(generatedAuthorCount)
		})

		g.It("allows consumers to select individual university ids with limit", func() {
			var uniID sql.NullInt64
			uniID.Scan(10)
			_, e := store.CreateAuthors([]Author{
				{Name: "limited author 001"},
				{Name: "limited author 002", UniversityID: uniID},
				{Name: "limited author 003"},
			}...)
			results, e := store.SelectAuthorUniversityIDs(&AuthorBlueprint{
				NameLike: []string{"%limited%"},
				Limit:    1,
				Offset:   1,
			})
			g.Assert(e).Equal(nil)
			g.Assert(len(results)).Equal(1)
			g.Assert(results[0].Int64).Equal(int64(10))
			store.DeleteAuthors(&AuthorBlueprint{
				NameLike: []string{"%limited%"},
			})
		})

		g.It("allows consumers to select individual university ids (result being null)", func() {
			results, e := store.SelectAuthorUniversityIDs(&AuthorBlueprint{
				ID: []int{10},
			})
			g.Assert(e).Equal(nil)
			g.Assert(len(results)).Equal(1)
			g.Assert(results[0].Valid).Equal(false)
		})

		g.It("allows consumers to select individual university ids (result being valid)", func() {
			results, e := store.SelectAuthorUniversityIDs(&AuthorBlueprint{
				ID: []int{1337},
			})
			g.Assert(e).Equal(nil)
			g.Assert(len(results)).Equal(1)
			g.Assert(results[0].Valid).Equal(true)
			g.Assert(results[0].Int64).Equal(int64(10))
		})

		g.It("allows consumers to select individual author names with limit", func() {
			_, e := store.CreateAuthors([]Author{
				{Name: "limited name 001"},
				{Name: "limited name 002"},
				{Name: "limited name 003"},
				{Name: "limited name 004"},
			}...)
			results, e := store.SelectAuthorNames(&AuthorBlueprint{
				NameLike: []


g: 'privacy-mode');
      if (isOn) {
        var privacyModeImpl = await bind.sessionGetOption(
            sessionId: sessionId, arg: 'privacy-mode-impl-key');
        // For compatibility, version < 1.2.4, the default value is 'privacy_mode_impl_mag'.
        final initDefaultPrivacyMode = 'privacy_mode_impl_mag';
        PrivacyModeState.find(peerId).value =
            privacyModeImpl ?? initDefaultPrivacyMode;
      } else {
        PrivacyModeState.find(peerId).value = '';
      }
    } catch (e) {
      //
    }
  }

  void setViewOnly(String id, bool value) {
    if (versionCmp(_pi.version, '1.2.0') < 0) return;
    // tmp fix for https://github.com/rustdesk/rustdesk/pull/3706#issuecomment-1481242389
    // because below rx not used in mobile version, so not initialized, below code will cause crash
    // current our flutter code quality is fucking shit now. !!!!!!!!!!!!!!!!
    try {
      if (value) {
        ShowRemoteCursorState.find(id).value = value;
      } else {
        ShowRemoteCursorState.find(id).value = bind.sessionGetToggleOptionSync(
            sessionId: sessionId, arg: 'show-remote-cursor');
      }
    } catch (e) {
      //
    }
    if (_viewOnly != value) {
      _viewOnly = value;
      notifyListeners();
    }
  }
}

class ImageModel with ChangeNotifier {
  ui.Image? _image;

  ui.Image? get image => _image;

  String id = '';

  late final SessionID sessionId;

  WeakReference<FFI> parent;

  final List<Function(String)> callbacksOnFirstImage = [];

  ImageModel(this.parent) {
    sessionId = parent.target!.sessionId;
  }

  addCallbackOnFirstImage(Function(String) cb) => callbacksOnFirstImage.add(cb);

  onRgba(int display, Uint8List rgba) {
    final pid = parent.target?.id;
    img.decodeImageFromPixels(
        rgba,
        parent.target?.ffiModel.rect?.width.toInt() ?? 0,
        parent.target?.ffiModel.rect?.height.toInt() ?? 0,
        isWeb ? ui.PixelFormat.rgba8888 : ui.PixelFormat.bgra8888,
        onPixelsCopied: () {
      // Unlock the rgba memory from rust codes.
      platformFFI.nextRgba(sessionId, display);
    }).then((image) {
      if (parent.target?.id != pid) return;
      try {
        // my throw exception, because the listener maybe already dispose
        update(image);
      } catch (e) {
        debugPrint('update image: $e');
      }
    });
  }

  update(ui.Image? image) async {
    if (_image == null && image != null) {
      if (isDesktop || isWebDesktop) {
        await parent.target?.canvasModel.updateViewStyle();
        await parent.target?.canvasModel.updateScrollStyle();
      } else {
        final size = MediaQueryData.fromWindow(ui.window).size;
        final canvasWidth = size.width;
        final canvasHeight = size.height;
        final xscale = canvasWidth / image.width;
        final yscale = canvasHeight / image.height;
        parent.target?.canvasModel.scale = min(xscale, yscale);
      }
      if (parent.target != null) {
        await initializeCursorAndCanvas(parent.target!);
      }
      if (parent.target?.ffiModel.isPeerAndroid ?? false) {
        bind.sessionSetViewStyle(sessionId: sessionId, value: 'adaptive');
        parent.target?.canvasModel.updateViewStyle();
      }
    }
    _image = image;
    if (image != null) notifyListeners();
  }

  // mobile only
  // for desktop, height should minus tabbar height
  double get maxScale {
    if (_image == null) return 1.5;
    final size = MediaQueryData.fromWindow


    Index
      Help

 PREV
 NEXT

  FRAMES
 NO FRAMES

  All Classes

Hierarchy For Package br.gov.jfrj.siga.cd.servlet

Package Hierarchies:
All Packages

Class Hierarchy

java.lang.Object

javax.servlet.GenericServlet (implements java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig)

javax.servlet.http.HttpServlet (implements java.io.Serializable)

org.apache.cxf.transport.servlet.AbstractCXFServlet

org.apache.cxf.transport.servlet.CXFNonSpringServlet

br.gov.jfrj.siga.cd.servlet.CdWsServlet

br.gov.jfrj.siga.cd.servlet.CdTestesServlet

<


ableThreadLocal<HugeCursor<long[]>> keysCursor;

    private int keyMixer;
    private long assigned;
    private long mask;
    private long resizeAt;

    private static final long DEFAULT_EXPECTED_ELEMENTS = 4L;
    private static final double LOAD_FACTOR = 0.75;

    /**
     * New instance with sane defaults.
     */
    public HugeLongLongDoubleMap() {
        this(DEFAULT_EXPECTED_ELEMENTS);
    }

    /**
     * New instance with sane defaults.
     */
    public HugeLongLongDoubleMap(long expectedElements) {
        initialBuffers(expectedElements);
    }

    public synchronized void set(long key1, long key2, double value) {
        set0(1L + key1, 1L + key2, value);
    }

    public void addTo(long key1, long key2, double value) {
        addTo0(1L + key1, 1L + key2, value);
    }

    public double getOrDefault(long key1, long key2, double defaultValue) {
        return getOrDefault0(1L + key1, 1L + key2, defaultValue);
    }

    private void set0(long key1, long key2, double value) {
        assert assigned < mask + 1L;
        final long key = hashKey(key1, key2);

        long slot = findSlot(key1, key2, key & mask);
        assert slot != -1L;
        if (slot >= 0L) {
            values.set(slot, value);
            return;
        }

        slot = ~(1L + slot);
        if (assigned == resizeAt) {
            allocateThenInsertThenRehash(slot, key1, key2, value);
        } else {
            keys1.set(slot, key1);
            keys2.set(slot, key2);
            values.set(slot, value);
        }

        assigned++;
    }

    private void addTo0(long key1, long key2, double value) {
        assert assigned < mask + 1L;
        final long key = hashKey(key1, key2);

        long slot = findSlot(key1, key2, key & mask);
        assert slot != -1L;
        if (slot >= 0L) {
            values.addTo(slot, value);
            return;
        }

        slot = ~(1L + slot);
        if (assigned == resizeAt) {
            allocateThenInsertThenRehash(slot, key1, key2, value);
        } else {
            keys1.set(slot, key1);
            keys2.set(slot, key2);
            values.set(slot, value);
        }

        assigned++;
    }

    private double getOrDefault0(long key1, long key2, double defaultValue) {
        final long key = hashKey(key1, key2);

        long slot = findSlot(key1, key2, key & mask);
        if (slot >= 0L) {
            return values.get(slot);
        }

        return defaultValue;
    }

    private long findSlot(
            long key1,
            long key2,
            long start) {
        HugeLongArray keys1 = this.keys1;
        HugeLongArray keys2 = this.keys2;
        HugeCursor<long[]> cursor = this.keysCursor.get();
        long slot = findSlot(key1, key2, start, keys1.size(), keys1, keys2, cursor);
        if (slot == -1L) {
            slot = findSlot(key1, key2, 0L, start, keys1, keys2, cursor);
        }
        return slot;
    }

    private long findSlot(
            long key1,
            long key2,
            long start,
            long end,
            HugeLongArray keys1,
            HugeLongArray keys2,
            HugeCursor<long[]> cursor) {

        long slot = start;
        int blockPos, blockEnd;
        long[] keysBlock;
        long existing;
        keys1.initCursor(cursor, start, end);
        while (cursor.next()) {
            keysBlock = cursor.array;
            blockPos = cursor.offset;
            blockEnd = cursor.limit;
            while (blockPos < blockEnd)