, 0, 0.12);
            box-shadow: 2px 0 3px rgba(0, 0, 0, 0.12); }

.next-table[dir="rtl"] .next-table-lock-left.shadow {
  -webkit-box-shadow: -2px 0 3px rgba(0, 0, 0, 0.12);
          box-shadow: -2px 0 3px rgba(0, 0, 0, 0.12); }

.next-table[dir="rtl"] .next-table-sort .next-icon {
  right: 0;
  left: auto; }

.next-table[dir="rtl"] .next-table-sort .next-icon-ascending {
  right: 4px;
  left: auto; }

.next-table[dir="rtl"] .next-table-filter {
  margin-right: 5px;
  margin-left: 0; }

.next-table-fixed[dir="rtl"] table tr td:first-child,
.next-table-fixed[dir="rtl"] table tr th:first-child {
  border-left-width: 1px;
  border-left-width: var(--table-normal-border-width, 1px);
  border-right-width: 0; }

.next-table-fixed[dir="rtl"] .next-table-header tr th:last-child {
  border-left-width: 1px;
  border-left-width: var(--table-normal-border-width, 1px); }

.next-table-fixed[dir="rtl"] .next-table-body tr td:last-child {
  border-left-width: 1px;
  border-left-width: var(--table-normal-border-width, 1px); }

.next-timeline *,
.next-timeline *:before,
.next-timeline *:after {
  -webkit-box-sizing: border-box;
          box-sizing: border-box; }

.next-timeline, .next-timeline:before, .next-timeline:after {
  -webkit-box-sizing: border-box;
          box-sizing: border-box; }

.next-timeline ul {
  margin: 0;
  padding: 0;
  list-style: none; }

.next-timeline p {
  margin: 0; }

.next-timeline-hide {
  display: none; }

.next-timeline[dir='rtl'] .next-timeline-item {
  /* 时间轴左边存在内容的情况 */ }
  .next-timeline[dir='rtl'] .next-timeline-item-folder {
    padding-left: 0;
    padding-right: 28px;
    padding-right: calc(var(--timeline-item-content-margin-left, 12px) + var(--timeline-item-node-size, 16px)); }
  .next-timeline[dir='rtl'] .next-timeline-item-dot-tail {
    left: auto;
    right: 8px;
    right: calc(var(--timeline-item-node-size, 16px)/2);
    border-left: none;
    border-right: 1px dotted #E5E5E5;
    border-right: var(--timeline-item-tail-size, 1px) dotted var(--timeline-item-tail-color, #E5E5E5); }
  .next-timeline[dir='rtl'] .next-timeline-item-has-left-content.next-timeline-item-folder {
    margin-left: 0;
    margin-right: 80px;
    margin-right: var(--timeline-item-left-content-width, 80px); }

.next-timeline[dir='rtl'] .next-timeline-item-done {
  position: relative; }
  .next-timeline[dir='rtl'] .next-timeline-item-done .next-timeline-item-timeline {
    position: absolute;
    left: auto;
    right: 0;
    top: 0;
    height: 100%; }
    .next-timeline[dir='


ernion().also {
            set(it.x, it.y, it.z, it.w)
        }
    }
}

operator fun Int.times(quaternion: Quaternion) = quaternion * this
operator fun Long.times(quaternion: Quaternion) = quaternion * this
operator fun Float.times(quaternion: Quaternion) = quaternion * this
operator fun Double.times(quaternion: Quaternion) = quaternion * this
operator fun Vector3.times(quaternion: Quaternion) = quaternion.xformInv(this)
// THIS FILE IS GENERATED! DO NOT EDIT IT MANUALLY!
@file:Suppress("PackageDirectoryMismatch", "unused", "FunctionName", "RedundantModalityModifier",
    "UNCHECKED_CAST", "JoinDeclarationAndAssignment", "USELESS_CAST",
    "RemoveRedundantQualifierName", "NOTHING_TO_INLINE", "NON_FINAL_MEMBER_IN_OBJECT",
    "RedundantVisibilityModifier", "RedundantUnitReturnType", "MemberVisibilityCanBePrivate")

package godot.core

import kotlin.Int
import kotlin.Long
import kotlin.Suppress
import kotlin.jvm.JvmField

public infix fun Long.or(other: MouseButtonMask): Long = this.or(other.flag)

public infix fun Long.xor(other: MouseButtonMask): Long = this.xor(other.flag)

public infix fun Long.and(other: MouseButtonMask): Long = this.and(other.flag)

public class MouseButtonMask(
  public val flag: Long,
) {
  public infix fun or(other: MouseButtonMask): MouseButtonMask =
      MouseButtonMask(flag.or(other.flag))

  public infix fun or(other: Long): MouseButtonMask = MouseButtonMask(flag.or(other))

  public infix fun xor(other: MouseButtonMask): MouseButtonMask =
      MouseButtonMask(flag.xor(other.flag))

  public infix fun xor(other: Long): MouseButtonMask = MouseButtonMask(flag.xor(other))

  public infix fun and(other: MouseButtonMask): MouseButtonMask =
      MouseButtonMask(flag.and(other.flag))

  public infix fun and(other: Long): MouseButtonMask = MouseButtonMask(flag.and(other))

  public fun unaryPlus(): MouseButtonMask = MouseButtonMask(flag.unaryPlus())

  public fun unaryMinus(): MouseButtonMask = MouseButtonMask(flag.unaryMinus())

  public fun inv(): MouseButtonMask = MouseButtonMask(flag.inv())

  public infix fun shl(bits: Int): MouseButtonMask = MouseButtonMask(flag shl bits)

  public infix fun shr(bits: Int): MouseButtonMask = MouseButtonMask(flag shr bits)

  public infix fun ushr(bits: Int): MouseButtonMask = MouseButtonMask(flag ushr bits)

  public companion object {
    /**
     * Primary mouse button mask, usually for the left button.
     */
    @JvmField
    public val LEFT: MouseButtonMask = MouseButtonMask(1)

    /**
     * Secondary mouse button mask, usually for the right button.
     */
    @JvmField
    public val RIGHT: MouseButtonMask = MouseButtonMask(2)

    /**
     * Middle mouse button mask.
     */
    @JvmField
    public val MIDDLE: MouseButtonMask = MouseButtonMask(4)

    /**
     * Extra mouse button 1 mask.
     */
    @JvmField
    public val MB_XBUT


음 페이지의 지도 링크도 삭제되도록 수정 되었습니다.
3. 브라우저의 history stack 이슈로 인한 검색 방식을 변경 할 수 있는 옵션이 추가되었습니다. 이용하실 분께서는 Q&A로 별도 문의 주세요.

### 2018. 2. 26
1. 서제스트(추천 검색어)의 사용유무를 제어하는 useSuggest 옵션이 추가 되었습니다. (기본값 : true)
2. IE 6,7,8 또는 호환성 보기 모드에서의 resize 이벤트 관련된 버그가 수정되었습니다.

### 2017. 12. 12
1. android 5.1 에서 스크롤이 정상적으로 되지 않던 버그가 수정 되었습니다.

### 2017. 11. 23
1. 서비스 접근성 향상을 위한 관련 문구 및 HTML Tag가 변경되었습니다.

### 2017.09.21
1. **한글과 영문주소 동시에 보기 기능 추가**

    검색 결과의 한글 주소와, 영문 주소를 토글이 아닌 동시에 볼 수 있는 기능이 추가되었습니다. 기본적으로 해당 기능은 비활성화 상태이며 생성자 옵션으로 활성화 시킬 수 있습니다. (속성명: alwaysShowEngAddr)
    해당 기능 활성화시 "영문보기" 버튼은 자동으로 감춰지니 이용에 참고하시기 바랍니다.

### 2017.05.17
1. **서제스트 옵션 추가**

    검색어 입력시 작동하는 suggest 목록의 최대 노출 갯수를 조절할 수 있는 생성자 옵션을 추가하였습니다. (속성명: maxSuggestItems)
    해당 기능은 우편번호서비스의 높이를 작게 설정하여 이용하시는 경우, 스마트폰에서 스크롤 문제가 발생 할 수 있는데 높이에 맞춰서 suggest의 최대 갯수를 설정하여 이용하시


this._mp3UseMpegAudio,l=this._dtsBaseInited&&void 0===this._audioNextDts,h=!1;if(i&&0!==i.length&&(1!==i.length||t)){var f=0,p=null,d=0;s?(f=0,d=r.length):(f=8,d=8+r.length);var v=null;if(i.length>1&&(d-=(v=i.pop()).length),null!=this._audioStashedLastSample){var m=this._audioStashedLastSample;this._audioStashedLastSample=null,i.unshift(m),d+=m.length}null!=v&&(this._audioStashedLastSample=v);var y=i[0].dts-this._dtsBase;if(this._audioNextDts)o=y-this._audioNextDts;else if(this._audioSegmentInfoList.isEmpty())o=0,this._fillSilentAfterSeek&&!this._videoSegmentInfoList.isEmpty()&&"mp3"!==this._audioMeta.originalCodec&&(h=!0);else{var g=this._audioSegmentInfoList.getLastSampleBefore(y);if(null!=g){var b=y-(g.originalDts+g.duration);b<=3&&(b=0),o=y-(g.dts+g.duration+b)}else o=0}if(h){var _=y-o,x=this._videoSegmentInfoList.getLastSegmentBefore(y);if(null!=x&&x.beginDts<_){var w=X.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);if(w){var C=x.beginDts,M=_-x.beginDts;u.v(this.TAG,"InsertPrefixSilentAudio: dts: ".concat(C,", duration: ").concat(M)),i.unshift({unit:w,dts:C,pts:C}),d+=w.byteLength}}else h=!1}for(var z=[],O=0;O<i.length;O++){var k=i[O],T=k.unit,E=k.dts-this._dtsBase,L=E-o;-1===a&&(a=L);var A=0;if(O!==i.length-1)A=i[O+1].dts-this._dtsBase-o-L;else if(null!=v)A=v.dts-this._dtsBase-o-L;else A=z.length>=1?z[z.length-1].duration:Math.floor(c);var P=!1,H=null;if(A>1.5*c&&"mp3"!==this._audioMeta.codec&&this._fillAudioTimestampGap&&!S.safari){P=!0;var I=Math.abs(A-c),V=Math.ceil(I/c),R=L+c;u.w(this.TAG,"Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.\n"+"dts: ".concat(L+A," ms, expected: ").concat(L+Math.round(c)," ms, ")+"delta: ".concat(Math.round(I)," ms, generate: ").concat(V," frames"));var D=X.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);null==D&&(u.w(this.TAG,"Unable to generate silent frame for "+"".concat(this._audioMeta.originalCodec," with ").concat(this._audioMeta.channelCount," channels, repeat last frame")),D=T),H=[];for(var N=0;N<V;N++){var j=Math.round(R);if(H.length>0){var F=H[H.length-1];F.durati


    }
  }

  override fun onDetachRenderer(renderer: Any?): Boolean {
    if (renderer == null) return false
    require(renderer is Fragment)
    val view = renderer.view
    if (view != null) {
      val parent = view.parent
      if (parent != null && parent is ViewGroup) {
        parent.removeAllViews()
      }
    }

    if (!renderer.isAdded) return true
    if (fragmentManager.isStateSaved) return true
    fragmentManager.commitNow { remove(renderer) }
    return true
  }

  @Suppress("MemberVisibilityCanBePrivate")
  internal fun scheduleAttachFragment(
    container: ViewGroup,
    fragment: Fragment,
  ) {
    fragmentManager.registerFragmentLifecycleCallbacks(
      object : FragmentLifecycleCallbacks() {
        override fun onFragmentViewCreated(
          fm: FragmentManager,
          f: Fragment,
          v: View,
          savedInstanceState: Bundle?,
        ) {
          if (f === fragment) {
            fm.unregisterFragmentLifecycleCallbacks(this)
            addViewToContainer(v, container)
          }
        }
      },
      false,
    )
  }

  internal fun addViewToContainer(
    view: View,
    container: ViewGroup,
  ) {
    if (container.childCount > 1) {
      throw IllegalStateException("Container must not have more than one children.")
    }

    if (view.parent === container) return
    if (container.childCount > 0) container.removeAllViews()

    (view.parent as? ViewGroup)?.removeView(view)

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

package kohii.v1.experiments.internal

import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView
import kohii.v1.core.AbstractPlayable
import kohii.v1.core.Bridge
import kohii.v1.core.Master
import kohii.v1.media.Media

internal class UnofficialYouTubePlayerPlayable(
  master: Master,
  media: Media,
  config: Config,
  bridge: Bridge<YouTubePlayerView>,
) : AbstractPlayable<YouTubePlayerView>(master, media, config, bridge) {
  override var renderer: Any?
    get() = bridge.renderer
    set(value) {
      require(value is YouTubePlayerView?)
      bridge.renderer = value
    }

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

package kohii.v1.sample.tiktok

import android.content.Context
import kohii.v1.exoplayer.ExoPlayerConfig
import kohii.v1.exoplayer.Kohii
import kohii.v1.exoplayer.createKohii
import kohii.v1.utils.Capsule

/**
 * Using [Capsule] to contain a singleton of my custom


.with_theme(Theme::NewYork)\n            .with_property(\"variant\", \"primary\")\n            .with_property(\"size\", \"large\");\n            \n        assert_eq!(tester.component_name, \"button\");\n        assert_eq!(tester.framework, Framework::Leptos);\n        assert_eq!(tester.theme, Theme::NewYork);\n        assert_eq!(tester.properties.get(\"variant\"), Some(\u0026\"primary\".to_string()));\n    }\n    \n    #[test]\n    fn theme_variant_assessment() {\n        let assessor = ComponentQualityAssessor::new(\"button\")\n            .add_theme_variant(Theme::Default)\n            .add_theme_variant(Theme::NewYork);\n        \n        assert_eq!(assessor.testers.len(), 2);\n        assert_eq!(assessor.testers[0].theme, Theme::Default);\n        assert_eq!(assessor.testers[1].theme, Theme::NewYork);\n        \n        // Test that all testers use Leptos framework\n        for tester in \u0026assessor.testers {\n            assert_eq!(tester.framework, Framework::Leptos);\n        }\n    }\n    \n    #[test]\n    fn component_rendering_test() {\n        let tester = ComponentTester::new(\"button\", Framework::Leptos);\n        let result = tester.test_rendering();\n        \n        assert!(result.passed);\n        assert!(result.message.contains(\"button component renders successfully\"));\n        assert_eq!(result.details.get(\"framework\"), Some(\u0026\"Leptos\".to_string()));\n    }\n}","traces":[{"line":44,"address":[],"length":0,"stats":{"Line":0}},{"line":46,"address":[],"length":0,"stats":{"Line":0}},{"line":49,"address":[],"length":0,"stats":{"Line":0}},{"line":50,"address":[],"length":0,"stats":{"Line":0}},{"line":59,"address":[],"length":0,"stats":{"Line":0}},{"line":60,"address":[],"length":0,"stats":{"Line":0}},{"line":61,"address":[],"length":0,"stats":{"Line":0}},{"line":194,"address":[],"length":0,"stats":{"Line":0}},{"line":196,"address":[],"length":0,"stats":{"Line":0}},{"line":197,"address":[],"length":0,"stats":{"Line":0}},{"line":198,"address":[],"length":0,"stats":{"Line":0}},{"line":209,"address":[],"length":0,"stats":{"Line":0}},{"line":210,"address":[],"length":0,"stats":{"Line":0}},{"line":211,"address":[],"length":0,"stats":{"Line":0}},{"line":315,"address":[],"length":0,"stats":{"Line":0}},{"line":316,"address":[],"length":0,"stats":{"Line":0}},{"line":317,"address":[],"length":0,"stats":{"Line":0}}],"covered":0,"coverable":17},{"path":["/","Users","peterhanssens","consulting","Leptos","leptos-shadcn-ui","packages","test-utils","src","dom_testing.rs"],"content":"//! DOM testing utilities for Leptos ShadCN UI components\n//! \n//! This module provides basic DOM rendering test capabilities to complement\n//! the unit tests. It uses wasm-bindgen-test for browser-based testing.\n\nuse leptos::prelude::*;\nuse leptos::mount::mount_to;\nuse wasm_bindgen_test::*;\nuse web_sys::wasm_bindgen::JsCast;\n\nwasm_bindgen_test_configure!(run_in_browser);\n\n/// A test harness for rendering Leptos components in a test environment\npub struct ComponentTestHarness {\n    mount_point: String,\n}\n\nimpl ComponentTestHarness {\n    /// Create a new test harness with a unique mount point\n    pub fn new() -\u003e Self {\n        let mount_id = format!(\"test-mount-{}\", uu


$+`/Cb$+`$-a.7q$-a$.b/Cb$.b$.s.7q$.s$.z/Cb$.z$0T.7q$0T$0s/Cb$0s$1Q.7q$1Q$1R/Cb$1R$1S/Cb$1S$1^.7q$1^$2[/Cb$2[$2v.7q$2v$3l/Cb$3l$4g.7q$4g$4j/Cb$4j$4t.7q$4t$5j/Cb$5j$7y.7q$7y$7}/Cb$7}$8O.7q$8O$8S/Cb$8S$8V.7q$8V$8W/Cb$8W$8X/Cb$8X$8b.7q$8b$<j/Cb$<j$=|.7q$=|$DO/Cb$DO$DQ.7q$DQ$DW/Cb$DW$DY.7q$DY$EQ/Cb$EQ$ES.7q$ES$EY/Cb$EY$E[.7q$E[$Ed/Cb$Ed$Ee.7q$Ee$Ef/Cb$Ef$Eg.7q$Eg$Eh/Cb$Eh$Ei.7q$Ei$Ej/Cb$Ej$Ek.7q$Ek$F[/Cb$F[$F^.7q$F^$Ge/Cb$Ge$Gf.7q$Gf$Gm/Cb$Gm$Gn.7q$Gn$Go/Cb$Go$Gr.7q$Gr$Gu/Cb$Gu$Gv.7q$Gv$G}/Cb$G}$HQ.7q$HQ$HU/Cb$HU$HW.7q$HW$H^/Cb$H^$Hb.7q$Hb$Ho/Cb$Ho$Ht.7q$Ht$Hw/Cb$Hw$Hx.7q$Hx$IP/Cb$IP$Ki.7q$Ki$Kj/Cb$Kj$Kw.7q$Kw$Kx/Cb$Kx$LY.7q$LY$Lg/Cb$Lg$Np.7q$Np$Nq/Cb$Nq$Nu.7q$Nu$Nv/Cb$Nv$Nx.7q$Nx% S/Cb% S% T.7q% T% U/Cb% U% X.7q% X% ^/Cb% ^% d.7q% d% e/Cb% e% f.7q% f% g/Cb% g% h.7q% h% i/Cb% i% j.7q% j% n/Cb% n% o.7q% o% z/Cb% z% |.7q% |%!Q/Cb%!Q%!V.7q%!V%![/Cb%![%!`.7q%!`%!a/Cb%!a%#g.7q%#g%#h/Cb%#h%#i/Cb%#i&/x.7q&/x&0y/Cb&0y&0z.7q&0z&1{/Cb&1{&1|.7q&1|&4w/Cb&4w&4}.7q&4}&5R/Cb&5R&5U.7q&5U&5V/Cb&5V&5W/Cb&5W&5d.7q&5d&6[/Cb&6[&6].7q&6]&6^/Cb&6^&6c.7q&6c&6d/Cb&6d&6f.7q&6f&7p/Cb&7p&7w.7q&7w&7x/Cb&7x&8Y.7q&8Y&8q/Cb


csrw tdata1, t1
    j _debugger_end

_debugger_trigger_disabled_in_debug:
    // setup address to trigger on
	la   a1, _debugger_trig_point_dis
    // Set trig enable to 0
	csrw tdata2,a1
	li   t1, 0<<2
	csrw tdata1,t1
	li   t1, 2<<28 | 1<<27 | 1<<12 | 1<<6 | 0 <<2
	csrr t2,tdata1
	bne  t1,t2,_debugger_fail

    // Clear glb_expect_debug_entry
    // If we trig, we'll reenter debug and
    // test will fail due to 0 flag
    la a1, glb_expect_debug_entry
    li t1, 0
    sw t1, 0(a1)
_debugger_trig_point_dis:
    // Should _not_trig here
    nop
    // Clear trigger
    li t1, 0<<2
    csrw tdata1, t1
    j _debugger_end
_debugger_wfi_test:
    la a1, glb_debug_status
    csrr t2,dcsr
    // ebreakm is set by previous test
    li t1, 4<<28 | 3<<6 | 3<<0 | 1<<15
    bne t1, t2, _debugger_fail

    // If the following wfi is not converted
    // to a nop, test will hang
    wfi
    j  _debugger_end

_debugger_en


#region License
/*
Copyright © 2014-2025 European Support Limited

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.
*/
#endregion

using Amdocs.Ginger.Common;
using Amdocs.Ginger.Common.Drivers.CoreDrivers.Web;
using GingerCore;
using GingerCore.Drivers;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Windows;
using System.Windows.Controls;

namespace Ginger.Drivers.DriversConfigsEditPages
{
    /// <summary>
    /// Interaction logic for SeleniumDriverEditPage.xaml
    /// </summary>
    public partial class SeleniumRemoteWebDriverEditPage : Page
    {

        public SeleniumRemoteWebDriverEditPage(GingerCore.Agent mAgent)
        {
            InitializeComponent();

            if (mAgent.DriverConfiguration == null)
            {
                mAgent.DriverConfiguration = [];
            }

            DriverConfigParam GridHostDCP = mAgent.GetOrCreateParam(SeleniumDriver.RemoteGridHubParam, "http://127.0.0.1:4444");
            GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(GridHostTextBox, TextBox.TextProperty, GridHostDCP, "Value");

            DriverConfigParam BrowserNameDCP = mAgent.GetOrCreateParam(SeleniumDriver.RemoteBrowserNameParam, "firefox");
            GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(BrowserNameComboBox, ComboBox.SelectedValueProperty, BrowserNameDCP, "Value");

            DriverConfigParam PlatformDCP = mAgent.GetOrCreateParam(SeleniumDriver.RemotePlatformParam);
            GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(PlatformComboBox, ComboBox.SelectedValueProperty, PlatformDCP, "Value");

            DriverConfigParam VersionDCP = mAgent.GetOrCreateParam(SeleniumDriver.RemoteVersionParam);
            GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(VersionTextBox, TextBox.TextProperty, VersionDCP, "Value");
        }

        //Loading Browser Combobox Data
        private void BrowserComboBox_Loaded(object sender, RoutedEventArgs e)
        {
            List<string> data = ["chrome", "firefox", "internet explorer", "safari", "MicrosoftEdge"];

            var comboBox = sender as ComboBox;
            comboBox.ItemsSource = data;
        }

        //Loading Platform Combobox Data
        private void PlatformComboBox_Loaded(object sender, RoutedEventArgs e)
        {
            List<string> data = ["WINDOWS", "XP", "VISTA", "MAC"];

            var comboBox = sender as ComboBox;
            comboBox.ItemsSource = data;
        }

        private void ShowconsoleButton_Click(object sender, RoutedEventArgs e)
        {
            browser.Navigate(GridHostTextBox.Text + "/grid/console");
        }

        private void GetHubFilesButton_Click(object sender, RoutedEventArgs e)
        {
            //Getting the Ginger execution path
            string? assemblyLocation = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
            string userFolder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
            string sourcePath = Path.Combine(assemblyLocation, "StaticDrivers");
            string targetPath = userFolder + "\\Temp\\GingerTemp";

            string jarFileName = "selenium-server-standalone.jar";

            string sourceFile = System.IO.Path.Combine(sourcePath, jarFileName);
            string destFile = System.IO.Path.Combine(targetPath, jarFileName);
            //Create the folder
            if (!System.IO.Directory.Exists(targetPath))
            {
                System.IO.


 16) |
      sBox[(x >> 24) & 255] << 24;
}

@pragma('vm:prefer-inline')
@pragma('dart2js:tryInline')
int _invMcol(int x) {
  final f2 = ((x & _m2) << 1) ^ (((x & _m1) >> 7) * _m3);
  final f4 = ((f2 & _m2) << 1) ^ (((f2 & _m1) >> 7) * _m3);
  final f8 = ((f4 & _m2) << 1) ^ (((f4 & _m1) >> 7) * _m3);
  final f9 = x ^ f8;

  final s1 = ((f2 ^ f9) >> 8) | ((((f2 ^ f9) & _mask8) << 24) & _mask32);
  final s2 = ((f4 ^ f9) >> 16) | ((((f4 ^ f9) & _mask16) << 16) & _mask32);
  final s3 = (f9 >> 24) | (((f9 & _mask32) << 8) & _mask32);

  return f2 ^ f4 ^ f8 ^ s1 ^ s2 ^ s3;
}

/// AES implementation (some of the code is from Bouncycastle)
class AesEngine {
  /// Expand an encryption or decryption key.
  static List<Uint32List> generateWorkingKey(
    List<int> key,
    bool forEncryption,
  ) {
    final w = List.generate(rounds + 1, (_) => Uint32List(4));
    var t0 = key.readUint32(0);
    var t1 = key.readUint32(4);
    var t2 = key.readUint32(8);
    var t3 = key.readUint32(12);
    var t4 = key.readUint32(16);
    var t5 = key.readUint32(20);
    var t6 = key.readUint32(24);
    var t7 = key.readUint32(28);

    w[0][0] = t0;
    w[0][1] = t1;
    w[0][2] = t2;
    w[0][3] = t3;

    w[1][0] = t4;
    w[1][1] = t5;
    w[1][2] = t6;
    w[1][3] = t7;

    int u, rcon = 1;

    for (var i = 2; i < 14; i += 2) {
      u = _subWord((t7 >> 8) | (((t7 & _mask8) << 24) & _mask32)) ^ rcon;
      rcon <<= 1;
      t0 ^= u;
      w[i][0] = t0;
      t1 ^= t0;
      w[i][1] = t1;
      t2 ^= t1;
      w[i][2] = t2;
      t3 ^= t2;
      w[i][3] = t3;
      u = _subWord(t3);
      t4 ^= u;
      w[i + 1][0] = t4;
      t5 ^= t4;
      w[i + 1][1] = t5;
      t6 ^= t5;
      w[i + 1][2] = t6;
      t7 ^= t6;
      w[i + 1][3] = t7;
    }

    u = _subWord((t7 >> 8) | (((t7 & _mask8) << 24) & _mask32)) ^ rcon;
    t0 ^= u;
    w[14][0] = t0;
    t1 ^= t0;
    w[14][1] = t1;
    t2 ^= t1;
    w[14][2] = t2;
    t3 ^= t2;
    w[14][3] = t3;

    if (!forEncryption) {
      for (var j = 1; j < rounds; j++) {
        for (var i = 0; i < 4; i++) {
          w[j][i] = _invMcol(w[j][i]);
        }
      }
    }

    return w;
  }

  /// Encrypt a single block with the [workingKey].
  static void encryptBlock(
    List<List<int>> workingKey,
    Uint8Lis


local CorePackages = game:GetService("CorePackages")
local Roact = require(CorePackages.Roact)
local RoactRodux = require(CorePackages.RoactRodux)

local Components = script.Parent.Parent.Parent.Components
local ServerStatsChart = require(Components.ServerStats.ServerStatsChart)
local UtilAndTab = require(Components.UtilAndTab)

local Actions = script.Parent.Parent.Parent.Actions
local ServerStatsUpdateSearchFilter = require(Actions.ServerStatsUpdateSearchFilter)

local Constants = require(script.Parent.Parent.Parent.Constants)
local PADDING = Constants.GeneralFormatting.MainRowPadding

local MainViewServerStats = Roact.Component:extend("MainViewServerStats")

function MainViewServerStats:init()
	self.onUtilTabHeightChanged = function(utilTabHeight)
		self:setState({
			utilTabHeight = utilTabHeight
		})
	end

	self.onSearchTermChanged = function(newSearchTerm)
		self.props.dispatchServerStatsUpdateSearchFilter(newSearchTerm, {})
	end

	self.utilRef = Roact.createRef()

	self.state = {
		utilTabHeight = 0
	}
end

function MainViewServerStats:didMount()
	local utilSize = self.utilRef.current.Size
	self:setState({
		utilTabHeight = utilSize.Y.Offset
	})
end

function MainViewServerStats:didUpdate()
	local utilSize = self.utilRef.current.Size
	if utilSize.Y.Offset ~= self.state.utilTabHeight then
		self:setState({
			utilTabHeight = utilSize.Y.Offset
		})
	end
end

function MainViewServerStats:render()
	lo


value': [{'n': '全部类型', 'v': ''}, {'n': '喜剧', 'v': '喜剧'}, {'n': '爱情', 'v': '爱情'}, {'n': '动作', 'v': '动作'}, {'n': '科幻', 'v': '科幻'}, {'n': '动画', 'v': '动画'}, {'n': '悬疑', 'v': '悬疑'}, {'n': '犯罪', 'v': '犯罪'}, {'n': '惊悚', 'v': '惊悚'}, {'n': '冒险', 'v': '冒险'}, {'n': '音乐', 'v': '音乐'}, {'n': '历史', 'v': '历史'}, {'n': '奇幻', 'v': '奇幻'}, {'n': '恐怖', 'v': '恐怖'}, {'n': '战争', 'v': '战争'}, {'n': '传记', 'v': '传记'}, {'n': '歌舞', 'v': '歌舞'}, {'n': '武侠', 'v': '武侠'}, {'n': '情色', 'v': '情色'}, {'n': '灾难', 'v': '灾难'}, {'n': '西部', 'v': '西部'}, {'n': '纪录片', 'v': '纪录片'}, {'n': '短片', 'v': '短片'}]}, {'key': '地区', 'name': '地区', 'value': [{'n': '全部地区', 'v': ''}, {'n': '华语', 'v': '华语'}, {'n': '欧美', 'v': '欧美'}, {'n': '韩国', 'v': '韩国'}, {'n': '日本', 'v': '日本'}, {'n': '中国大陆', 'v': '中国大陆'}, {'n': '美国', 'v': '美国'}, {'n': '中国香港', 'v': '中国香港'}, {'n': '中国台湾', 'v': '中国台湾'}, {'n': '英国', 'v': '英国'}, {'n': '法国', 'v': '法国'}, {'n': '德国', 'v': '德国'}, {'n': '意大利', 'v': '意大利'}, {'n': '西班牙', 'v': '西班牙'}, {'n': '印度', 'v': '印度'}, {'n': '泰国', 'v': '泰国'}, {'n': '俄罗斯', 'v': '俄罗斯'}, {'n': '加拿大', 'v': '加拿大'}, {'n': '澳大利亚', 'v': '澳大利亚'}, {'n': '爱尔兰', 'v': '爱尔兰'}, {'n': '瑞典', 'v': '瑞典'}, {'n': '巴西', 'v': '巴西'}, {'n': '丹麦', 'v': '丹麦'}]}, {'key': 'sort', 'name': '排序', 'value': [{'n': '近期热度', 'v': 'T'}, {'n': '首映时间', 'v': 'R'}, {'n': '高分优先', 'v': 'S'}]}, {'key': '年代', 'name': '年代', 'value': [{'n': '全部年代', 'v': ''}, {'n': '2023', 'v': '2023'}, {'n': '2022', 'v': '2022'}, {'n': '2021', 'v': '2021'}, {'n': '2020', 'v': '2020'}, {'n':


using System.Collections;
using TMPro;
using UnityEngine;

[RequireComponent(typeof(RubyTextMeshPro))]
public class SampleRubyTMP : MonoBehaviour
{
    public float span = 3f;

    private readonly string[] strArray =
    {
        "<ruby=いち>壱</ruby>",
        "<ruby=に>弐</ruby>",
        "<ruby=さん>参</ruby>",
        "<ruby=し>肆</ruby>",
        "<ruby=ご>伍</ruby>",
        "<ruby=ろく>禄</ruby>",
        "<ruby=しち>漆</ruby>",
        "<ruby=はち>捌</ruby>",
        "<ruby=きゅう>玖</ruby>",
        "<ruby=じゅう>拾</ruby>"
    };

    private RubyTextMeshPro rubyTextMeshPro;

    private int strIndex;

    // Start is called before the firs


Plugin
import com.cognifide.gradle.common.CommonExtension
import com.cognifide.gradle.common.common
import com.cognifide.gradle.common.tasks.configureApply
import org.gradle.api.Action
import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.plugins.JavaPluginExtension
import org.gradle.api.tasks.bundling.Jar
import org.gradle.api.tasks.compile.JavaCompile
import org.gradle.api.tasks.testing.Test

class BundlePlugin : CommonDefaultPlugin() {

    override fun Project.configureProject() {
        setupDependentPlugins()
        setupJavaDefaults()
        setupTasks()
        setupTestTask()
    }

    private fun Project.setupDependentPlugins() {
        if (plugins.hasPlugin(PackagePlugin::class.java)) {
            throw AemException("Bundle plugin '$ID' must be applied before package plugin '${PackagePlugin.ID}'!")
        }

        plugins.apply(JavaPlugin::class.java)
        plugins.apply(CommonPlugin::class.java)
    }

    private fun Project.setupJavaDefaults() {
        val support by lazy { extensions.getByType(CommonExtension::class.java).javaSupport }

        with(extensions.getByType(JavaPluginExtension::class.java)) {
            sourceCompatibility = support.compatibilityVersion.get()
            targetCompatibility = support.compatibilityVersion.get()
        }

        tasks {
            typed<JavaCompile> {
                javaCompiler.set(support.compiler)
                options.apply {
                    encoding = "UTF-8"
                    compilerArgs = compilerArgs + "-Xlint:deprecation"
                    isIncremental = true
                }
            }
            typed<Test> {
                javaLauncher.set(support.launcher)
            }
        }
    }

    private fun Project.setupTasks() {
        tasks {
            val jar = named<Jar>(JavaPlugin.JAR_TASK_NAME) {
                val bundle = BundleJar(this).also { aem.bundleJars[this] = it }
                bundle.applyDefaults()
                doLast(object : Action<Task> { // https://docs.gradle.org/7.4.1/userguide/validation_problems.html#implementation_unknown
                    override fun execute(task: Task) {
                        bundle.runBndTool()
                    }
                })
            }.apply {
                afterEvaluate { configureApply { aem.bundleJars[this]?.applyEvaluated() } }
            }
            register<BundleInstall>(BundleInstall.NAME) {
                dependsOn(jar)
            }
            register<BundleUninstall>(BundleUninstall.NAME) {
                dependsOn(jar)
            }
            typed<Bundle> {
                files(jar)
            }
        }
    }

    /**
     * @see <https://github.com/Cognifide/gradle-aem-plugin/issues/95>
     */
    private fun Project.setupTestTask() = afterEvaluate {
        tasks {
            named<Test>(JavaPlugin.TEST_TASK_NAME) {
                val testImplConfig = configurations.getByName(JavaPlugin.TEST_IMPLEMENTATION_CONFIGURATION_NAME)
                val compileOnlyConfig = configurations.getByName(JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME)

                testImplConfig.extendsFrom(compileOnlyConfig)

                val bundle = common.tasks.get<Jar>(JavaPlugin.JAR_TASK_NAME)
                dependsOn(bundle)
                classpath += files(bundle)
            }
        }
    }

    companion object {
        const val ID = "com.cognifide


SPEAK Silas Watch it. I came down here to reward some good behavior, but maybe you haven't deserved it. Maybe I should just shut you down for the next month, for all the trouble you're giving me.",

    "BRANCH 2 Tom sciroom_fuckyou|sciroom_tongue|\
    |\"Fuck you.\" | `Hold your tongue`",
  ]
}

module ScienceRoomFuckYou{
  export var name = "sciroom_fuckyou";
  export var lines = [
    "ENTER RIGHT Silas",
    "ENTER LEFT RobotTom",
    "SPEAK TomBlank Don't be stupid. You daydream about spitting the curses at him and clocking him in the jaw, but you know you can't. Shouldn't.",
    "SPEAK TomBlank Being powered down is `scary,` you don't really know how to describe it. You think it might be like dying.",
    "SPEAK TomBlank So you say nothing, and wait for Silas to continue.",

    "END"
  ]

}

module ScienceRoomHoldTongue{
  export var name = "sciroom_holdtongue";
  export var lines = [
    "ENTER RIGHT Silas",
    "ENTER LEFT RobotTom",
    "SPEAK TomBlank You say nothing, and wait for Silas to continue.",

    "END"
  ]

}import * as mysql from "mysql2";
import { SimpleSqlDbInterface, SimpleSqlResponseInterface, SqlValue } from "ts-simple-interfaces";

/**
 * mysql2 types don't export PromisePool type, so we have to replicate what we need here
 */
declare interface PromisePool {
  query<T extends mysql.RowDataPacket[] | mysql.OkPacket>(
    sql: string
  ): Promise<[T, mysql.FieldPacket[]]>;
  query<T extends mysql.RowDataPacket[] | mysql.OkPacket>(
    sql: string,
    values: any | any[] | { [param: string]: any }
  ): Promise<[T, mysql.FieldPacket[]]>;

  end: () => Promise<void>;
}

export class SimpleDbMysql implements SimpleSqlDbInterface {
  protected pool: PromisePool;

  constructor(protected config: mysql.PoolOptions) {
    this.pool = mysql.createPool(this.config).promise();
  }

  public async query<T = unknown>(
    q: string,
    params?: Array<SqlValue> | null
  ): Promise<SimpleSqlResponseInterface<T>> {
    const doit = async () => {
      const result = params ? await this.pool.query(q, params) : await this.pool.query(q);

      // Our main function doesn't support multiple queries, so we know it can't be an array of
      // results. That means it will either be an "OkPacket" or an array of rows.
      if (isOkPacket(result[0])) {
        return { rows: <Array<T>>[], affectedRows: result[0].affectedRows };
      } else {
        return { rows: <Array<T>>result[0] };
      }
    };

    // Try the query up to ${lim} times in the event of a deadlock
    let i = 0;
    const lim = 5;
    while (true) {
      try {
        return await doit();
      } catch (e) {
        // Throw if it's not a deadlock error or we've already tried ${lim} times
        if (e.code !== "ER_LOCK_DEADLOCK" || i === lim) {
          throw e;
        }
      }
      if (this.config.debug) {
        console.error(`SimpleDbMysql: Retrying query ${q} after deadlock.`);
      }
      i++;
    }
  }

  public close() {
    // Note: This returns a promise that we're not awaiting
    return this.pool.end();
  }
}

function isOkPacket(v: any): v is mysql.OkPacket {
  return v.hasOwnProperty("affectedRows");
}
import { isObjectLike } from "./isObjectLike.ts";
import { get


 boolean success
M.pause_timer = function(timer)
  timer = get_or_latest(timer)
  if not timer then
    return false
  else
    timer:pause()
    return true
  end
end

---Resume a timer.
---@param timer integer|pomo.Timer|?
---@return boolean success
M.resume_timer = function(timer)
  timer = get_or_latest(timer)
  if not timer then
    return false
  else
    timer:resume()
    return true
  end
end

---Hide a timer's notifiers (if they support that). If no timer ID is given, the latest timer is used.
---@param timer integer|pomo.Timer|?
---@return boolean success
M.hide_timer = function(timer)
  timer = get_or_latest(timer)
  if not timer then
    return false
  else
    timer:hide()
    return true
  end
end

---Show a timer's notifiers (if they support that). If no timer or ID is given, the latest timer is used.
---@param timer integer|pomo.Timer?
---@return boolean success
M.show_timer = function(timer)
  timer = get_or_latest(timer)
  if not timer then
    return false
  else
    timer:show()
    return true
  end
end

---Get the config.
---@return pomo.Config
M.get_config = function()
  if M._config == nil then
    error "pomo.nvim has not been setup yet, did you forget to call 'require('pomo').setup({})'?"
  else
    return M._config
  end
end

---Get a timer by its ID.
---@param timer_id integer
---@return pomo.Timer|?
M.get_timer = function(timer_id)
  return timers:get(timer_id)
end

---Get the number of currently active timers.
---@return integer
M.num_active_timers = function()
  return timers:len()
end

---Get the latest timer (last one added/started) out of all active timers.
---@return pomo.Timer|?
M.get_latest = function()
  return timers:get_latest()
end

---Get the first timer to finish next (minimum time remaining) out of all active timers.
---@return pomo.Timer|?
M.get_first_to_finish = function()
  return timers:get_first_to_finish()
end

---Get a list of all active timers.
---@return pomo.Timer[]
M.get_all_timers = function()
  return timers:get_all()
end

return M


 buckets[path[1]] {
						w.Write([]byte(objectList[path[1]]))
						return
					}
				} else if buckets[path[0]] {
					objName := strings.Join(path[1:], "/")
					if availableObjects[path[0]][objName] {
						w.Write([]byte(objects[path[0]][objName]))
						return
					}
				}
			default:
				w.WriteHeader(http.StatusNotFound)
				return
			}
		}
		w.WriteHeader(http.StatusInternalServerError)
	})
}
// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
// or more contributor license agreements. Licensed under the Elastic License;
// you may not use this file except in compliance with the Elastic License.

package fields

import (
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestFieldDict_Merge(t *testing.T) {
	a := FieldDict{
		Key{1, 2}: &Field{"field1", String},
		Key{2, 3}: &Field{"field2", Unsigned32},
	}
	b := FieldDict{
		Key{3, 4}: &Field{"field3", MacAddress},
		Key{4, 5}: &Field{"field4", Ipv4Address},
		Key{5, 6}: &Field{"field5", Ipv6Address},
	}
	c := FieldDict{
		Key{3, 4}: &Field{"field3v2", OctetArray},
		Key{0, 0}: &Field{"field0", DateTimeMicroseconds},
	}

	f := FieldDict{}

	f.Merge(a)

	assert.Len(t, f, len(a))
	if !checkContains(t, f, a) {
		t.FailNow()
	}

	f.Merge(b)
	assert.Len(t, f, len(a)+len(b))
	if !checkContains(t, f, b) {
		t.FailNow()
	}

	f.Merge(c)
	assert.Len(t, f, len(a)+len(b)+len(c)-1)
	if !checkContains(t, f, c) {
		t.FailNow()
	}
}

func checkContains(t testing.TB, dest FieldDict, contains FieldDict) bool {
	for k, v := range contains {
		if !assert.Contains(t, dest, k) || !assert.Equal(t, *v, *dest[k]) {
			return false
		}
	}
	return true
}
// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
// or more contributor license agreements. Licensed under the Elastic License;
// you may not use this file except in compliance with the Elastic License.

// go run gen.go
// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT.

package fields

var CertFields = FieldDict{
	Key{EnterpriseID: 6871, FieldID: 14}:    {Name: "initialTCPFlags", Decoder: Unsigned8},
	Key{EnterpriseID: 6871, FieldID: 15}:    {Name: "unionTCPFlags", Decoder: Unsigned8},
	Key{EnterpriseID: 6871, FieldID: 18}:    {Name: "payload", Decoder: String},
	Key{EnterpriseID: 6871, FieldID: 21}:    {Name: "reverseFlowDeltaMilliseconds", Decoder: Unsigned32},
	Key{EnterpriseID: 6871, FieldID: 33}:    {Name: "silkAppLabel", Decoder: Unsigned16},
	Key{EnterpriseID: 6871, FieldID: 35}:    {Name: "payloadEntropy", Decoder: Unsigned8},
	Key{EnterpriseID: 6871, FieldID: 36}:    {Name: "osName", Decoder: String},
	Key{EnterpriseID: 6871, FieldID: 37}:    {Name: "osVersion", Decoder: String},
	Key{EnterpriseID: 6871,


731"] = {
		additions = {
			"Added support for Blizzard's addon compartment",
		},
	},
	["r730"] = {
		fixes = {
			"Fixed an oversight that would prevent attempts for Quantum Courser from being tracked correctly",
			"Using Pick Pocket on an enemy should no longer prevent regular loot events from being counted",
		},
	},
	["r729"] = {
		additions = {
			"Added tracking for Noble Flying Carpet",
		},
	},
	["r728"] = {
		additions = {
			"Added tracking for Clayscale Hornstrider",
		},
	},
	["r727"] = {
		additions = {
			"Added tracking for several missing Winter Veil rewards",
		},
		fixes = {
			"Fixed an issue that would prevent attempts for Dreamseed Cache items from being tracked correctly",
		},
	},
	["r726"] = {
		additions = {
			"Added tracking for Box of Rattling Chains",
			"Added tracking for Sunreaver Micro-Sentry",
			"Added initial tracking for 10.2.0 collectibles",
		},
		contributors = { "cyriun" },
	},
	["r725"] = {
		additions = {
			"Added a new option for toggling the scrolling debug window to Blizzard's keybinding UI",
			"Added tracking for Arfus (Hallow's End 2023 update)",
		},
		fixes = {
			"Fixed an issue that would cause the achievement-style popup to always be shown when looting a class-specific item",
			"Duplicate attempts should no longer be added when using Engineering on Arachnoid Harvester",
			"Fixed tracking for The Horseman's Reins (Hallow's End 2023 update)",
		},
		contributors = { "Alexander Stavitsky (astavitsky)" },
	},
	["r724"] = {
		additions = {
			"Added tracking for Emmah (Disgusting Vat Fishing, in Zskera Vaults)",
			"Added a new scrolling message frame for inspecting cached debug messages (via `/rarity dump)`",
		},
		fixes = {
			"Fixed an issue that could cause pets that have already been obtained to not be detected as such",
		},
		contributors = { "cyriun" },
	},
	["r723"] = {
		additions = {
			"Added tracking for Darkmoon Rabbit",
		},
		fixes = {
			"Fixed an issue that prevented items requiring world events (e.g., DMF) to be active from being displayed",
		},
	},
	["r722"] = {
		additions = {
			"Added tracking for collectibles obtainable in the Zskera Vaults (Forbidden Reach)",
		},
		changes = {
			"The estimated luckiness percentage is now being displayed alongside the attempts count for all items",
		},
		fixes = {
			"Fixed an issue that would incorrectly add duplicate attempts for bosses with both kill statistics and NPC loot",
			"Rolled back a recent change that caused NPC loot to not be registered when using Rarity with fast-loot addons",
		},
		contributors = { "cyriun", "Rubio9" },
	},
	["r721"] = {
		fixes = {
			"Fixed an issue that would incorrectly add attempts to faction-specific Time Rift mounts for the opposing faction",
			"Fixed an issue that would break tracking of container items after the mail box was opened",
		},
		contributors = { "Rubio9" },
	},
	["r720"] = {
		additions = {
			"Added tracking for most of the missing Dragonflight collectibles",
			"Added an experimental button that allows untracking all mounts to the Advanced settings",
			"Opening BFA Island Expedition crates should now add attempts for all relevant collectibles",
		},
		fixes = { "Fixed TomTom waypoint labels not displaying Rarity as their source" },
		contributors = { "cyriun" },
	},
	["r719"] = {
		additions = {
			"Created a slash command for toggling the progress bar (for use in macros)",
			"Added tra


�商战&明朝那些事儿&评书下载&相声戏曲&人物传记&广播剧&百家讲坛&外语读物&有声文学&儿童读物&管理营销',
    class_url:'r52&r17&r12&r13&r14&r15&r45&r81&r36&r3&r7&r16&r18&r32&r35&r41&r4&r6',
    play_parse:true,
    lazy:'',
    limit:6,
    // double:true,
    推荐:'.list-ul .list-li;.list-name&&Text;*;.module-slide-author&&Text;*',
    一级:'.book-ol&&li;h4&&Text;img&&data-original;.book-meta&&Text;a&&href',
    二级:{
    	// title:'h2&&Text;.book-cell .book-rand-a:eq(2)&&Text',
        title:'h1&&Text;.book-cell .book-rand-a:eq(0)&&a&&Text',
    	img:'.book img&&src',
    	// desc:';;;;.book-des p&&Text',
        desc:';;;.book-rand-a:eq(2)&&Text;.book-des p&&Text',
    	content:'.book-des--p&&Text',
	    tabs:'.playlist-top&&h2',
    	// lists:'js:pd=jsp.pd;let url=pd(html,".bookbutton&&a&&href");log(url);html=request(url);let v=pd(html,".booksite&&script&&Html");var document={};var VideoListJson;VideoListJson=eval(v.split("VideoListJson=")[1].split(",urlinfo")[0]);log(typeof VideoListJson);let list1=VideoListJson[0][1];LISTS=[list1];log(LISTS);',
   		// 有声小说有防盗链,我服了(上面的列表数据正常拿到了,没法播放)
   		//  lists:'#playlist:eq(#id)&&ul&&li',
    	lists:'#playlist ul li',
    },
    搜索:'*',
}/**
 * 强烈推荐静态分类。可以加快速度!!!
 * 传参 ?type=url&params=../json/采集.json
 * 传参 ?type=url&params=../json/采集静态.json
 * [{"name":"暴风资源","url":"https://bfzyapi.com","parse_url":""},{"name":"飞刀资源","url":"http://www.feidaozy.com","parse_url":""},{"name":"黑木耳资源","url":"https://www.heimuer.tv","parse_url":""}]
 */
var rule = {
    title: '采集之王[合]',
    author: '道长',
    version: '20240621 beta6',
    host: '',
    homeTid: '13', // 首页推荐。一般填写第一个资源站的想要的推荐分类的id.可以空
    homeUrl: '/api.php/provide/vod/?ac=detail&t={{rule.homeTid}}',
    detailUrl: '/api.php/provide/vod/?ac=detail&ids=fyid',
    searchUrl: '/api.php/provide/vod/?wd=**&pg=#TruePage##page=fypage',
    classUrl: '/api.php/provide/vod/',
    url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyfilter',
    filter_url: '{{fl.类型}}',
    headers: {'User-Agent': 'MOBILE_UA'},
    timeout: 5000, // class_name: '电影&电视剧&综艺&动漫',
    limit: 20,
    search_limit: 5, // 搜索限制取前5个，可以注释掉，就不限制搜索
    searchable: 1,//是否启用全局搜索,
    quickSearch: 0,//是否启用快速搜索,
    filterable: 1,//是否启用分类筛选,
    play_parse: true,
    parse_url: '', // 这个参数暂时不起作用。聚合类的每个资源应该有自己独立的解析口。单独配置在采集.json里的parse_url有效
    // params: 'http://127.0.0.1:5707/files/json/%E9%87%87%E9%9B%86.json',
    // params: 'http://127.0.0.1:5707/files/json/采集静态.json',


      MemoryStream baos = new MemoryStream();
            Document document = new Document();
            PdfWriter.GetInstance(document, baos);
            document.Open();
            document.Add(new Chunk("Hello World"));
            document.Close();

            byte[] bytes = baos.ToArray();
            String str = Encoding.UTF8.GetString(bytes, bytes.Length - 6, 6);
            Assert.AreEqual("%%EOF\n", str);
            PdfReader reader = new PdfReader(baos.ToArray());
            Assert.IsNotNull(reader.Trailer.Get(PdfName.ID));
            reader.Close();
        }

        /*
            Hexadecimal strings shall contain an even number of non-white-space characters, each in the range 0 to 9, A to F or a to f.
         */
        [Test]
        virtual public void stringObjects()
        {
            byte[] bytes = new byte[256];
            for (int i = 0; i < 256; i++)
                bytes[i] = (byte) i;
            PdfString str = new PdfString(bytes);
            MemoryStream baos = new MemoryStream();
            str.SetHexWriting(true);
            str.ToPdf(null, baos);
            String s = Encoding.UTF8.GetString(baos.ToArray());
            Assert.AreEqual(514, s.Length);
        }

        /*
            The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED character.
            The endstream keyword shall be preceded by an EOL marker.
            The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword.
            A stream object dictionary shall not contain the F, FFilter, or FDecodeParams keys.
        */
        [Test]
        virtual public void streamObjects()
        {
            MemoryStream baos = new MemoryStream();
            Document document = new Document();
            PdfWriter writer = PdfWriter.GetInstance(document, baos);
            document.Open();
            document.Add(new Chunk("Hello World"));
            PdfIndirectReference refa =
                writer.AddToBody(new PdfStream(Encoding.UTF8.GetBytes("Hello World"))).IndirectReference;
            writer.Info.Put(new PdfName("HelloWorld"), refa);
            document.Close();

            byte[] bytes = baos.ToArray();
            String str = Encoding.UTF8.GetString(bytes, 22, 44);
            Assert.AreEqual("\n<</Length 11>>stream\nHello World\nendstream\n", str);
        }

        /*
            The object number and generation number shall be separated by a single white-space character.
            The generation number and obj keyword shall be separated by a single white-space character.
            The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker.
         */
        [Test]
        virtual public void indirectObjects()
        {
            MemoryStream baos = new MemoryStream();
            Document document = new Document();
            PdfWriter writer = PdfWriter.GetInstance(document, baos);
            document.Open();
            document.Add(new Chunk("Hello World"));
            PdfIndirectReference refa = writer.AddToBody(new PdfString("Hello World")).IndirectReference;
            writer.Info.Put(new PdfName("HelloWorld"), refa);
            document.Close();

            byte[] bytes = baos.ToArray();
            String str = Encoding.UTF8.GetString(bytes, 14, 30);
            Assert.AreEqual("\n1 0 obj\n(Hello World)\nendobj\n", str);
        }
    }
}


{
    targetResult(data: any) {
        const event = new Event(KIND.TARGETS, data);
        this.dispatchEvent(event);
    }
    executeResult(data: any) {
        const event = new Event(KIND.EXECUTE, data);
        // @ts-ignore
        event.data = data;
        this.dispatchEvent(event);
    }
}

worker.onmessage = ((event: MessageEvent) => {
    if (event.data.key == KIND.EXECUTE) {
        eventInstance.executeResult(event.data)
        return event.data;
    }
    else if (event.data.key == KIND.TARGETS) {
        eventInstance.targetResult(event.data)
        return event.data;
    }
})

export function executeCode(code: string) {
    worker.postMessage({ key: KIND.EXECUTE, code: code });
}

export function targetCode(code: string) {
    worker.postMessage({ key: KIND.TARGETS, code: code });
}

export const eventInstance = new KindTargets()import {ActionWithPayload} from '../../common/actions';
import * as timeExplorerActions from '../actions/time-explorer.actions';

export interface State {
  opened: boolean;
}

const initialState: State = {
  opened: false
};

export function reducer(state = initialState, action: ActionWithPayload<any>): State {
  switch (action.type) {
    case timeExplorerActions.OPEN:
      return {
        ...state,
        opened: true
      };
    case timeExplorerActions.CLOSE:
      return {
        ...state,
        opened: false
      };
    default:
      return state;
  }
}
import { TestResult } from './TestResult';
import { Result } from './Result';

export class RevisionResult {
  revisionId: string;
  result: Result;
  testResults: TestResult[];

  constructor(revisionId: string, testResults: TestResult[]) {
    this.revisionId = revisionId;
    this.testResults = testResults;
  }

  isResultSuccessful(): boolean {
    return this.result === Result.SUCCESSFUL;
  }

  isResultFailed(): boolean {
    return this.result === Result.FAILED;
  }

  isResultUnknown(): boolean {
    return this.result === Result.UNKNOWN;
  }

  isResultPartiallyFailed(): boolean {
    return this.result === Result.PARTIALLY_FAILED;
  }
}
interface CustomElementConfig {
  selector: string;
  template: string;
  style?: string;
}

function taggedTemplateNoop(strings: TemplateStringsArray, ...keys: string[]) {
  const lastIndex = strings.length - 1;
  return strings
    .slice(0, lastIndex)
    .reduce((p, s, i) => p + s + keys[i], '')
    + strings[lastIndex];
}

export const html = taggedTemplateNoop;

export const css = taggedTemplateNoop;

export function customElement(config: CustomElementConfig): ClassDecorator {
  return (cls) => {
    if (config.selector.indexOf('-') <= 0) {
      throw new Error('Custom element names must contain at least one dash');
    }
    if (!config.template) {
      throw new Error('Custom elements must have a template');
    }
    const template = document.createElement('template');
    if (config.style) {
      config.template = `<style>${config.style}</style> ${config.template}`;
    }
    template.innerHTML = config.template;
    const nullFunction = () => { };
    const connectedCallback = cls.prototype.connectedCallback || nullFunction;
    cls.prototype.connectedCallback = function() {
      const clone = document.importNode(template.content, true);
      this.attachShadow({ mode: 'open' }).appendChild(clone);
      connectedCallback.call(this);
    };
    window.customElements.define(config.selector, cls);
  };
}
const colorPicker = () => {
 let num = Math.floor(Math.random() * 100) + 1
 if(num > 0 && num < 20) return 'green'
 if(num > 20 &&


et | Value stored
 *   -------|----------------------------
 *      0   | First managed local 'c'
 *
 * Instrumentation added below looks about like the following, with the stack
 * growing downwards and 't' and 'r' being new temporary locals:
 *
 *   // callee frameSize = 1 * sizeof<usize>()
 *   function foo(a: usize, b: usize): usize {
 *     memory.fill(__stack_pointer -= frameSize, 0, frameSize)
 *     store<usize>(__stack_pointer, c = a, 0 * sizeof<usize>())
 *     __collect()
 *     let r = b
 *     __stack_pointer += frameSize
 *     return r
 *   }
 *
 *   // caller frameSize = (numLocalSlots + 2 [by extension]) * sizeof<usize>()
 *   (
 *     r = foo(
 *       ( t = a,
 *         store<usize>(__stack_pointer, t, (numLocalSlots + 0) * sizeof<usize>()),
 *         t ),
 *       ( t = b,
 *         store<usize>(__stack_pointer, t, (numLocalSlots + 1) * sizeof<usize>()),
 *         t )
 *     ),
 *     r
 *   )
 *
 * Also note that we have to `memory.fill` the second half because the first
 * assignment to a local may happen at a later point within the function. The
 * invariant we need to maintain for a precise GC is that it only sees zeroes
 * or valid pointers, but never an invalid pointer left on the stack earlier.
 * Since most frames are small, we unroll a sequence of `store`s up to a frame
 * size of 16 bytes, and `memory.fill`, if available, beyond.
 *
 * @license Apache-2.0
 */

import {
  Pass
} from "./pass";

import {
  _BinaryenAddFunction,
  _BinaryenAddFunctionExport,
  _BinaryenCallGetNumOperands,
  _BinaryenCallGetOperandAt,
  _BinaryenCallGetTarget,
  _BinaryenCallIndirectGetNumOperands,
  _BinaryenCallIndirectGetOperandAt,
  _BinaryenCallIndirectSetOperandAt,
  _BinaryenCallSetOperandAt,
  _BinaryenExportGetKind,
  _BinaryenExportGetName,
  _BinaryenExportGetValue,
  _BinaryenExpressionGetId,
  _BinaryenExpressionGetType,
  _BinaryenFunctionGetBody,
  _BinaryenFunctionGetName,
  _BinaryenFunctionGetNumLocals,
  _BinaryenFunctionGetNumVars,
  _BinaryenFunctionGetParams,
  _BinaryenFunctionGetResults,
  _BinaryenFunctionGetVar,
  _BinaryenFunctionSetBody,
  _BinaryenGetExport,
  _BinaryenGetFunction,
  _BinaryenLocalSetGetIndex,
  _BinaryenLocalSetGetValue,
  _BinaryenLocalSetIsTee,
  _BinaryenLocalSetSetValue,
  _BinaryenRemoveExport,
  _BinaryenRemoveFunction,
  _BinaryenReturnGetValue,
  _BinaryenReturnSetValue,
  _free
} from "../glue/binaryen";

import {
  ExpressionId,
  ExpressionRef,
  FunctionRef,
  Index,
  BinaryOp,
  TypeRef,
  allocPtrArray,
  Module,
  ExternalKind,
  ExportRef,
  expandType,
  isConstZero,
} from "../module";

import {
  Compiler,
  Options
} from "../compiler";

import {
  Feature
} from "../common";

import {
  BuiltinNames
} from "../builtins";

import {
  Source
} from "../ast";

type LocalIndex = Index;
type SlotIndex = Index;
type SlotMap = Map<LocalIndex,SlotIndex>;
type TempMap = Map<TypeRef,LocalIndex>;

/** Attempts to match the `__tostack(value)` pattern. Returns `value` if a match, otherwise `0`.  */
function matchPattern(module: Module, expr: ExpressionRef): ExpressionRef {
  if (
    _BinaryenExpressionGetId(expr) == ExpressionId.Call &&
    module.readStringCached(_BinaryenCallGetTarget(expr)) == BuiltinNames.tostack
  ) {
    assert(_BinaryenCallGetNumOperands(expr) == 1);
    return _BinaryenCallGetOperandAt(expr, 0);
  }


ilist.utils.setAnimation

class CharacterAdapter(
    private val characterList: List<DetailFullDataQuery.Edge?>,
) : RecyclerView.Adapter<CharacterAdapter.CharacterViewHolder>() {
    fun setItemClickListener(listener:((DetailFullDataQuery.Edge, String, Int)->Unit)){
        listenerClick=listener
    }
    private lateinit var listenerClick:((DetailFullDataQuery.Edge,String,Int)->Unit)
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CharacterViewHolder {
        val binding =
            ItemCharacterBinding.inflate(LayoutInflater.from(parent.context), parent, false)
        return CharacterViewHolder(binding)
    }

    @SuppressLint("SetTextI18n")
    override fun onBindViewHolder(holder: CharacterViewHolder, position: Int) {
        val binding = holder.binding

        val character = characterList[position]
        setAnimation(binding.root.context, holder.binding.root)
        binding.itemCompactRelation.text = character!!.role?.name ?: ("??" + "  ")
        binding.itemCompactImage.loadImage(character.node?.image?.medium ?: IMAGE_URL)
        binding.itemCompactTitle.text = character.node?.name?.userPreferred
        holder.itemView.setOnClickListener {
            listenerClick.invoke(character,
                (character.node?.image?.medium?: IMAGE_URL),position)

        }
    }

    override fun getItemCount(): Int = characterList.size
    inner class CharacterViewHolder(val binding: ItemCharacterBinding) :
        RecyclerView.ViewHolder(binding.root) {
        init {
            itemView.setOnClickListener {

            }
        }
    }
}/*
 *  Created by Azamov X ㋡ on 11/21/23, 2:02 AM
 *  Copyright (c) 2023 . All rights reserved.
 *  Last modified 11/21/23, 2:02 AM
 *
 *
 */

package com.azamovhudstc.graphqlanilist.ui.screens.character.adapter

import android.annotation.SuppressLint
import android.app.Activity
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.azamovhudstc.graphqlanilist.data.model.ui_models.CharacterMedia
import com.azamovhudstc.graphqlanilist.databinding.ItemCharacterDetailBinding
import com.azamovhudstc.graphqlanilist.utils.SpoilerPlugin
import io.noties.markwon.Markwon
import io.noties.markwon.SoftBreakAddsNewLinePlugin

class CharacterAdapter(private val character: CharacterMedia, private val activity: Activity) :
    RecyclerView.Adapter<CharacterAdapter.GenreViewHolder>() {
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GenreViewHolder {
        val binding =
            ItemCharacterDetailBinding.inflate(LayoutInflater.from(parent.context), parent, false)
        return GenreViewHolder(binding)
    }

    @SuppressLint("SetTextI18n")
    override fun onBindViewHolder(holder: GenreViewHolder, position: Int) {
        val binding = holder.binding
        val desc =
            (if (character.age != "null") "__Age:__ " + character.age else "") +
                    (if (character.dateOfBirth.toString() != "") "\n__Birthday:__ " + character.dateOfBirth.toString() else "") +
                    (if (character.gender != "null") "\n__Gender:__ " + character.gender else "") + "\n" + character.description

        binding.characterDesc.isTextSelectable
        val markWon =
            Markwon.builder(activity).usePlugin(SoftBreakAddsNewLinePlugin.create()).usePlugin(
                SpoilerPlugin()
            ).build()
        markWon.setMarkdown(binding.characterDesc, desc)

    }

    override fun getItemCount(): Int = 1
    inner class GenreViewHolder(val binding: I


CommentModel.Comment.Reply reply, int willLoadPage) {
            //因为测试数据写死了，所以这里的逻辑也是写死的
            //在默认回复数据模型中，kid作为父级索引
            //为了扩展性，把对应的具体模型传了出来，可根据具体需求具体使用
            if (reply.getKid() == 1593699394031L) {
                load(4, 4);
            } else {
                if (willLoadPage == 2) {
                    load(5, 4);
                } else if (willLoadPage == 3) {
                    load(6, 4);
                }
            }
        }

        @Override
        public void complete() {
            //加载完成后的操作
        }

        @Override
        public void failure(String msg) {
            if (msg != null)
                Toast.makeText(DefaultUseInLocalActivity.this, msg, Toast.LENGTH_LONG).show();
        }
    }

    /**
     * 点击事件回调
     */
    class MyOnItemClickCallback implements OnItemClickCallback<DefaultCommentModel.Comment, DefaultCommentModel.Comment.Reply> {

        @Override
        public void commentItemOnClick(int position, DefaultCommentModel.Comment comment, View view) {
            isReply = true;
            cp = position;
            isChildReply = false;
            fid = comment.getFid();
            editor.setHint("回复@" + comment.getPosterName() + ":");
        }

        @Override
        public void replyItemOnClick(int c_position, int r_position, DefaultCommentModel.Comment.Reply reply, View view) {
            isReply = true;
            cp = c_position;
            rp = r_position;
            isChildReply = true;
            fid = reply.getKid();
            pid = reply.getId();
            editor.setHint("回复@" + reply.getReplierName() + ":");
        }
    }

    class MyOnScrollCallback implements OnScrollCallback {

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            isReply = false;
//            if (editor.getText().toString().length()>0){
//                editor.setText("");
//            }
//            editor.setHint("发表你的评论吧~");
        }

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {

        }

        @Override
        public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldSc


GPOS_WSZ_LIT("views with security_barrier ON"));
		}
	}
}

//---------------------------------------------------------------------------
//	@function:
//		CTranslatorQueryToDXL::GetQueryOutputCols
//
//	@doc:
//		Return the list of query output columns
//
//---------------------------------------------------------------------------
CDXLNodeArray *
CTranslatorQueryToDXL::GetQueryOutputCols() const
{
	return m_dxl_query_output_cols;
}

//---------------------------------------------------------------------------
//	@function:
//		CTranslatorQueryToDXL::GetCTEs
//
//	@doc:
//		Return the list of CTEs
//
//---------------------------------------------------------------------------
CDXLNodeArray *
CTranslatorQueryToDXL::GetCTEs() const
{
	return m_dxl_cte_producers;
}

//---------------------------------------------------------------------------
//	@function:
//		CTranslatorQueryToDXL::TranslateSelectQueryToDXL
//
//	@doc:
//		Translates a Query into a DXL tree. The function allocates memory in
//		the translator memory pool, and caller is responsible for freeing it.
//
//---------------------------------------------------------------------------
CDXLNode *
CTranslatorQueryToDXL::TranslateSelectQueryToDXL()
{
	// The parsed query contains an RTE for the view, which is maintained all the way through planned statement.
	// This entries is annotated as requiring SELECT permissions for the current user.
	// In Orca, we only keep range table entries for the base tables in the planned statement, but not for the view itself.
	// Since permissions are only checked during ExecutorStart, we lose track of the permissions required for the view and the select goes through successfully.
	// We therefore need to check permissions before we go into optimization for all RTEs, including the ones not explicitly referred in the query, e.g. views.
	CTranslatorUtils::CheckRTEPermissions(m_query->rtable);

	// RETURNING is not supported yet.
	if (m_query->returningList)
		GPOS_RAISE(gpdxl::ExmaDXL, gpdxl::ExmiQuery2DXLUnsupportedFeature,
				   GPOS_WSZ_LIT("RETURNING clause"));

	CDXLNode *child_dxlnode = NULL;
	IntToUlongMap *sort_group_attno_to_colid_mapping =
		GPOS_NEW(m_mp) IntToUlongMap(m_mp);
	IntToUlongMap *output_attno_to_colid_mapping =
		GPOS_NEW(m_mp) IntToUlongMap(m_mp);

	// construct CTEAnchor operators for the CTEs defined at the top level
	CDXLNode *dxl_cte_anchor_top = NULL;
	CDXLNode *dxl_cte_anchor_bottom = NULL;
	ConstructCTEAnchors(m_dxl_cte_producers, &dxl_cte_anchor_top,
						&dxl_cte_anchor_bottom);
	GPOS_ASSERT_IMP(
		m_dxl_cte_producers == NULL || 0 < m_dxl_cte_producers->Size(),
		NULL != dxl_cte_anchor_top && NULL != dxl_cte_anchor_bottom);

	GPOS_ASSERT_IMP(NULL != m_query->setOperations,
					0 == gpdb::ListLength(m_query->windowClause));
	if (NULL != m_query->setOperations)
	{
		List *target_list = m_query->targetList;
		// translate set operations
		child_dxlnode = TranslateSetOpToDXL(m_query->setOperations, target_list,
											output_attno_t


dget.success h2 {
  color: #2C7439;
  border-bottom-color: #3B934B;
}
.widget.success:hover {
  color: #DEFFE5;
}
.widget.success .additional-btn a.additional-icon {
  color: #3B934B;
}
.widget.success .additional-btn a:hover.additional-icon {
  color: #2C7439;
}
.widget.success .text-box h3 {
  color: #215F2E;
}
.widget.success .progress-bar-success {
  background-color: #215F2E;
}
.widget.success i.success {
  color: #215F2E;
}
.widget.danger {
  background: #D9534F;
  color: #fff;
}
.widget.danger h2 {
  color: #791C1A;
  border-bottom-color: #791C1A;
}
.widget.danger:hover {
  color: #fff;
}
.widget.danger .additional-btn a.additional-icon {
  color: #791C1A;
}
.widget.danger .additional-btn a:hover.additional-icon {
  color: #791C1A;
}
.widget.danger .text-box h3 {
  color: #791C1A;
}
.widget.danger .progress-bar-danger {
  background-color: #791C1A;
}
.widget.danger i.danger {
  color: #791C1A;
}
.widget.info {
  background: #4393D8;
  color: #fff;
}
.widget.info h2 {
  color: #15558B;
  border-bottom-color: #15558B;
}
.widget.info:hover {
  color: #DEFFE5;
}
.widget.info .additional-btn a.additional-icon {
  color: #15558B;
}
.widget.info .additional-btn a:hover.additional-icon {
  color: #15558B;
}
.widget.info .text-box h3 {
  color: #15558B;
}
.widget.info .progress-bar-info {
  background-color: #15558B;
}
.widget.info i.info {
  color: #15558B;
}
.widget.warning {
  background: #F7CB17;
  color: #fff;
}
.widget.warning h2 {
  color: #9D5D03;
  border-bottom-color: #9D5D03;
}
.widget.warning:hover {
  color: #DEFFE5;
}
.widget.warning .additional-btn a.additional-icon {
  color: #9D5D03;
}
.widget.warning .additional-btn a:hover.additional-icon {
  color: #9D5D03;
}
.widget.warning .text-box h3 {
  color: #9D5D03;
}
.widget.warning .progress-bar-warning {
  background-color: #9D5D03;
}
.widget .progress-bar-semi-transparent {
  background-color: rgba(255,255,255,0.4);
}
.widget.warning i.warning {
  color: #9D5D03;
}
.widget .additional {
  padding: 0 15px;
  background: #fff;
  color: #909090;
  margin: 15px -15px -15px -15px;
}
.widget .additional .list-box-info {
  margin: 0 -15px;
}
.widget .additional .list-box-info ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
.widget .additional .list-box-info ul li {
  background: #fff;
  padding: 15px 20px;
  color: #909090;
  border-bottom: 1px solid #ddd;
}
.widget .additional .list-box-info ul li span.label {
  float: right;
  font-size: 13px;
}
.widget .additional .list-


lPhoto infos:(NSArray<NSDictionary *> *)infos;
- (void)imagePickerControllerDidCancel:(TZImagePickerController *)picker __attribute__((deprecated("Use -tz_imagePickerControllerDidCancel:.")));
- (void)tz_imagePickerControllerDidCancel:(TZImagePickerController *)picker;

// If user picking a video, this callback will be called.
// If system version > iOS8,asset is kind of PHAsset class, else is ALAsset class.
// 如果用户选择了一个视频，下面的handle会被执行
// 如果系统版本大于iOS8，asset是PHAsset类的对象，否则是ALAsset类的对象
- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingVideo:(UIImage *)coverImage sourceAssets:(id)asset;

// If user picking a gif image, this callback will be called.
// 如果用户选择了一个gif图片，下面的handle会被执行
- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingGifImage:(UIImage *)animatedImage sourceAssets:(id)asset;
@end

@interface TZAlbumPickerController : UIViewController
@property (nonatomic, assign) NSInteger columnNumber;
@end

@interface UIImage (MyBundle)

+ (UIImage *)imageNamedFromMyBundle:(NSString *)name;

@end


rror = true)]
        internal static extern IntPtr WTSOpenServer([MarshalAs(UnmanagedType.LPStr)] String pServerName);

        [DllImport("wtsapi32.dll", SetLastError = true)]
        internal static extern Int32 WTSEnumerateSessionsEx(
            IntPtr hServer,
            [MarshalAs(UnmanagedType.U4)] ref Int32 pLevel,
            [MarshalAs(UnmanagedType.U4)] Int32 Filter,
            ref IntPtr ppSessionInfo,
            [MarshalAs(UnmanagedType.U4)] ref Int32 pCount);

        [DllImport("wtsapi32.dll")]
        internal static extern void WTSFreeMemory(IntPtr pMemory);
    }
}


mb-chops-with-saffron-vegetables-and-red-bell-pepper-sauce-105548.json)
 * [Grilled Steak And Bell Pepper Salad](../../index/g/grilled-steak-and-bell-pepper-salad-4310.json)
 * [Grilled Sweet Potatoes Onion And Bell Pepper With Thyme Vinaigrette](../../index/g/grilled-sweet-potatoes-onion-and-bell-pepper-with-thyme-vinaigrette-232386.json)
 * [Grilled Tomato Bell Pepper Gazpacho](../../index/g/grilled-tomato-bell-pepper-gazpacho-239064.json)
 * [Grilled Zucchini And Bell Pepper Couscous](../../index/g/grilled-zucchini-and-bell-pepper-couscous-15138.json)
 * [Grilled Zucchini And Bell Pepper Fattoush](../../index/g/grilled-zucchini-and-bell-pepper-fattoush-238777.json)
 * [Grits With Shrimp And Roasted Red Bell Pepper](../../index/g/grits-with-shrimp-and-roasted-red-bell-pepper-107072.json)
 * [Halibut And Clams With Bell Peppers And Saffron](../../index/h/halibut-and-clams-with-bell-peppers-and-saffron-5356.json)
 * [Halibut With Red Bell Pepper And Olive Relish](../../index/h/halibut-with-red-bell-pepper-and-olive-relish-107698.json)
 * [Ham And Bell Pepper Frittata](../../index/h/ham-and-bell-pepper-frittata-106626.json)
 * [Herbed Crepes With Ricotta Green Bell Pepper And Spring Tomato Sauce](../../index/h/herbed-crepes-with-ricotta-green-bell-pepper-and-spring-tomato-sauce-11763.json)
 * [Hungarian Style Beef With Bell Peppers And Caraway](../../index/h/hungarian-style-beef-with-bell-peppers-and-caraway-233145.json)
 * [Italian Sausage And Bell Pepper Paella](../../index/i/italian-sausage-and-bell-pepper-paella-13649.json)
 * [Jalapeno Corn Muffins With Red Bell Pepper](../../index/j/jalapeno-corn-muffins-with-red-bell-pepper-101966.json)
 * [Kasha With Zucchini And Red Bell Pepper](../../index/k/kasha-with-zucchini-and-red-bell-pepper-13571.json)
 * [Lentil Salad With Carrots Yellow Tomatoes And Bell Peppers](../../index/l/lentil-salad-with-carrots-yellow-tomatoes-and-bell-peppers-232432.json)
 * [Linguine With Red Bell Pepper Walnuts And Parmesan](../../index/l/linguine-with-red-bell-pepper-walnuts-and-parmesan-2600.json)
 * [Marinated Mozzarella Roasted Bell Pepper And Olive Brochettes](../../index/m/marinated-mozzarella-roasted-bell-pepper-and-olive-brochettes-12362.json)
 * [Marinated Olives Red Bell Pepper Artichoke Hearts And Mushrooms](../../index/m/marinated-olives-red-bell-pepper-artichoke-hearts-and-mushrooms-5635.json)
 * [Marinated Tempeh Stir Fry With Broccoli And Red Bell Pepper](../../index/m/marinated-tempeh-stir-fry-with-broccoli-and-red-bell-pepper-5896.json)
 * [Meatloaf Filled Green Bell Peppers](../../index/m/meatloaf-filled-green-bell-peppers-12829.json)
 * [Minted Cucumber And Bell Pepper Buttermilk Soup](../../index/m/minted-cucumber-and-bell-pe


uch/base/mixins/_Class.scss */
.x-tab .x-button-icon.expand:before,
.x-button .x-button-icon.expand:before {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  text-align: center;
  font-family: "Pictos";
  content: "`";
}

/* line 2, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/base/src/dataview/_DataView.scss */
.x-dataview-inlineblock .x-dataview-item, .x-dataview-inlineblock .x-data-item {
  display: inline-block !important;
}

/* line 8, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/base/src/dataview/_DataView.scss */
.x-dataview-nowrap .x-dataview-container {
  white-space: nowrap !important;
}

/* line 14, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/base/src/dataview/_DataView.scss */
.x-dataview-nowrap .x-container.x-dataview {
  white-space: nowrap !important;
}

/* line 1, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/base/src/dataview/_List.scss */
.x-list {
  overflow: hidden;
}
/* line 4, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/base/src/dataview/_List.scss */
.x-list .x-scroll-scroller {
  max-width: 100%;
}
/* line 8, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/base/src/dataview/_List.scss */
.x-list .x-list-inner {
  width: 100% !important;
}
/* line 12, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/base/src/dataview/_List.scss */
.x-list.x-list-indexed .x-list-disclosure {
  margin-right: 50px;
}
/* line 16, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/base/src/dataview/_List.scss */
.x-list .x-item-selected .x-list-disclosure {
  background-color: #fff;
}
/* line 20, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/base/src/dataview/_List.scss */
.x-list .x-list-scrolldock-hidden {
  display: none;
}
/* line 24, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/base/src/dataview/_List.scss */
.x-list .x-list-item {
  position: absolute !important;
  left: 0;
  top: 0;
  width: 100%;
}
/* line 30, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/base/src/dataview/_List.scss */
.x-list .x-list-item > .x-dock {
  height: auto;
}
/* line 34, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/base/src/dataview/_List.scss */
.x-list .x-list-item .x-dock-horizontal {
  border-top: 1px solid #cccccc;
}
/* line 39, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-


 <= base {
                date += Duration::weeks(1);
            }

            candidates.push(date);
        }
    }

    // ... remove all objects that match none of the desired weekdays (if any)
    // and increment the remaining dates according to the optional WeekdayModifier
    // and WeekVariant.
    if let Some(ref days) = spec.days {
        let weeks = spec.weeks;

        candidates = candidates
            .into_iter()
            .filter(|c| days.iter().any(|x| x.0 == c.weekday()))
            .collect();

        for candidate in &mut candidates {
            let day_modifier = days.iter().find(|x| x.0 == candidate.weekday()).unwrap().1;

            while !check_date_validity(candidate, day_modifier, weeks) {
                *candidate += Duration::weeks(1);
            }
        }
    }

    // ... and return the filtered date candidates of this ParsedSchedule.
    candidates
}

// Takes a date and checks its bounds according to optional WeekdayModifiers
// and/or WeekVariants. Returns false if the date does not match the specified rules.
fn check_date_validity(
    date: &OffsetDateTime,
    weekday_mod: Option<WeekdayModifier>,
    week_mod: Option<WeekVariant>,
) -> bool {
    let is_correct_day = match weekday_mod {
        Some(modifier) => {
            let day = date.day();

            match modifier {
                WeekdayModifier::First => day <= 7,
                WeekdayModifier::Second => day > 7 && day <= 14,
                WeekdayModifier::Third => day > 14 && day <= 21,
                WeekdayModifier::Fourth => day > 21 && day <= 28,
                WeekdayModifier::Last => date.month() != (*date + Duration::weeks(1)).month(),
            }
        }
        None => true,
    };

    let is_correct_week = match week_mod {
        Some(modifier) => {
            let week = date.date().iso_week();

            match modifier {
                WeekVariant::Even => week % 2 == 0,
                WeekVariant::Odd => week % 2 != 0,
            }
        }
        None => true,
    };

    is_correct_day && is_correct_week
}

#[cfg(test)]
mod tests {
    use super::*;
    use time::macros::{datetime, time};
    use time::Weekday;

    #[test]
    fn test_compute_dates_1() {
        let base = datetime!(2021-06-04 13:38:00 UTC);
        let spec = ParsedSchedule {
            times: vec![time!(12:00:00), time!(18:00:00)],
            days: None,
            weeks: None,
        };
        let result = vec![
            datetime!(2021-06-11 12:00:00 UTC),
            datetime!(2021-06-05 12:00:00 UTC),
            datetime!(2021-06-06 12:00:00 UTC),
            datetime!(2021-06-07 12:00:00 UTC),
            datetime!(2021-06-08 12:00:00 UTC),
            datetime!(2021-06-09 12:00:00 UTC),
            datetime!(2021-06-10 12:00:00 UTC),
            datetime!(2021-06-04 18:00:00 UTC),
            datetime!(2021-06-05 18:00:00 UTC),
            datetime!(2021-06-06 18:00:00 UTC),
            datetime!(2021-06-07 18:00:00 UTC),
            datetime!(2021-06-08 18:00:00 UTC),
            datetime!(2021-06-09 18:00:00 UTC),
            datetime!(2021-06-10 18:00:00 UTC),
        ];
        assert_eq!(compute_dates(base, &spec), result);
    }

    #[test]
    fn test_compute_dates_2() {
        let base = datetime!(2021-06-04 13:38:00 UTC);
        let spec = ParsedSchedule {
            times: vec![time!(18:00:00)],
            days: Some(vec![(Weekday::Monday, None), (Weekday::Thursday, None)]),
            weeks: None


4LoopW_NOSTRIDE:
            ld1 {v9.4s}, [x2], #16         // weight
            ld1 {v5.4s, v6.4s, v7.4s, v8.4s}, [x1], #64 // feature

            sxtl  v0.8h, v9.8b
            sxtl2 v9.8h, v9.16b

            sxtl  v1.8h, v5.8b
            sxtl2 v2.8h, v5.16b
            sxtl  v3.8h, v6.8b
            sxtl2 v4.8h, v6.16b
            sxtl  v5.8h, v7.8b
            sxtl2 v6.8h, v7.16b
            sxtl  v7.8h, v8.8b
            sxtl2 v8.8h, v8.16b

            smlal  v10.4s,  v0.4h, v1.4h
            smlal2 v11.4s,  v0.8h, v1.8h
            smlal  v12.4s,  v9.4h, v2.4h
            smlal2 v13.4s,  v9.8h, v2.8h
            smlal  v14.4s,  v0.4h, v3.4h
            smlal2 v15.4s,  v0.8h, v3.8h
            smlal  v16.4s,  v9.4h, v4.4h
            smlal2 v17.4s,  v9.8h, v4.8h
            smlal  v18.4s,  v0.4h, v5.4h
            smlal2 v19.4s,  v0.8h, v5.8h
            smlal  v20.4s,  v9.4h, v6.4h
            smlal2 v21.4s,  v9.8h, v6.8h
            smlal  v22.4s,  v0.4h, v7.4h
            smlal2 v23.4s,  v0.8h, v7.8h
            smlal  v24.4s,  v9.4h, v8.4h
            smlal2 v25.4s,  v9.8h, v8.8h

            sub x1, x1, x12
            add x1, x1, x8
            subs x11, x11, #1
            bne L4LoopW_NOSTRIDE
        L4LoopWEnd_NOSTRIDE:
        subs x10, x10, #1
        add x1, x1, x9
    bne L4LoopH_NOSTRIDE

    scvtf v10.4s, v10.4s
    scvtf v11.4s, v11.4s
    scvtf v12.4s, v12.4s
    scvtf v13.4s, v13.4s
    scvtf v14.4s, v14.4s
    scvtf v15.4s, v15.4s
    scvtf v16.4s, v16.4s
    scvtf v17.4s, v17.4s
    scvtf v18.4s, v18.4s
    scvtf v19.4s, v19.4s
    scvtf v20.4s, v20.4s
    scvtf v21.4s, v21.4s
    scvtf v22.4s, v22.4s
    scvtf v23.4s, v23.4s
    scvtf v24.4s, v24.4s
    scvtf v25.4s, v25.4s

    fmul v10.4s, v10.4s, v26.4s
    fmul v11.4s, v11.4s, v27.4s
    fmul v12.4s, v12.4s, v28.4s
    fmul v13.4s, v13.4s, v29.4s
    fmul v14.4s, v14.4s, v26.4


essageTypes {
  MAIN = 'MAIN',
  INFO = 'INFO',
  DONE = 'DONE',
  WARN = 'WARN',
  ERR = 'ERR',
}

export function boldText(text: string | number): string {
  return chalk.bold(text)
}

export function grayText(text: string | number): string {
  return chalk.gray(text)
}

interface GetMessageArg {
  type: MessageTypes
  text: string
  tag?: string
  withoutIcon?: boolean
}

export function getMessage({
  type, text, tag, withoutIcon = false,
}: GetMessageArg): string {
  const colorByType: Record<string, typeof ForegroundColor> = {
    [MessageTypes.DONE]: 'green',
    [MessageTypes.WARN]: 'yellow',
    [MessageTypes.ERR]: 'red',
  }

  const iconByType: {[key in MessageTypes]?: string} = {
    [MessageTypes.INFO]: logSymbols.info,
    [MessageTypes.DONE]: logSymbols.success,
    [MessageTypes.WARN]: logSymbols.warning,
    [MessageTypes.ERR]: logSymbols.error,
  }

  const icon = iconByType[type]
  const iconStr = withoutIcon || !icon ? '' : `${iconByType[type]} `

  const tagStr = tag ? `${grayText(`｢${tag}｣`)}: ` : ''

  const color = colorByType[type]
  const solorStr = color ? chalk[color](text) : text

  return `${iconStr}${tagStr}${solorStr}`
}

export function printMessage(type: MessageTypes, text: string, tag?: string): void {
  const message = getMessage({ type, text, tag })
  console.log(message)
}

export function isInteractive(): boolean {
  return process.stdout.isTTY
}

export interface Spinner {
  start: () => void,
  stop: () => void,
}

export function printMessageWithSpinner(
  type: MessageTypes, text: string, tag?: string,
): Spinner {
  const message = getMessage({
    type, text, tag, withoutIcon: true,
  })
  const spinner = ora({ color: 'yellow', text: message })

  if (isInteractive()) {
    return {
      start: () => spinner.start(),
      stop: () => {
        if (spinner.isSpinning) {
          spinner.info()
        }
      },
    }
  }

  return {
    start: () => printMessage(type, text, tag),
    stop: noop,
  }
}

export function clearConsole(): void {
  const output = process.platform === 'win32' ? '\x1B[2J\x1B[0f' : '\x1B[2J\x1B[3J\x1B[H'

  if (isInteractive()) {
    process.stdout.write(output)
  }
}
/// <reference path="../../../references.ts" />

import { Component, View, Input, Output, EventEmitter, NgFor, NgIf } from "angular2/angular2";
import { TaskItem } from "./models/task-item";
import { Command, CommandType } from "./models/command"
import { TaskComponent } from "./components/_task-component";
import { TaskBaseComponent } from "./components/task-base-component";
import { LocalStorageStore } from "./services/store/localstorage-store";

@Component({
	selector: "task-list"
})

@View({
	template: `
		<style>
			.task-list {
				padding: 0;
			}
			.task-list li {
				list-style: none;
			}

			<!-- for the header column widths -->
			${TaskBaseComponent.baseStyles}

			.task-list-line {
				padding:0;
			}
			.task-list-line-header {
				font-weight: bold;
			}
		</style>

		<h5>
			Your


_numberRe.lastIndex = 0;
  var n = d3_time_numberRe.exec(string.substring(i, i + 2));
  return n ? (date.setMonth(n[0] - 1), i += n[0].length) : -1;
}

function d3_time_parseDay(date, string, i) {
  d3_time_numberRe.lastIndex = 0;
  var n = d3_time_numberRe.exec(string.substring(i, i + 2));
  return n ? (date.setDate(+n[0]), i += n[0].length) : -1;
}

// Note: we don't validate that the hour is in the range [0,23].
function d3_time_parseHour24(date, string, i) {
  d3_time_numberRe.lastIndex = 0;
  var n = d3_time_numberRe.exec(string.substring(i, i + 2));
  return n ? (date.setHours(+n[0]), i += n[0].length) : -1;
}

// Note: we don't validate that the hour is in the range [1,12].
function d3_time_parseHour12(date, string, i) {
  date.hour12 = true;
  return d3_time_parseHour24(date, string, i);
}

function d3_time_parseMinutes(date, string, i) {
  d3_time_numberRe.lastIndex = 0;
  var n = d3_time_numberRe.exec(string.substring(i, i + 2));
  return n ? (date.setMinutes(+n[0]), i += n[0].length) : -1;
}

function d3_time_parseSeconds(date, string, i) {
  d3_time_numberRe.lastIndex = 0;
  var n = d3_time_numberRe.exec(string.substring(i, i + 2));
  return n ? (date.setSeconds(+n[0]), i += n[0].length) : -1;
}

function d3_time_parseMilliseconds(date, string, i) {
  d3_time_numberRe.lastIndex = 0;
  var n = d3_time_numberRe.exec(string.substring(i, i + 3));
  return n ? (date.setMilliseconds(+n[0]), i += n[0].length) : -1;
}

// Note: we don't look at the next directive.
var d3_time_numberRe = /\s*\d+/;

function d3_time_parseAmPm(date, string, i) {
  var n = d3_time_amPmLookup[string.substring(i, i += 2).toLowerCase()];
  return n == null ? -1 : (date.hour12pm = n, i);
}

var d3_time_amPmLookup = {
  am: 0,
  pm: 1
};

function d3_time_year(d) {
  return new d3_time(d.getFullYear(), 0, 1);
}

function d3_time_daysElapsed(d0, d1) {
  return ~~((d1 - d0) / 864e5 - (d1.getTimezoneOffset() - d0.getTimezoneOffset()) / 1440);
}

function d3_time_dayOfYear(d) {
  return d3_time_zfill3(1 + d3_time_daysElapsed(d3_time_year(d), d));
}

function d3_time_weekNumberSunday(d) {
  var d0 = d3_time_year(d);
  return d3_time_zfill2(~~((d3_time_daysElapsed(d0, d) + d0.getDay()) / 7));
}

function d3_time_weekNumberMonday(d) {
  var d0 = d3_time_year(d);
  return d3_time_zfill2(~~((d3_time_daysElapsed(d0, d) + (d0.getDay() + 6) % 7) / 7));
}

// TODO table of time zone offset names?
function d3_time_zone(d) {
  var z = d.getTimezoneOffset(),
      zs = z > 0 ? "-" : "+


/* 003A8 80800F38 AC650008 */  sw      $a1, 0x0008($v1)           ## 8015E668
/* 003AC 80800F3C 3405FFF5 */  ori     $a1, $zero, 0xFFF5         ## $a1 = 0000FFF5
.L80800F40:
/* 003B0 80800F40 54A20004 */  bnel    $a1, $v0, .L80800F54
/* 003B4 80800F44 3404FFF6 */  ori     $a0, $zero, 0xFFF6         ## $a0 = 0000FFF6
/* 003B8 80800F48 10000018 */  beq     $zero, $zero, .L80800FAC
/* 003BC 80800F4C AC640008 */  sw      $a0, 0x0008($v1)           ## 8015E668
/* 003C0 80800F50 3404FFF6 */  ori     $a0, $zero, 0xFFF6         ## $a0 = 0000FFF6
.L80800F54:
/* 003C4 80800F54 54820004 */  bnel    $a0, $v0, .L80800F68
/* 003C8 80800F58 3405FFF7 */  ori     $a1, $zero, 0xFFF7         ## $a1 = 0000FFF7
/* 003CC 80800F5C 10000013 */  beq     $zero, $zero, .L80800FAC
/* 003D0 80800F60 AC650008 */  sw      $a1, 0x0008($v1)           ## 8015E668
/* 003D4 80800F64 3405FFF7 */  ori     $a1, $zero, 0xFFF7         ## $a1 = 0000FFF7
.L80800F68:
/* 003D8 80800F68 54A20004 */  bnel    $a1, $v0, .L80800F7C
/* 003DC 80800F6C 3404FFF8 */  ori     $a0, $zero, 0xFFF8         ## $a0 = 0000FFF8
/* 003E0 80800F70 1000000E */  beq     $zero, $zero, .L80800FAC
/* 003E4 80800F74 AC640008 */  sw      $a0, 0x0008($v1)           ## 8015E668
/* 003E8 80800F78 3404FFF8 */  ori     $a0, $zero, 0xFFF8         ## $a0 = 0000FFF8
.L80800F7C:
/* 003EC 80800F7C 54820004 */  bnel    $a0, $v0, .L80800F90
/* 003F0 80800F80 3405FFF9 */  ori     $a1, $zero, 0xFFF9         ## $a1 = 0000FFF9
/* 003F4 80800F84 10000009 */  beq     $zero, $zero, .L80800FAC
/* 003F8 80800F88 AC650008 */  sw      $a1, 0x0008($v1)           ## 8015E668
/* 003FC 80800F8C 3405FFF9 */  ori     $a1, $zero, 0xFFF9         ## $a1 = 0000FFF9
.L80800F90:
/* 00400 80800F90 14A20003 */  bne     $a1, $v0, .L80800FA0
/* 00404 80800F94 3401FFFA */  ori     $at, $zero, 0xFFFA         ## $at = 0000FFFA
/* 00408 80800F98 10000004 */  beq     $zero, $zero, .L80800FAC
/* 0040C 80800F9C AC640008 */  sw      $a0, 0x0008($v1)           ## 8015E668
.L80800FA0:
/* 00410 80800FA0 54410003 */  bnel    $v0, $at, .L80800FB0
/* 00414 80800FA4 8C6C0


.string.unit_foot_short,
            ),
            NormalUnit(
              UnitID.yard,
              BigDecimal("914400000000000000"),
              UnitGroup.LENGTH,
              R.string.unit_yard,
              R.string.unit_yard_short,
            ),
            NormalUnit(
              UnitID.mile,
              BigDecimal("1609344000000000000000"),
              UnitGroup.LENGTH,
              R.string.unit_mile,
              R.string.unit_mile_short,
            ),
          )
          .map { UnitSearchResultItem(it, UnitStats(it.id), null) }
    )

  UnitToSelectorScreen(
    uiState =
      UnitSelectorUIState.UnitTo(
        unitFrom = units.values.first().first().basicUnit,
        unitTo = units.values.first().first().basicUnit,
        query = TextFieldState("test"),
        units = units,
        showFavoritesOnly = false,
        sorting = UnitsListSorting.USAGE,
        scale = 3,
        outputFormat = OutputFormat.PLAIN,
        formatterSymbols = FormatterSymbols(Token.SPACE, Token.PERIOD),
      ),
    toggleFavoritesOnly = {},
    updateUnitTo = {},
    favoriteUnit = {},
    navigateUp = {},
    navigateToUnitGroups = {},
  )
}
/*
 * Unitto is a calculator for Android
 * Copyright (c) 2024 Elshan Agaev
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

package com.sadellie.unitto.feature.bodymass

import org.junit.Assert.assertEquals
import org.junit.Test
import java.math.BigDecimal
import java.math.RoundingMode

class BodyMassUtilsTest {
  @Test
  fun calculateMetric_positiveNumbers() {
    val heightCm = BigDecimal("190")
    val weightKg = BigDecimal("80")
    val expected = BigDecimal("22.161").scaleDown()
    val actual = calculateMetric(heightCm, weightKg).scaleDown()

    assertEquals(expected, actual)
  }

  @Test
  fun calculateMetric_negativeNumbers() {
    val heightCm = BigDecimal("-190")
    val weightKg = BigDecimal("80")
    val expected = BigDecimal.ZERO
    val actual = calculateMetric(heightCm, weightKg)

    assertEquals(expected, actual)
  }

  @Test
  fun calculateMetric_zero() {
    val heightCm = BigDecimal.ZERO
    val weightKg = BigDecimal.ZERO
    val expected = BigDecimal.ZERO
    val actual = calculateMetric(heightCm, weightKg)

    assertEquals(expected, actual)
  }

  @Test
  fun calculateImperial_positiveNumbers() {
    val heightFt = BigDecimal("6")
    val heightIn = BigDecimal("5")
    val weightLbs = BigDecimal("150")
    val expected = BigDecimal("17.785")
    val actual = calculateImperial(heightFt, heightIn, weightLbs).scaleDown()

    assertEquals(expected, actual)
  }

  @Test
  fun calculateImperial_negativeNumbers() {
    val heightFt = BigDecimal("-6")
    val heightIn = BigDecimal("5")
    val weightLbs = BigDecimal.ZERO
    val expected = BigDecimal.ZERO
    val actual = calculateImperial(heightFt, heightIn, weightLbs)

    assertEquals(expected, actual)
  }

  @Test
  fun calculateImp


  ry = 5411 km, unwrapped to circumferenceY * scale = 34000 km
//     var plan = DEPRECATED_Plan.planet(
//       sourcePath,
//       planHid,
//       realRadiusX: Unit.kilometre(radius.x),
//       realRadiusY: Unit.kilometre(radius.y),
//       scale: scale,
//       innerDataDefaultValue: 12,
//       outerDataDefaultValue: 0,
//     );

//     // fill the plan

//     // insert the imageries (projections of other plans) to this plan
//     // positions takes from tmx-file
//     const imageryHidRi = 'ri';
//     const imageryAxisPositionRi = (505, 85);
//     const imageryAxisSizeRi = (3520, 2496);
//     final imageryRealWidthRi = Unit.kilometre(1100);
//     final imageryAxisSizeRiInPlan =
//         plan.axisSizeInParent(imageryRealWidthRi, imageryAxisSizeRi);
//     plan += DEPRECATED_PictureImagery.fromImage(
//       sourcePath,
//       planHid,
//       imageryHidRi,
//       axisPosition: imageryAxisPositionRi,
//       // the height will be calculated in proportion to the image size
//       realWidth: imageryRealWidthRi,
//       anchor: plan.anchor,
//       axisType: plan.axisType,
//       shape: const InfinityShape(),
//     );

//     const imageryHidRiEast = 'ri_east';
//     final imageryAxisPositionRiEast = (505 + imageryAxisSizeRiInPlan.$1, 85);
//     const imageryAxisSizeRiEast = (400, 1000);
//     final imageryRealWidthRiEast = Unit.kilometre(312);
//     final imageryAxisSizeRiEastInPlan =
//         plan.axisSizeInParent(imageryRealWidthRiEast, imageryAxisSizeRiEast);
//     plan += DEPRECATED_PictureImagery.fromImage(
//       sourcePath,
//       planHid,
//       imageryHidRiEast,
//       axisPosition: imageryAxisPositionRiEast,
//       // the height will be calculated in proportion to the image size
//       realWidth: imageryRealWidthRiEast,
//       anchor: plan.anchor,
//       axisType: plan.axisType,
//       shape: const InfinityShape(),
//     );

//     // wiil be calculated by [width] and image size
//     // final imageryRealHeightX = ...

//     final testImageries = <String, JsonMap>{
//       // ! the key is a HID for imagery
//       // for construct a plan we will use [imagery.hidForPlan]
//       'raeria.ri': {
//         'npath': '$sourcePath/$planHid/ri',
//         'scale': 0.3125,
//         'axisPosition': imageryAxisPositionRi,
//         'axisSize': (3520, 2496),
//         'axisSizeInPlan': imageryAxisSizeRiInPlan,
//         'axisSquare': 3520 * 2496,
//         'shapeType': InfinityShape,
//       },
//       'raeria.ri_east': {
//         'npath': '$sourcePath/$planHid/ri_east',
//         'scale': 0.78,
//         'axisPosition': imageryAxisPositionRiEast,
//         'axisSize': (400, 1000),
//         'axisSizeInPlan': imageryAxisSizeRiEastInPlan,
//         'axisSquare': 400 * 1000,
//         'shapeType': InfinityShape,
//       },
//     };

//     test('Check created from raw', () {
//       checkPlan(
//         plan,
//         planHid: planHid,
//         npath: '$sourcePath/$planHid',
//         scale: scale,
//         axisSize: (circumferenceX, circumferenceY),
//         axisSquare: circumferenceX * circumferenceY,
//         imageries: testIm


 name with any variants or subcomponents attached.
   */
  get longComponentName() {
    if (!isComponentVariable(this)) return undefined;
    const longComponentSegments: string[] = [this.componentName];
    for (let s = 1; s < this.segments.length - 1; s += 1) {
      if (isReserved(this.segments[s])) break;
      longComponentSegments.push(this.segments[s]);
    }
    return longComponentSegments.join('-');
  }

  get category(): Categories|undefined {
    if (this.type === Types.Color || (!this.type && this.segments[1] === Categories.Color)) {
      return Categories.Color;
    }
    const [_, target] = this.findTarget();
    if (this.isComponent && isSpacingTarget(target)) return Categories.Spacing;
    if (this.isComponent && target === BORDER_RADIUS) return Categories.Radius;
    return undefined;
  }

  get component(): string|undefined {
    if (isComponentVariable(this)) return this.longComponentName;
    return undefined;
  }

  validate() {
    // eslint-disable-next-line @typescript-eslint/no-unused-expressions
    this.normalName && this.parsedValue;
    return this.errors.size === 0;
  }

  get subTarget(): SubTargets|undefined {
    if (isSpacingVariable(this)) return this.side;
    if (isRadiusVariable(this)) return this.corner;
    return undefined;
  }

  get viewport(): Viewports|undefined {
    if (this.collection === Collections.Device) {
      if (isViewport(this.mode)) return this.mode;
      this.errors.add(`Non-viewport mode "${this.mode}" for device variable`);
    }
    return this.segments.find(isViewport);
  }

  get normalJson(): Required<NormalVariable> {
    const {
      level = 'undefined',
      component = 'undefined',
      category = 'undefined',
      viewport = 'undefined',
      theme = 'undefined',
      target = 'undefined',
      subTarget = 'undefined',
      state = 'undefined',
      parsedValue = 'undefined',
    } = this;
    return {
      level,
      component,
      category,
      viewport,
      theme,
      target,
      subTarget,
      state,
      parsedValue,
    };
  }

  get normalName(): string {
    const segments = [
      this.level,
      this.component,
      this.category,
      this.target,
      this.subTarget,
      this.state,
      this.viewport,
    ];
    return segments.join('/');
  }

  protected setInteractiveTarget(target: ColorTargets) {
    this.interactiveTarget = target;
  }

  setErrors(errors: string|Set<string>|string[]) {
    if (typeof errors === 'string') this.errors.add(errors);
    else errors.forEach(e => this.errors.add(e));
  }

  createInteractiveVariants(): FigmaVariable[] {
    if (!this.isInteractive) return [this];
    return Object.values(ColorTargets).map(target => {
      const variant = new FigmaVariable(this);
      variant.setInteractiveTarget(target);
      return variant;
    });
  }

  // @TODO add createThemeVariants to add a dark version of any semantic color
  // which does not have a theme
  // createThemeVariants(): FigmaVariable[] {
  //   if (!this.isSemantic || !this.isColor || this.theme) return [this];
  //   ...
  // }

  get theme(): Themes|undefined {
    return this.segments.find(isTheme);
  }

  get parsedValue(): string|undefined {
    let devicePrefix = '';
    if (this.collection === Collections.Device && isDevice(this.mode)) {
      devicePrefix = TwDevicePrefixes[this.mode];
    }


顿把电话放下不与贺说了。由于我的作风恶劣，使下边干部在工作中对自已产生了害怕心理，不向我反映实际情况，更不敢向我的错误开展斗争，因此使自已不能及时发现工作中的严重错误得到及时纠正，以致使自已走向脱离党、脱离群众的死亡道路。

   （4） 严重的违犯党的集体领导原则。一年来我在何店公社每次党委会议上没有很好的坚持发挥每个党委委员的作用，听取下边意见，让大家提问题，更没有把上级党的方针政策与本地实际情况结合起来进行讨论和制订具体措施，而往往自已包办代替组织的非法行为，特别是在59年在全社发生严重的饿死人的时候，自已没有给县委写过一次报告，反映这方面的问题，而错误的认为县委书记、委员都在这里，不写报告县委也知道等目无组织的思想，特别是张、王的反动思想行为自已没有开展挥（应去掉挥——编者）揭发斗争。

   （5） 在生活上主要是资产阶级的个人享乐腐化。如59年12月分个人为了享乐腐化，听说王坳学校有个宗（应为棕——编者）床，我就叫该公社丁怀民去学校买来了，影响极坏，特别是六0年春群众没吃没住，饥寒交迫的时候，我没有深入到一个队一个食堂与群众同甘共苦，领导群众渡过灾荒，而经常在办公室下命令催逼群众口粮，不问群众死活。因为机关生活好，有干有稀，吃的好，下去了吃不上饭，有时连菜也吃不上，即是下去了也不到群众食堂吃饭，而是在大队、管理区吃，在这些地方吃饭有干有稀，有酒有肉，特殊招待。总之，从人民公社化以来，我和我家庭按群众标准计算，多吃大米 400斤，油 230斤，肉食 300斤，酒50元。

   检查起来我为什么犯这样严重的错误和罪恶呢？这主要是由于我的出身和革命人生观分不开的。我虽然出身在一个贫农家庭里，但是在旧社会生长起来的，对旧社会的一切腐朽制度在我脑子里影响很深，加之参加革命后，没有认真彻底地进行自我改造，一些资产阶级的封建残余思想在我脑子里根深蒂固的存在着。在工作中处处记较个人得失，为个人升官发财，不顾党的政策、国家法律，胡作非为，没有树立为无产阶级服务的思想观点。检查起来我确实是一个犯有严重错误和罪恶的人，要求党根据我所犯的错误罪恶事实，给我以应得的处理，我保证虚心接受。

   检查人：杨功时1962年 4月 5日

   来源：

   河南省某档案馆

    [返回索引页面]

   Copyright (C)  2024  Marxist-Len