"circle", symbolSize = listOf(10), symbolKeepAspect = false, symbolOffset = listOf(0.px, 0.px),
            large = false, largeThreshold = 2000, cursor = "pointer", progressive = 400, progressiveThreshold = 3000,
            seriesLayoutBy = "column", datasetIndex = 0,
            data = listOf(
                listOf(Element.StringEl("Mon"), Element.IntEl(150)),
                listOf(Element.StringEl("Tue"), Element.IntEl(230)),
                listOf(Element.StringEl("Wed"), Element.IntEl(224)),
                listOf(Element.StringEl("Thu"), Element.IntEl(218)),
                listOf(Element.StringEl("Fri"), Element.IntEl(135)),
                listOf(Element.StringEl("Sat"), Element.IntEl(147)),
                listOf(Element.StringEl("Sun"), Element.IntEl(260))
            ),
            clip = true, zlevel = 0, z = 2, silent = false, animation = true, animationThreshold = 2000,
            animationDuration = 1000, animationEasing = "cubicOut", animationDelay = 0, animationDurationUpdate = 300,
            animationEasingUpdate = "cubicOut", animationDelayUpdate = 0
        )
        assertEquals(expected, json.encodeToString(actual))
    }
}/*
* Copyright 2020-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/

package org.jetbrains.kotlinx.kandy.echarts.layers

import org.jetbrains.kotlinx.kandy.dsl.internal.MultiLayerPlotBuilder
import org.jetbrains.kotlinx.kandy.echarts.features.Grid
import org.jetbrains.kotlinx.kandy.echarts.features.Legend
import org.jetbrains.kotlinx.kandy.echarts.features.Tooltip
import org.jetbrains.kotlinx.kandy.echarts.features.animation.Animation
import org.jetbrains.kotlinx.kandy.echarts.features.animation.AnimationEasing
import org.jetbrains.kotlinx.kandy.echarts.features.text.TextStyle
import org.jetbrains.kotlinx.kandy.echarts.features.title.Title
import org.jetbrains.kotlinx.kandy.ir.feature.FeatureName
import org.jetbrains.kotlinx.kandy.ir.feature.PlotFeature

/**
 * Plot layout settings.
 *
 * @property size - plot size.
 * @property title - [title][Title] of plot.
 * @property textStyle - [font style][TextStyle].
 * @property grid - [grid][Grid] settings.
 * @property animation - [animation][Animation] of plot.
 * @property legend - [legend][Legend].
 * @property tooltip - [tooltip][Tooltip].
 *
 * @see EChartsLayout
 * @see Title
 * @see TextStyle
 * @see Grid
 * @see Legend
 * @see Tooltip
 */
public class EChartsLayout : PlotFeature {
    public var size: Pair<Int, Int>? = null

    /**
     * @suppress
     */
    override val featureName: FeatureName = FEATURE_NAME

    public var title: Title = Title()

    public var textStyle: TextStyle = TextStyle()

    public var grid: Grid = Grid()

    /**
     * Animation options settings for [Plot][org.jetbrains.kotlinx.kandy.ir.Plot].
     * If a property isn't set or set to null, a default value will be used.
     *
     * * [enable][Animation.enable] - responsible for enabling animation.
     * By default `true`.
     * * [threshold][Animation.threshold] - sets a graphic number threshold for animation.
     * Animation will be disabled when graphic number exceeds a threshold.
     * By default `2000`.
     * * [duration][Animation.duration] - duration of the first animation.
     * By default `1000`.
     * * [easing][Animation.easing] - [easing effect][AnimationEasing] used for the first animation.
     * By default `cubicOut`.
     * * [delay][Animation.delay] - delay before updating the first animation.
     * By default `0`.
     *
     * ```kotlin
     * plot {
     *  animation {
     *      enable = true
     *      threshold = 2000
     *      duration = 1000
     *      easing = AnimationEasing.CUBIC_OUT
     *      delay = 0
     *  }
     * }
     * ```
     *
     * @see MultiLayerPlotBuilder
     * @see AnimationEasing
     */
    public var animation: Animation = Animation


 Software.
 *
 * @copyright
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

    .code64
    .intel_syntax noprefix

    .globl  intrinsic_outb
intrinsic_outb:

    mov rax, rdx
    mov rdx, rcx
    out dx, al
    xor rax, rax

    ret
    int 3


        ),
        const SizedBox(height: 16),
        ElevatedButton(
          onPressed: () {
            Navigator.push(
              context,
              MaterialPageRoute(
                builder: (context) {
                  return const SignUpScreen();
                },
              ),
            );
          },
          style: ElevatedButton.styleFrom(
            backgroundColor: kPrimaryLightColor,
            elevation: 0,
          ),
          child: Text(
            "Sign Up".tr().toUpperCase(),
            style: const TextStyle(color: Colors.black),
          ),
        ),
      ],
    );
  }
}
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';

class RelaxView extends StatelessWidget {
  final AnimationController animationController;

  const RelaxView({Key? key, required this.animationController})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    final _firstHalfAnimation =
        Tween<Offset>(begin: Offset(0, 1), end: Offset(0, 0)).animate(
      CurvedAnimation(
        parent: animationController,
        curve: Interval(
          0.0,
          0.2,
          curve: Curves.fastOutSlowIn,
        ),
      ),
    );
    final _secondHalfAnimation =
        Tween<Offset>(begin: Offset(0, 0), end: Offset(-1, 0)).animate(
      CurvedAnimation(
        parent: animationController,
        curve: Interval(
          0.2,
          0.4,
          curve: Curves.fastOutSlowIn,
        ),
      ),
    );
    final _textAnimation =
        Tween<Offset>(begin: Offset(0, 0), end: Offset(-2, 0)).animate(
      CurvedAnimation(
        parent: animationController,
        curve: Interval(
          0.2,
          0.4,
          curve: Curves.fastOutSlowIn,
        ),
      ),
    );
    final _imageAnimation =
        Tween<Offset>(begin: Offset(0, 0), end: Offset(-4, 0)).animate(
      CurvedAnimation(
        parent: animationController,
        curve: Interval(
          0.2,
          0.4,
          curve: Curves.fastOutSlowIn,
        ),
      ),
    );

    final _relaxAnimation =
        Tween<Offset>(begin: Offset(0, -2), end: Offset(0, 0)).animate(
      CurvedAnimation(
        parent: animationController,
        curve: Interval(
          0.0,
          0.2,
          curve: Curves.fastOutSlowIn,
        ),
      ),
    );
    return SlideTransition(
      position: _firstHalfAnimation,
      child: SlideTransition(
        position: _secondHalfAnimation,
        child: Padding(
          padding: const EdgeInsets.only(bottom: 100),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              SlideTransition(
                position: _relaxAnimation,
                child: Text(
                  "Relax".tr(),
                  style: TextStyle(fontSize: 26.0, fontWeight: FontWeight.bold),
                ),
              ),
              SlideTransition(
                position: _textAnimation,
                child: Padding(
                  padding:
                      EdgeInsets.only(left: 64, right: 64, top: 16, bottom: 16),
                  child: Text(
                    "Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore"


LABLE GOH
ACFC;ACFC;1100 116A;ACFC;1100 116A; # (과; 과; 과; 과; 과; ) HANGUL SYLLABLE GWA
ACFD;ACFD;1100 116A 11A8;ACFD;1100 116A 11A8; # (곽; 곽; 곽; 곽; 곽; ) HANGUL SYLLABLE GWAG
ACFE;ACFE;1100 116A 11A9;ACFE;1100 116A 11A9; # (곾; 곾; 곾; 곾; 곾; ) HANGUL SYLLABLE GWAGG
ACFF;ACFF;1100 116A 11AA;ACFF;1100 116A 11AA; # (곿; 곿; 곿; 곿; 곿; ) HANGUL SYLLABLE GWAGS
AD00;AD00;1100 116A 11AB;AD00;1100 116A 11AB; # (관; 관; 관; 관; 관; ) HANGUL SYLLABLE GWAN
AD01;AD01;1100 116A 11AC;AD01;1100 116A 11AC; # (괁; 괁; 괁; 괁; 괁; ) HANGUL SYLLABLE GWANJ
AD02;AD02;1100 116A 11AD;AD02;1100 116A 11AD; # (괂; 괂; 괂; 괂; 괂; ) HANGUL SYLLABLE GWANH
AD03;AD03;1100 116A 11AE;AD03;1100 116A 11AE; # (괃; 괃; 괃; 괃; 괃; ) HANGUL SYLLABLE GWAD
AD04;AD04;1100 116A 11AF;AD04;1100 116A 11AF; # (괄; 괄; 괄; 괄; 괄; ) HANGUL SYLLABLE GWAL
AD05;AD05;1100 116A 11B0;AD05;1100 116A 11B0; # (괅; 괅; 괅; 괅; 괅; ) HANGUL SYLLABLE GWALG
AD06;AD06;1100 116A 11B1;AD06;1100 116A 11B1; # (괆; 괆; 괆; 괆; 괆; ) HANGUL SYLLABLE GWALM
AD07;AD07;1100 116A 11B2;AD07;1100 116A 11B2; # (괇; 괇; 괇; 괇; 괇; ) HANGUL SYLLABLE GWALB
AD08;AD08;1100 116A 11B3;AD08;1100 116A 11B3; # (괈; 괈; 괈; 괈; 괈; ) HANGUL SYLLABLE GWALS
AD09;AD09;1100 116A 11B4;AD09;1100 116A 11B4; # (괉; 괉; 괉; 괉; 괉; ) HANGUL SYLLABLE GWALT
AD0A;AD0A;1100 116A 11B5;AD0A;1100 116A 11B5; # (괊; 괊; 괊; 괊; 괊; ) HANGUL SYLLABLE GWALP
AD0B;AD0B;1100 116A 11B6;AD0B;1100 116A 11B6; # (괋; 괋; 괋; 괋; 괋; ) HANGUL SYLLABLE GWALH
AD0C;AD0C;1100 116A 11B7;AD0C;1100 116A 11B7; # (괌; 괌; 괌; 괌; 괌; ) HANGUL SYLLABLE GWAM
AD0D;AD0D;1100 116A 11B8;AD0D;1100 116A 11B8; # (괍; 괍; 괍; 괍; 괍; ) HANGUL SYLLABLE GWAB


lescheduleresource.HasTargetRegion(),
				singlescheduleresource.EdgeTargetSite:     singlescheduleresource.HasTargetSite(),
				singlescheduleresource.EdgeTargetWorkload: singlescheduleresource.HasTargetWorkload(),
			},
		))

}
// SPDX-FileCopyrightText: (C) 2025 Intel Corporation
// SPDX-License-Identifier: Apache-2.0

package store_test

import (
	"context"
	"fmt"
	"reflect"
	"strings"
	"testing"
	"time"

	"github.com/google/uuid"
	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"
	"github.com/stretchr/testify/suite"
	"google.golang.org/grpc/codes"
	"google.golang.org/grpc/status"
	"google.golang.org/protobuf/types/known/fieldmaskpb"

	"github.com/open-edge-platform/infra-core/inventory/v2/internal/ent/workloadmember"
	"github.com/open-edge-platform/infra-core/inventory/v2/internal/ent/workloadresource"
	"github.com/open-edge-platform/infra-core/inventory/v2/internal/store"
	computev1 "github.com/open-edge-platform/infra-core/inventory/v2/pkg/api/compute/v1"
	inv_v1 "github.com/open-edge-platform/infra-core/inventory/v2/pkg/api/inventory/v1"
	inv_testing "github.com/open-edge-platform/infra-core/inventory/v2/pkg/testing"
	"github.com/open-edge-platform/infra-core/inventory/v2/pkg/util"
	"github.com/open-edge-platform/infra-core/inventory/v2/pkg/util/filters"
)

func Test_StrongRelations_On_Delete_Workload(t *testing.T) {
	os := inv_testing.CreateOs(t)
	instance := inv_testing.CreateInstance(t, nil, os)

	t.Run("ClusterWorkload", func(t *testing.T) {
		workload1 := inv_testing.CreateWorkload(t)
		inv_testing.CreateWorkloadMember(t, workload1, instance)

		err := inv_testing.DeleteResourceAndReturnError(t, workload1.ResourceId)
		assertStrongRelationError(t, err, "the workload has relations and cannot be deleted")
	})

	t.Run("ReconciliableWorkload", func(t *testing.T) {
		ctx, cancel := context.WithTimeout(context.Background(), time.Second)
		defer cancel()
		workload2 := &computev1.WorkloadResource{
			Kind:         computev1.WorkloadKind_WORKLOAD_KIND_DHCP,
			Name:         "Test workload 1",
			DesiredState: computev1.WorkloadState_WORKLOAD_STATE_PROVISIONED,
		}

		resp, err := inv_testing.GetClient(t, inv_testing.APIClient).Create(ctx,
			&inv_v1.Resource{
				Resource: &inv_v1.Resource_Workload{Workload: workload2},
			})
		require.NoError(t, err)
		workloadResID := inv_testing.GetResourceIDOrFail(t, resp)
		t.Cleanup(func() {
			inv_testing.HardDeleteWorkload(t, workloadResID, computev1.WorkloadKind_WORKLOAD_KIND_DHCP)
		})
		workload2.ResourceId = workloadResID
		inv_testing.CreateWorkloadMember(t, workload2, instance)

		err = inv_testing.HardDeleteWorkloadAndReturnError(t, workload2.ResourceId, computev1.WorkloadKind_WORKLOAD_KIND_DHCP)
		assertStrongRelationError(t, err, "the workload has relations and cannot be deleted")
	})
}

func Test_Workload_BackReferences_Read(t *testing.T) {
	os := inv_testing.CreateOs(t)


:
	case HCLK_SDMMC:
	case HCLK_SDIO:
	case SCLK_EMMC:
	case SCLK_SDMMC:
	case SCLK_SDIO:
		new_rate = rockchip_mmc_set_clk(cru, PERI_HCLK_HZ,
						clk->id, rate);
		break;
	case SCLK_SPI0:
	case SCLK_SPI1:
		new_rate = rockchip_spi_set_clk(cru, PERI_PCLK_HZ,
						clk->id, rate);
		break;
	default:
		return -ENOENT;
	}

	return new_rate;
}

static struct clk_ops rk3188_clk_ops = {
	.get_rate	= rk3188_clk_get_rate,
	.set_rate	= rk3188_clk_set_rate,
};

static int rk3188_clk_of_to_plat(struct udevice *dev)
{
	if (CONFIG_IS_ENABLED(OF_REAL)) {
		struct rk3188_clk_priv *priv = dev_get_priv(dev);

		priv->cru = dev_read_addr_ptr(dev);
	}

	return 0;
}

static int rk3188_clk_probe(struct udevice *dev)
{
	struct rk3188_clk_priv *priv = dev_get_priv(dev);
	enum rk3188_clk_type type = dev_get_driver_data(dev);

	priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
	if (IS_ERR(priv->grf))
		return PTR_ERR(priv->grf);
	priv->has_bwadj = (type == RK3188A_CRU) ? 1 : 0;

#ifdef CONFIG_SPL_BUILD
#if CONFIG_IS_ENABLED(OF_PLATDATA)
	struct rk3188_clk_plat *plat = dev_get_plat(dev);

	priv->cru = map_sysmem(plat->dtd.reg[0], plat->dtd.reg[1]);
#endif

	rkclk_init(priv->cru, priv->grf, priv->has_bwadj);

	/* Init CPU frequency */
	rkclk_configure_cpu(priv->cru, priv->grf, APLL_SAFE_HZ,
			    priv->has_bwadj);
#endif

	return 0;
}

static int rk3188_clk_bind(struct udevice *dev)
{
	int ret;
	struct udevice *sys_child;
	struct sysreset_reg *priv;

	/* The reset driver does not have a device node, so bind it here */
	ret = device_bind_driver(dev, "rockchip_sysreset", "sysreset",
				 &sys_child);
	if (ret) {
		debug("Warning: No sysreset driver: ret=%d\n", ret);
	} else {
		priv = malloc(sizeof(struct sysreset_reg));
		priv->glb_srst_fst_value = offsetof(struct rk3188_cru,
						    cru_glb_srst_fst_value);
		priv->glb_srst_snd_value = offsetof(struct rk3188_cru,
						    cru_glb_srst_snd_value);
		dev_set_priv(sys_child, priv);
	}

#if CONFIG_IS_ENABLED(RESET_ROCKCHIP)
	ret = offsetof(struct rk3188_cru, cru_softrst_con[0]);
	ret = rockchip_reset_bind(dev, ret, 9);
	if (ret)
		debug("Warning: software reset driver bind faile\n");
#endif

	return 0;
}

static const struct udevice_id rk3188_clk_ids[] = {
	{ .compatible = "rockchip,rk3188-cru", .data = RK3188_CRU },
	{ .compatible = "rockchip,rk3188a-cru", .data = RK3188A_CRU },
	{ }
};

U_BOOT_DRIVER(rockchip_rk3188_cru) = {
	.name			= "rockchip_rk3188_cru",
	.id			= UCLASS_CLK,
	.of_match		= rk3188_clk_ids,
	.priv_auto	= sizeof(struct rk3188_clk_priv),
	.plat_auto	= sizeof(struct rk3188_clk_plat),
	.ops			= &rk3188_clk_ops,
	.bind			= rk3188_clk_bind,
	.of_to_plat	= rk3188_clk_of_to_plat,
	.probe			= rk3188_clk_probe,
};


/*
                        GNU GENERAL PUBLIC LICENSE
                          Version 3, 29 June 2007
 Copyright (C) 2022 Mohammed Ahmed Hussien babiker Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
 */

using OAuth20.Server.Models;
using Microsoft.IdentityModel.Tokens;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;

namespace OAuth20.Server.Services
{
    public interface IClientServi


int
Endpoint::Progress( __inout bool *pfMpiRequestDone )
{
    int mpi_errno = ProcessReceives( pfMpiRequestDone );
    if( mpi_errno != MPI_SUCCESS )
    {
        return MPIU_ERR_FAIL( mpi_errno );
    }

    //
    // Note that the EP could have been disconnected during the receive processing,
    // so we must check that it hasn't before calling ProcessSends.
    //
    if( m_pVc->ch.nd.pEp == NULL )
    {
        return MPI_SUCCESS;
    }

    //
    // We always try to make forward progress on the send side.  Any
    // receive could have given us more credits, and if we don't try now
    // we could hang:
    //  - The CQ is empty the next time we poll, so we unwind
    //  - We go to the Ex engine to wait for a CQ notification
    //  - If the other side is waiting for data that we have pending,
    //  waiting for credits, we're hung.
    //
    mpi_errno = ProcessSends( pfMpiRequestDone );
    if( mpi_errno != MPI_SUCCESS )
    {
        return MPIU_ERR_FAIL( mpi_errno );
    }

    return MPI_SUCCESS;
}

int
Endpoint::SendFlowControlMsg(
    )
{
    if( !OkToSend() )
    {
        return MPI_SUCCESS;
    }

    //
    // We send an update below our credit threshold if there are any
    // read complete notifications to send.
    //
    if( m_nCreditsToGive < (m_RecvQueueDepth >> 1) && m_nRdComplToGive == 0 )
    {
        return MPI_SUCCESS;
    }

    int mpi_errno = SendNextMsg( NdMsgTypeFlowControl, sizeof(nd_hdr_t) );
    if( mpi_errno != MPI_SUCCESS )
    {
        return MPIU_ERR_FAIL( mpi_errno );
    }

    return MPI_SUCCESS;
}

int
Endpoint::SendNextMsg(
    __in nd_msg_type_t type,
    __in ULONG cbSend
    )
{
    nd_msg_t* pMsg = &m_Buffers.Send[m_iSend];

    MPIU_Assert( type == NdMsgTypeFlowControl || cbSend > sizeof(nd_hdr_t) );
    pMsg->Type = type;
    pMsg->Credits = m_nCreditsToGive;
    pMsg->nRdCompl = m_nRdComplToGive;

    ND2_SGE sge;
    sge.Buffer = pMsg;
    sge.BufferLength = cbSend;
    sge.MemoryRegionToken = m_MrToken;

    ULONG flags = 0;
    if( m_pCq->GetAdapter()->UseInline( cbSend ) == true )
    {
        flags |= ND_OP_FLAG_INLINE;
    }
    if( m_nRdComplToGive != 0 )
    {
        //
        // If we have Read operations outstanding our send could indicate a Read
        // complete (nd_msg_t::RdCompl > 0).  Tell the HW to delay the send until
        // all outstanding Reads are complete.  If there are no reads outstanding,
        // the ND_OP_FLAG_READ_FENCE has no effect.
        //
        flags |= ND_OP_FLAG_READ_FENCE;
    }

    AddRef();
    HRESULT hr = m_pIEndpoint->Send(
        NULL,
        &sge,
        1,
        flags
        );
    if( FAILED( hr ) )
    {
        Release();
        return MPIU_E_ERR(
            "**ch3|nd|send %s %d %x",
            inet_ntoa( m_DestAddr.sin_addr ),
            m_DestAddr.sin_port,
            hr
            );
    }
    m_iSend = ++m_iSend & m_SendQueueMask;
    m_nSends++;
    m_nSendCredits--;
    m_nCreditsToGive = 0;
    m_nRdComplToGive = 0;

    return MPI_SUCCESS;
}

int
Endpoint::SendCompletion(
    __in const ND2_RESULT* pResult,
    __out bool* pfMpiRequestDone
    )
{
    m_nSends--;


尝试解决手动点击停止按钮，任务无法停止的问题
29. 解决了列或者标签中包含逗号或引号时导出 CSV 文件错误的问题
30. 多线程并发的对同一张子表进行 describe 导致 crash
31. 数据浏览器的查询结果未按照配置的时区展示的问题
32. 创建 websocket 连接时 taosadapter 内存泄漏的问题
33. 社区版无法在 redhat 操作系统正常启动
34. 无效断言在两个 stt 分别位于数据块时间轴分布空洞场景引发的 crash
35. S3 长时间拉取数据会失败的问题
36. 使用结果集函数判断时间线的有序性
37. 解决超级表投影查询慢的问题
38. 修复：多节点环境，事务返回码与事务状态不一致导致事务堆积
39. 修复：在 stt_trigger = 1 时，delete 数据之后重新出现的错误
40. 节点恢复阶段 taosd 内存占用过高导致 OOM
41. limit 过小时的判断错误
42. AVEVA historian 数据源连通性及获取示例数据功能
43. taosd 服务无法正常停止的问题
44. last 函数查询全空列导致 crash
45. 查询 cid 不在当前版本的 schema 时触发 assert 导致 coredump
46. 写入消息体过大时 OOM 的问题，增加 syncLogBufferMemoryAllowed 参数控制
47. timezone 设置为 UTC 且数据包含“1970”时，查询报错
48. 取消 mnode 节点的消息同步的等待超时
49. 集群节点异常恢复后，集群授权状态失效
50. 查询空指针问题
51. 在 restore vnode 时，将 vgroup 暂时设置成单副本
52. 可以使用 SQL 保留字作为列名创建超级表，也可以使用 SQL 保留字作为标签名
53. 高并发查询期间内存持续增长的问题
54. 流计算在 checkpoint 处理过程中，由于断言失败导致的 crash
55. 修复了 3.3.2.8.0820 版本中可以查询到 information_schema 中不存在的表 perf_queries 问题
56. 节点恢复阶段 taosd 内存占用过高导致 OOM
57. 修复在 schema 变更情况下，通过 taosx 导入数据时，taosd 出现 crash 的问题
58. 可能的内存泄漏
59. 客户端内存泄漏
60. 开源用户修改 stt_trigger 值升级后无法修改其他数据库选项
61. NOT IN (NULL) 查询结果不正确
62. TDengine TSDB CLI 和 taosBenchmark 不能成功连接云服务实例
---
sidebar_label: 安装前预配置工具
title: 安装前预配置工具
toc_max_heading_level: 4
---

## 背景

TDengine TSDB 的安装部署对环境系统有一定的依赖和要求，安装部署前需要进行环境预配置操作，本文档旨在说明安装前预配置工具在安装 TDengine TSDB 前对环境的预配置内容和工具的使用方法。

## 预配置工具使用方法

工具支持通过 help 参数查看支持的语法

```help
usage: taospreset [-


NDEX.ENTRIES.forEach((entry: number) => {
        this.removeItem(String(entry));
      });
      this.INDEX.SEQUENCE = 1;
      this.INDEX.ENTRIES = [];
      this.removeItem('index');
      observer.next(true);
      observer.complete();
    });
  }

  private setItem(key: string, data: any): void {
    const insertableKey = `${ProfileDao.NAMESPACE}_${key}`;
    this.localStorage.setItem(insertableKey, JSON.stringify(data));
  }

  private getItem<T>(key: string): T {
    const insertableKey = `${ProfileDao.NAMESPACE}_${key}`;
    return JSON.parse(this.localStorage.getItem(insertableKey)) as T;
  }

  private removeItem(key: string): void {
    const insertableKey = `${ProfileDao.NAMESPACE}_${key}`;
    this.localStorage.removeItem(insertableKey);
  }

}
// Hey Emacs, this is -*- coding: utf-8 -*-

import * as path from 'path';
import * as fs from 'mz/fs';

function flatten(arr: any[]): any[] {
  return arr.reduce<any[]>(
    (flat: any, toFlatten: any) =>
      flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten),
    []);
}

async function readdir(dirPath: string): Promise<string[]> {
  const entries = await fs.readdir(dirPath);
  const files = await Promise.all(
    entries.map(async entry => {
      const entryPath = path.join(dirPath, entry);
      const stat = await fs.stat(entryPath);
      return stat.isDirectory() ? await readdir(entryPath) : entryPath;
    }));
  return flatten(files);
}

readdir('.')
  .then(files => files.forEach(file => console.log(file)))
  .catch(console.error);
import {AbstractControl, AsyncValidatorFn, ValidationErrors} from "@angular/forms";
import {Observable} from "rxjs";

function loadImage(url){
  return new Promise((resolve, reject) => {
    const image = new Image();
    image.addEventListener('load', () => {
      resolve(null)
    });
    image.addEventListener('error', () => {
      reject({isFounded: false})
    })
    image.src = url;
  })
}

export function photoUrlExistValidator(): AsyncValidatorFn {
  return (control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null>  => {
    return  loadImage(control.value).catch(err => {return {photoUrlExistValidator: false}});};
}
import { reduce } from "../types";

export type Arity1<U0, T0> = (x0: U0) => T0;
export type Arity2<U0, U1, T0> = (x0: U0, x1: U1) => T0;
export type Arity3<U0, U1, U2, T0> = (x0: U0, x1: U1, x2: U2) => T0;

// prettier-ignore
export type FlowFunction = {
  <U0, T0>(f0: Arity1<U0, T0>): Arity1<U0, T0>;
  <U0, U1, T0>(f0: Arity2<U0, U1, T0>): Arity2<U0, U1, T0>;
  <U0, U1, U2, T0>(f0: Arity3<U0, U1, U2, T0>): Arity3<U0, U1, U2, T0>;

  <U0, T0, T1>(f1: Arity1<T0, T1>, f0: Arity1<U0, T0>): Arity1<U0, T1>;
  <U0, U1, T0, T1>(f1: Arity1<T0, T1>, f0: Arity2<U0, U1, T0>): Arity2<U0, U1, T1>;
  <U0, U1, U2, T0, T1>(f1: Arity1<T0, T1>, f0: Arity3<U0, U1, U2, T0>): Arity3<U0, U1, U2, T1>;

  <U0, T0, T1, T


color=mint]:hover {
    background-color:#19b698
}
.ladda-button[disabled], .ladda-button[data-loading] {
    border-color:rgba(0, 0, 0, 0.07);
    cursor:default;
    background-color:#999
}
.ladda-button[disabled]:hover, .ladda-button[data-loading]:hover {
    cursor:default;
    background-color:#999
}
.ladda-button[data-size=xs] {
    padding:4px 8px
}
.ladda-button[data-size=xs] .ladda-label {
    font-size:0.7em
}
.ladda-button[data-size=s] {
    padding:6px 10px
}
.ladda-button[data-size=s] .ladda-label {
    font-size:0.9em
}
.ladda-button[data-size=l] .ladda-label {
    font-size:1.2em
}
.ladda-button[data-size=xl] .ladda-label {
    font-size:1.5em
}

@font-face {	font-family: 'Pe-icon-7-stroke';	src:url('../fonts/pe-icon-7/Pe-icon-7-stroke.eot?d7yf1v');	src:url('../fonts/pe-icon-7/Pe-icon-7-stroke.eot?#iefixd7yf1v') format('embedded-opentype'),		url('../fonts/pe-icon-7/Pe-icon-7-stroke.woff?d7yf1v') format('woff'),		url('../fonts/pe-icon-7/Pe-icon-7-stroke.ttf?d7yf1v') format('truetype'),		url('../fonts/pe-icon-7/Pe-icon-7-stroke.svg?d7yf1v#Pe-icon-7-stroke') format('svg');	font-weight: normal;	font-style: normal;}[class^="pe-7s-"], [class*=" pe-7s-"] {	font-family: 'Pe-icon-7-stroke';	speak: none;	font-style: normal;	font-weight: normal;	font-variant: normal;	text-transform: none;	line-height: 1;	/* Better Font Rendering =========== */	-webkit-font-smoothing: antialiased;	-moz-osx-font-smoothing: grayscale;}.pe-7s-album:before {	content: "\e6aa";}.pe-7s-arc:before {	content: "\e6ab";}.pe-7s-back-2:before {	content: "\e6ac";}.pe-7s-bandaid:before {	content: "\e6ad";}.pe-7s-car:before {	content: "\e6ae";}.pe-7s-diamond:before {	content: "\e6af";}.pe-7s-door-lock:before {	content: "\e6b0";}.pe-7s-eyedropper:before {	content: "\e6b1";}.pe-7s-female:before {	content: "\e6b2";}.pe-7s-gym:before {	content: "\e6b3";}.pe-7s-hammer:before {	content: "\e6b4";}.pe-7s-headphones:before {	content: "\e6b5";}.pe-7s-helm:before {	content: "\e6b6";}.pe-7s-hourglass:before {	content: "\e6b7";}.pe-7s-leaf:before {	content: "\e6b8";}.pe-7s-magic-wand:before {	content: "\e6b9";}.pe-7s-male:before {	content: "\e6ba";}.pe-7s-map-2:before {	content: "\e6bb";}.pe-7s-next-2:before {	content: "\e6bc";}.pe-7s-paint-bucket:before {	content


11＆d}S␙f\x18\tθ",
	}, { // 4858
		mask: EncodeSlash | EncodeRightPeriod | EncodeRightCrLfHtVt,
		in:   ".\n␝␜］υ?，\x14\r０wμ＄␃ｂ\x1b］ςν\x11＆d}S␙f\x18\nθ",
		out:  ".\n␝␜］υ?，\x14\r０wμ＄␃ｂ\x1b］ςν\x11＆d}S␙f\x18\nθ",
	}, { // 4859
		mask: EncodeSlash | EncodeRightPeriod | EncodeRightCrLfHtVt,
		in:   "．\n␝␜］υ?，\x14\r０wμ＄␃ｂ\x1b］ςν\x11＆d}S␙f\x18\nθ",
		out:  "．\n␝␜］υ?，\x14\r０wμ＄␃ｂ\x1b］ςν\x11＆d}S␙f\x18\nθ",
	}, { // 4860
		mask: EncodeSlash | EncodeRightPeriod | EncodeRightCrLfHtVt,
		in:   ".\v␝␜］υ?，\x14\r０wμ＄␃ｂ\x1b］ςν\x11＆d}S␙f\x18\vθ",
		out:  ".\v␝␜］υ?，\x14\r０wμ＄␃ｂ\x1b］ςν\x11＆d}S␙f\x18\vθ",
	}, { // 4861
		mask: EncodeSlash | EncodeRightPeriod | EncodeRightCrLfHtVt,
		in:   "．\v␝␜］υ?，\x14\r０wμ＄␃ｂ\x1b］ςν\x11＆d}S␙f\x18\vθ",
		out:  "．\v␝␜］υ?，\x14\r０wμ＄␃ｂ\x1b］ςν\x11＆d}S␙f\x18\vθ",
	}, { // 4862
		mask: EncodeSlash | EncodeRightPeriod | EncodeRightCrLfHtVt,
		in:   ".\r␝␜］υ?，\x14\r０wμ＄␃ｂ\x1b］ςν\x11＆d}S␙f\x18\rθ",
		out:  ".\r␝␜］υ?，\x14\r０wμ＄␃ｂ\x1b］ςν\x11＆d}S␙f\x18\rθ",
	}, { // 4863
		mask: EncodeSlash | EncodeRightPeriod | EncodeRightCrLfHtVt,
		in:   "．\r␝␜］υ?，\x14\r０wμ＄␃ｂ\x1b］ςν\x11＆d}S␙f\x18\rθ",
		out:  "．\r␝␜］υ?，\x14\r０wμ＄␃ｂ\x1b］ςν\x11＆d}S␙f\x18\rθ",
	}, { // 4864
		mask: EncodeSlash | En


0)),
        ("NotNestedGre", (0, 0)),
        ("LessEqualG", (0, 0)),
        ("iff", (0, 0)),
        ("OpenCurlyDoubleQu", (0, 0)),
        ("LeftVectorBa", (0, 0)),
        ("LeftUp", (0, 0)),
        ("oelig;", (339, 0)),
        ("uwangl", (0, 0)),
        ("SmallCircl", (0, 0)),
        ("llcorner;", (8990, 0)),
        ("olcir", (0, 0)),
        ("DiacriticalT", (0, 0)),
        ("RuleDelay", (0, 0)),
        ("NotLessSlantEqual;", (10877, 824)),
        ("leftrightsquig", (0, 0)),
        ("blacktriangleri", (0, 0)),
        ("smallsetminu", (0, 0)),
        ("jma", (0, 0)),
        ("dcaron", (0, 0)),
        ("seswar", (0, 0)),
        ("EmptyVery", (0, 0)),
        ("CloseCur", (0, 0)),
        ("VerticalBar;", (8739, 0)),
        ("Ls", (0, 0)),
        ("wed", (0, 0)),
        ("dzigrarr", (0, 0)),
        ("tau;", (964, 0)),
        ("Larr;", (8606, 0)),
        ("midc", (0, 0)),
        ("CapitalDifferentia", (0, 0)),
        ("boxUL", (0, 0)),
        ("boxvL", (0, 0)),
        ("RightDou", (0, 0)),
        ("Dscr;", (119967, 0)),
        ("NotReverseE", (0, 0)),
        ("rightthreetimes;", (8908, 0)),
        ("ShortRi", (0, 0)),
        ("Zscr;", (119989, 0)),
        ("ra", (0, 0)),
        ("gesles", (0, 0)),
        ("nleqslan", (0, 0)),
        ("ring;", (730, 0)),
        ("SquareSupersetEq", (0, 0)),
        ("olcross;", (10683, 0)),
        ("triplus;", (10809, 0)),
        ("sqcaps", (0, 0)),
        ("Ccaron;", (268, 0)),
        ("nequ", (0, 0)),
        ("upharp", (0, 0)),
        ("Sub", (0, 0)),
        ("Minus", (0, 0)),
        ("NotLeftTriangleBa", (0, 0)),
        ("OverParen", (0, 0)),
        ("OverParent", (0, 0)),
        ("Poincareplane", (0, 0)),
        ("Ntil", (0, 0)),
        ("swarr", (0, 0)),
        ("p", (0, 0)),
        ("supdot;", (10942, 0)),
        ("mi", (0, 0)),
        ("Rcy", (0, 0)),
        ("Hstro", (0, 0)),
        ("DoubleContourIntegr", (0, 0)),
        ("Icirc", (206, 0)),
        ("per", (0, 0)),
        ("icirc;", (238, 0)),
        ("boxti", (0, 0)),
        ("hell", (0, 0)),
        ("rharu", (0, 0)),
        ("Uring;", (366, 0)),
        ("Sqrt", (0, 0)),
        ("sc;", (8827, 0)),
        ("Emac", (0, 0)),
        ("SHCHcy", (0, 0)),
        ("Pop", (0, 0)),
        ("longr", (0, 0)),
        ("CHcy;", (1063, 0)),
        ("Sfr;", (120086, 0)),
        ("nright", (0, 0)),
        ("ncongdot", (0, 0)),
        ("thka", (0, 0)),
        ("back", (0, 0)),
        ("NotGre", (0, 0)),
        ("DownLeftTeeVect


Text.isTwitterUrl()) {
                            intent.putExtra(Intent.EXTRA_TEXT, clearExtraParams(extraText))
                        }
                    }
                }
            }

        MethodFinder.fromClass(ClipData::class.java).filterByName("newPlainText")
            .filterByParamTypes(CharSequence::class.java, CharSequence::class.java).first()
            .createHook {
                beforeMeasure(name) { param ->
                    val text = (param.args[1] as CharSequence).toString()
                    if (text.isTwitterUrl()) {
                        param.args[1] = clearExtraParams(text)
                    }
                }
            }

        MethodFinder.fromClass(loadClass("com.twitter.deeplink.implementation.UrlInterpreterActivity"))
            .filterByName("onCreate").first().createHook {
                beforeMeasure(name) { param ->
                    val intent = (param.thisObject as Activity).intent
                    val url = intent.data.toString()
                    if (url.isTwitterUrl()) {
                        val newUrl = clearExtraParams(url)
                        intent.data = Uri.parse(newUrl)
                    }
                }
            }
    }

    private fun String.isTwitterUrl(): Boolean {
        val uri = Uri.parse(this)
        return (uri.scheme == "https" || uri.scheme == "http") && (uri.host == "twitter.com" || uri.host == "www.twitter.com" || uri.host == "mobile.twitter.com")
    }

    private fun String.hasExtraParam(): Boolean {
        return this == "t" || this == "s"
    }

    private fun clearExtraParams(url: String): String {
        Log.d("Handle Url before: $url")
        val oldUri = Uri.parse(url)
        val newUri = oldUri.buildUpon().clearQuery()
        oldUri.queryParameterNames.forEach {
            if (it.hasExtraParam()) {
                return@forEach
            }
            newUri.appendQueryParameter(it, oldUri.getQueryParameter(it))
        }
        val newUrl = newUri.build().toString()
        Log.d("Handle Url after: $newUrl")
        return newUrl
    }
}

package io.github.drumber.kitsune.util

import org.assertj.core.api.Assertions.assertThat
import org.junit.Test
import java.time.ZoneOffset
import java.util.Calendar
import java.util.TimeZone

class DateUtilTest {

    @Test
    fun shouldFormatISODate() {
        // given
        val expectedDateString = "2023-11-12T12:42:12.123Z"
        val time = Calendar.getInstance().apply {
            set(2023, Calendar.NOVEMBER, 12, 13, 42, 12)
            set(Calendar.MILLISECOND, 123)
            timeZone = TimeZone.getTimeZone(ZoneOffset.of("+1"))
        }

        // when
        val dateString = time.formatUtcDate()

        // then
        assertThat(dateString).isEqualTo(expectedDateString)
    }

    @Test
    fun shouldParseISODate() {
        // given
        val time = Calendar.getInstance().apply {
            set(2023, Calendar.NOVEMBER, 12, 13, 42, 12)
            set(Calendar.MILLISECOND, 123)
            timeZone = TimeZone.getTimeZone(ZoneOffset.of("+1"))
        }.time
        val isoDateString = time.formatUtcDate()

        // when
        val parsedDate = isoDateString.parseUtcDate()

        // then
        assertThat(parsedDate).isEqualTo(time)
    }

}
package io.github.drumber.kitsune.archunit

import com.tngtech.archunit.base.DescribedPredicate.not
import com.tngtech.archunit.core.domain.JavaClass.Predicates.resideInAPackage
import com.tngtech.archunit.core.domain.JavaClass.Predicates.resideInAnyPackage
import com.tngtech.archunit.core.domain.JavaClass.Predicates.simpleNameEndingWith
import com.tngte


/*--------------------------------------------------------------------
  (C) Copyright 2006-2015 Barcelona Supercomputing Center
                          Centro Nacional de Supercomputacion

  This file is part of Mercurium C/C++ source-to-source compiler.

  See AUTHORS file in the top level directory for information
  regarding developers and contributors.

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

  Mercurium C/C++ source-to-source compiler is distributed in the hope
  that it will be useful, but WITHOUT ANY WARRANTY; without even the
  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  PURPOSE.  See the GNU Lesser General Public License for more
  details.

  You should have received a copy of the GNU Lesser General Public
  License along with Mercurium C/C++ source-to-source compiler; if
  not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  Cambridge, MA 02139, USA.
--------------------------------------------------------------------*/

#ifndef CXX_SYMBOL_DEEP_COPY_H
#define CXX_SYMBOL_DEEP_COPY_H

#include "cxx-macros.h"
#include "cxx-nodecl-deep-copy-fwd.h"
#include "cxx-scope.h"

MCXX_BEGIN_DECLS

void symbol_deep_copy(
        scope_entry_t* dest,
        scope_entry_t* source,
        const decl_context_t* new_decl_context,
        symbol_map_t* symbol_map);

void symbol_deep_copy_compute_maps(
        scope_entry_t* dest,
        scope_entry_t* source,
        const decl_context_t* new_decl_context,
        symbol_map_t* symbol_map,
        nodecl_deep_copy_map_t* nodecl_deep_copy_map,
        symbol_deep_copy_map_t* symbol_deep_copy_map);

MCXX_END_DECLS

#endif


s;
}

.social-menu ul li .fa:hover {
  color: #ffffff;
}

.social-menu ul li a {
  position: relative;
  display: block;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background-color: white;
  text-align: center;
  transition: 0.5s;
  transform: translate(0, 0px);
  box-shadow: 0px 7px 5px rgba(0, 0, 0, 0.5);
}

.social-menu ul li a:hover {
  transform: rotate(0deg) skew(0deg) translate(0, -10px);
}

.social-menu ul li:nth-child(1) a:hover {
  background-color: #3b5999;
}

.social-menu ul li:nth-child(2) a:hover {
  background-color: #55acee;
}

.social-menu ul li:nth-child(3) a:hover {
  background-color: #e4405f;
}

.social-menu ul li:nth-child(4) a:hover {
  background-color: #cd201f;
}

.social-menu ul li:nth-child(5) a:hover {
  background-color: #0077b5;
}

/* =================== NAVBAR ===================== *

nav {
  /*background: #071f30;*/
/*background: red;
  width: 20vw;
  height: 5rem;
  position: fixed;
  top: 0;
  z-index: 11;
  text-transform: uppercase;
  margin-top: 30px;
}

nav li {
  margin: -10px;
}

/* change navbar styles on scroll using javascript */
/*.window-scroll {
  background: #071F30;
  box-shadow: 0 1rem 2rem rgba(0, 0, 0, 0.2);
}

.nav__container {
  height: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.nav__container a h4 {
  height: 100%;
  display: flex;
  padding-left: 70px;
  margin-top: 10px;
  align-items: center;
}

.logo {
  max-height: 2;
  max-width: 2;

}

nav button {
  display: none;

}

.nav__menu {
  display: flex;
  align-items: center;
  gap: 4rem;
}

.nav__menu a {
  font-size: 0.9rem;
  /*transition: var(--transition);*/
/*}

.nav__menu li a{
  display: inline-block;
}

.nav__menu a:hover {
  color: #ff3c78;
}

.nav__menu a.signup {
  display: inline-block;
  width: 140px;
  height: 50px;
  line-height: 50px;
  background-color: transparent;
  color: aqua;
  border: 2px solid rgba(255, 255, 255, 0.488);
  text-align: center;
  font-size: 0.9rem;
  border-radius: 30px;
  transition: var(--transition);
}

.nav__menu a.signup:hover {
  background: transparent;
  color: var(--color-white);
  border-color: var(--color-white);
  box-shadow: 5px 5px 5px orange;
}

.para1 {
  font-size: 1.5rem;
  line-height: 95%;
  letter-spacing: normal;
}

.landingpg {
  height: 760px;
}

.grad1 .pge1 {

  padding-top: 55px;
  font-weight: 400;
  font-size: 4rem;
  line-height: 90%;
  letter-spacing: -0.2rem;

}

/* =================== HEADER ===================== */
/*header {


案局）。

   3.6月17日，县委发出《认真发动广大民兵积极投入社会主义文化大革命运动》的通知（柳江县志）。

   6月20日，县直机关单位开始“声讨”邓拓、吴晗、廖沫沙、“三家村”活动。并要结合揭发本地区、本单位的“资产阶级代表人物”（柳江县志）。

   6月22日，刘伯生在文化宫向县直机关干部职工、师生传达韦国清《关于文化大革命运动的报告》。决定抽调23人组成6个工作组，分别进驻各学校领导“文化大革命”。刘传贵带领工作组进驻柳江中学，柳州地委派了一个工作组到我县，组长杨清泉，以及王荣华等人。

   4.6月23日，经地委批准，柳江县“文革”领导小组成立。组长刘伯生、副组长刘传贵、刘云虎，下设办公室，刘传贵兼办公室主任，工作人员31人（县档案局）。

   5.7月6日，县直党总支召开县直党、团员大会，号召联系本战线、本单位实际，揭发批判本战线本单位的“资产阶级代表人物”。会后，县人委揭发民主人士、统战对象、副科长刘尚杨为“资产阶级代表人物”。文化战线揭发蒋品然、梁鲁为“资产阶级代表人物”（档案局）。

   6.7月7日，全县公办教师1111人集中柳江完中，由工作组长刘传贵主持搞“文化大革命”，到8月3日结束，历时26天。7月24日，对共产党员、小学校长黄树恩进行批判，黄进行驳斥和反抗。当众被以所谓“现行反革命”宣布拘留。8月3日在大会上宣布开除党籍、公职、逮捕法办（同年平反）。8月7日，在完中又集中全县民办教师574人搞“文化大革命”，历时20天，两期共集训公、民办教师1685人，共揭发批判“五种人”（“五种人”即：1.原被带帽的地富反坏右分子；2.反党反社会主义、反毛泽东思想的“三反”分子；3.漏网的四类分子�


name="astro-view-transitions-fallback" content="animate">  <svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" data-astro-cid-sckkx6r4><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z" data-astro-cid-sckkx6r4></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm" data-astro-cid-sckkx6r4></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body" data-astro-cid-sckkx6r4></path></svg>

  English  German


	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ZoneIngressInsight) Reset() {
	*x = ZoneIngressInsight{}
	mi := &file_api_mesh_v1alpha1_zone_ingress_insight_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ZoneIngressInsight) ProtoMessage() {}

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

// Deprecated: Use ZoneIngressInsight.ProtoReflect.Descriptor instead.
func (*ZoneIngressInsight) Descriptor() ([]byte, []int) {
	return file_api_mesh_v1alpha1_zone_ingress_insight_proto_rawDescGZIP(), []int{0}
}

func (x *ZoneIngressInsight) GetSubscriptions() []*DiscoverySubscription {
	if x != nil {
		return x.Subscriptions
	}
	return nil
}

func (x *ZoneIngressInsight) GetMetadata() *structpb.Struct {
	if x != nil {
		return x.Metadata
	}
	return nil
}

var File_api_mesh_v1alpha1_zone_ingress_insight_proto protoreflect.FileDescriptor

const file_api_mesh_v1alpha1_zone_ingress_insight_proto_rawDesc = "" +
	"\n" +
	",api/mesh/v1alpha1/zone_ingress_insight.proto\x12\x12kuma.mesh.v1alpha1\x1a\x16api/mesh/options.proto\x1a)api/mesh/v1alpha1/dataplane_insight.proto\x1a\x1cgoogle/protobuf/struct.proto\"\x8e\x02\n" +
	"\x12ZoneIngressInsight\x12O\n" +
	"\rsubscriptions\x18\x01 \x03(\v2).kuma.mesh.v1alpha1.DiscoverySubscriptionR\rsubscriptions\x123\n" +
	"\bmetadata\x18\x02 \x01(\v2\x17.google.protobuf.StructR\bmetadata:r\xaa\x8c\x89\xa6\x01l\n" +
	"\x1aZoneIngressInsightResource\x12\x12ZoneIngressInsight\x18\x01\"\x04mesh:\x18\n" +
	"\x14zone-ingress-insight\x18\x01R\x16model.ZoneToGlobalFlagX\x01B*Z(github.com/kumahq/kuma/api/mesh/v1alpha1b\x06proto3"

var (
	file_api_mesh_v1alpha1_zone_ingress_insight_proto_rawDescOnce sync.Once
	file_api_mesh_v1alpha1_zone_ingress_insight_proto_rawDescData []byte
)

func file_api_mesh_v1alpha1_zone_ingress_insight_proto_rawDescGZIP() []byte {
	file_api_mesh_v1alpha1_zone_ingress_insight_proto_rawDescOnce.Do(func() {
		file_api_mesh_v1alpha1_zone_ingress_insight_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_mesh_v1alpha1_zone_ingress_insight_proto_rawDesc)


OrEqual', () => {

  const cases:any = [
    ['1', '2', true],
    ['-10', '-20', false],
    ['1', 1, true],
    ['-100', '100', true],
    ['-0', 0, true],
    ['1.00000001', '1.00000002', true],
    ['1.00000003', '1.00000002', false],
  ];

  for (const cas of cases) {

    it(`${cas[0]}.isLesserThanOrEqual(${cas[1]}) === true`, () => {

      const x = new Money(cas[0], 'AUD');
      expect(x.isLesserThanOrEqual(cas[1])).to.equal(cas[2]);

    });

  }

});

describe('Money.isGreaterThanOrEqual', () => {

  const cases:any = [
    ['1', '2', false],
    ['-10', '-20', true],
    ['1', 1, true],
    ['-100', '100', false],
    ['-0', 0, true],
    ['1.00000001', '1.00000002', false],
    ['1.00000003', '1.00000002', true],
  ];

  for (const cas of cases) {

    it(`${cas[0]}.isGreaterThanOrEqual(${cas[1]}) === true`, () => {

      const x = new Money(cas[0], 'AUD');
      expect(x.isGreaterThanOrEqual(cas[1])).to.equal(cas[2]);

    });

  }

});
import { Either } from 'purify-ts/Either';

import { IComicStripService } from '../domain/IComicStripService';
import { ComicStrip } from '../domain/ComicStrip';
import { ComicStripFailure } from '../domain/ComicStripFailure';
import { IComicStripRepository } from '../domain/IComicStripRepository';
import { GetComicStripOptions } from '../domain/sharedTypes';

interface Dependencies {
  comicStripRepository: IComicStripRepository;
}

export class ComicStripServiceImpl implements IComicStripService {
  comicStripRepository: IComicStripRepository;

  constructor({ comicStripRepository }: Dependencies) {
    this.comicStripRepository = comicStripRepository;
  }

  getComicStrip(
    options: GetComicStripOptions
  ): Promise<Either<ComicStripFailure, ComicStrip>> {
    return this.comicStripRepository.getComicStrip(options);
  }

  getRandomComicStrip(
    maxComicStripNumber: string
  ): Promise<Either<ComicStripFailure, ComicStrip>> {
    // in the range [1, maxComicStripNumber]
    const randomComicStripNumber = `${Math.floor(
      Math.random() * Number(maxComicStripNumber) + 1
    )}`;

    return this.getComicStrip({ comicNumber: randomComicStripNumber });
  }

  getLatestComicStrip(): Promise<Either<ComicStripFailure, ComicStrip>> {
    return this.comicStripRepository.getLatestComicStrip();
  }
}
import { createTransport, Transporter, TransportOptions } from 'nodemailer'

import {
    emailTemplates,
    MailTemplatesOpts,
    IMailTemplate,
} from './EmailTemplates'
import {
    IMailGunMailCredentials,
    IBasicMailCredentials,
    IOAuth2MailCredentials,
} from './MailCredentialsService'
import logging from '../../utils/logging'
import { formattedUUID } from '../../utils'

interface IMail extends IMailTemplate {
    to: string
    html: string
    subject: string
}

interface ITemplateMail {
    to: string
    params: {
        [key: string]: any
    }
}

export type Credentials =
    | IMailGunMailCredentials
    | IBasicMailCredentials
    | IOAuth2MailCredentials
    | TransportOptions

export class MailService {
    transporter: Transporter

    constructor(credentials: Credentials) {
        this.transporter = createTransport(credentials)
        this.verifyTransport()
    }

    verifyTra


1px 0px;-webkit-box-shadow:rgba(34,34,34,0.25) 0px 1px 1px 0px;box-shadow:rgba(34,34,34,0.25) 0px 1px 1px 0px;background:#FFF;border:none;padding:0;text-decoration:none}.nav-area .check-all{margin-bottom:1.5em}.nav-area .check-all{font-size:0.875em;line-height:1.71429em}.nav-area .check-all label{color:#006280;font-family:"OpenSansSemibold",Arial,sans-serif;cursor:pointer}.nav-area .check-all input[type="checkbox"]{margin-right:10px}.nav-area .date-picker-block{margin-top:2.25em}.nav-area .date-picker-block .title{vertical-align:middle}.nav-area .date-picker-block .title:before{font-size:1.125em;line-height:1.33333em;font-family:"rsk-icons-1.1";speak:none;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;content:"";color:#B3B3B3;margin-right:10px}.nav-area .date-picker-block .title:before{text-shadow:#fff 0 1px 0}.nav-area .date-picker-block .date-span label{display:block;text-transform:uppercase;font-family:"OpenSansBold",Arial,sans-serif;font-size:0.875em;line-height:1.71429em}#hidden-menu-content .date-picker-block{margin-top:2em}.targetgroups .title{border:none;box-shadow:none;margin-bottom:0em;vertical-align:middle}.targetgroups .title:before{font-size:1.125em;line-height:1.33333em;font-family:"rsk-icons-1.1";speak:none;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;content:"";color:#B3B3B3;margin-right:10px}.targetgroups .title:before{text-shadow:#fff 0 1px 0}.news .title{vertical-align:middle}.news .title:before{font-size:1.125em;line-height:1.33333em;font-family:"rsk-icons-1.1";speak:none;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;content:"";color:#B3B3B3;margin-right:10px}.news .title:before{text-shadow:#fff 0 1px 0}.prints .title{vertical-align:middle}.prints .title:before{font-size:1.125em;line-height:1.33333em;font-family:"rsk-icons-1.1";speak:none;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;content:"";color:#B3B3B3;margin-right:10px}.prints .title:before{text-shadow:#fff 0 1px 0}.calendar .title{vertical-align:middle}.calendar .title:before{font-size:1.125em;line-height:1.33333em;font-family:"rsk-icons-1.1";speak:none;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;content:"";color:#B3B3B3;margin-right:10p


88  38 7F 00 3C */	addi r3, r31, 0x3c
/* 8045FE4C 0045CD8C  38 BF 00 18 */	addi r5, r31, 0x18
/* 8045FE50 0045CD90  38 80 00 CF */	li r4, 0xcf
/* 8045FE54 0045CD94  4C C6 31 82 */	crclr 6
/* 8045FE58 0045CD98  4B BC A7 E9 */	bl panic_f__12JUTExceptionFPCciPCce
.L_8045FE5C:
/* 8045FE5C 0045CD9C  80 7E 00 04 */	lwz r3, 4(r30)
/* 8045FE60 0045CDA0  83 C3 00 04 */	lwz r30, 4(r3)
/* 8045FE64 0045CDA4  28 1E 00 00 */	cmplwi r30, 0
/* 8045FE68 0045CDA8  40 82 00 18 */	bne .L_8045FE80
/* 8045FE6C 0045CDAC  38 7F 00 3C */	addi r3, r31, 0x3c
/* 8045FE70 0045CDB0  38 BF 00 98 */	addi r5, r31, 0x98
/* 8045FE74 0045CDB4  38 80 00 D1 */	li r4, 0xd1
/* 8045FE78 0045CDB8  4C C6 31 82 */	crclr 6
/* 8045FE7C 0045CDBC  4B BC A7 C5 */	bl panic_f__12JUTExceptionFPCciPCce
.L_8045FE80:
/* 8045FE80 0045CDC0  7F C3 F3 78 */	mr r3, r30
/* 8045FE84 0045CDC4  81 9E 00 00 */	lwz r12, 0(r30)
/* 8045FE88 0045CDC8  81 8C 00 40 */	lwz r12, 0x40(r12)
/* 8045FE8C 0045CDCC  7D 89 03 A6 */	mtctr r12
/* 8045FE90 0045CDD0  4E 80 04 21 */	bctrl
/* 8045FE94 0045CDD4  54 60 06 3F */	clrlwi. r0, r3, 0x18
/* 8045FE98 0045CDD8  41 82 00 08 */	beq .L_8045FEA0
/* 8045FE9C 0045CDDC  48 00 00 08 */	b .L_8045FEA4
.L_8045FEA0:
/* 8045FEA0 0045CDE0  3B C0 00 00 */	li r30, 0
.L_8045FEA4:
/* 8045FEA4 0045CDE4  28 1E 00 00 */	cmplwi r30, 0
/* 8045FEA8 0045CDE8  41 82 00 10 */	beq .L_8045FEB8
/* 8045FEAC 0045CDEC  38 7E 00 38 */	addi r3, r30, 0x38
/* 8045FEB0 0045CDF0  38 9D 00 EC */	addi r4, r29, 0xec
/* 8045FEB4 0045CDF4  4B BC 6D 71 */	bl remove__10JSUPtrListFP10JSUPtrLink
.L_8045FEB8:
/* 8045FEB8 0045CDF8  88 1D 00 FE */	lbz r0, 0xfe(r29)
/* 8045FEBC 0045CDFC  28 00 00 00 */	cmplwi r0, 0
/* 8045FEC0 0045CE00  41 82 00 40 */	beq .L_8045FF00
/* 8045FEC4 0045CE04  38 60 FF FF */	li r3, -1
/* 8045FEC8 0045CE08  38 00 00 00 */	li r0, 0
/* 8045FECC 0045CE0C  90 7D 00 E8 */	stw r3, 0xe8(r2


	pop {r4, r5, r6, pc}
_021DC974:
	ldr r0, [r4, #0x14]
	cmp r0, #2
	beq _021DC97E
	mov r0, #0
	pop {r4, r5, r6, pc}
_021DC97E:
	ldr r0, [r4, #0x20]
	mov r2, #4
	bl SysTask_CreateOnMainQueue
	ldr r1, [r4, #0xc]
	ldr r3, _021DCA34 ; =0x00000F48
	str r0, [r1, r3]
	ldr r0, [r4, #0xc]
	ldr r0, [r0, r3]
	cmp r0, #0
	bne _021DC998
	mov r0, #0
	pop {r4, r5, r6, pc}
_021DC998:
	mov r0, #3
	str r0, [r4, #0x14]
	add r0, r3, #0
	ldr r1, [r4, #0xc]
	add r0, #0x1a
	strh r5, [r1, r0]
	add r0, r3, #0
	ldr r1, [r4, #0xc]
	mov r2, #0
	add r0, #0x1e
	strh r2, [r1, r0]
	ldr r1, [r4, #0xc]
	add r0, r1, #0
	add r0, #0xc
	str r0, [r1, #0x40]
	ldr r1, [r4, #0xc]
	add r0, r1, #0
	add r0, #0xc
	str r0, [r1, #0x44]
	add r0, r3, #0
	ldr r1, [r4, #0xc]
	add r0, #0x1c
	strh r6, [r1, r0]
	add r0, r3, #0
	ldr r1, [r4, #0xc]
	add r0, #0x14
	str r2, [r1, r0]
	ldr r1, [r4, #0xc]
	add r0, r3, #4
	ldr r6, _021DCA38 ; =NNS_G3dGlb + 0x258
	add r5, r1, r0
	ldmia r6!, {r0, r1}
	stmia r5!, {r0, r1}
	ldr r0, [r6]
	str r0, [r5]
	ldr r1, [r4, #8]
	cmp r1, #0
	ble _021DC9FE
	mov r0, #4
	bl AllocFromHeap
	ldr r2, [r4, #0xc]
	ldr r1, _021DCA3C ; =0x00000F58
	str r0, [r2, r1]
	ldr r0, [r4, #0xc]
	ldr r2, [r4, #8]
	ldr r0, [r0, r1]
	mov r1, #0
	bl memset
	b _021DCA04
_021DC9FE:
	ldr r0, [r4, #0xc]
	add r3, #0x10
	str r2, [r0, r3]
_021DCA04:
	mov r0, #0
	ldr r1, [r4, #4]
	mvn r0, r0
	cmp r1, r0
	beq _021DCA30
	mov r0, #4
	mov r1, #0
	bl GfGfx_EngineATogglePlanes
	ldr r2, _021DCA40 ; =0x0400000C
	mov r1, #3
	ldrh r3, [r2]
	mov r0, #1
	bic r3


#include <redirect.h>

#include <pipe.h>

#include <assert.h>
#include <fcntl.h>
#include <stdio.h>

static const char *DEVNULL = "/dev/null";

static const struct pipe_options CHILD_OPTIONS = { .nonblocking = false };
static const struct pipe_options PARENT_OPTIONS = { .nonblocking = true };

REPROC_ERROR redirect_pipe(int *parent, int *child, REPROC_STREAM stream)
{
  assert(parent);
  assert(child);

  return stream == REPROC_STREAM_IN
             ? pipe_init(child, CHILD_OPTIONS, parent, PARENT_OPTIONS)
             : pipe_init(parent, PARENT_OPTIONS, child, CHILD_OPTIONS);
}

REPROC_ERROR redirect_inherit(int *parent, int *child, REPROC_STREAM stream)
{
  assert(parent);
  assert(child);

  FILE *file = stream == REPROC_STREAM_IN
                   ? stdin
                   : stream == REPROC_STREAM_OUT ? stdout : stderr;

  int fd = fileno(file);
  if (fd < 0) {
    return REPROC_ERROR_STREAM_CLOSED;
  }

  int r = fcntl(fd, F_DUPFD_CLOEXEC, 0);
  if (r < 0) {
    return REPROC_ERROR_SYSTEM;
  }

  *parent = HANDLE_INVALID;
  *child = r;

  return REPROC_SUCCESS;
}

REPROC_ERROR redirect_discard(int *parent, int *child, REPROC_STREAM stream)
{
  assert(parent);
  assert(child);

  int mode = stream == REPROC_STREAM_IN ? O_RDONLY : O_WRONLY;

  int r = open(DEVNULL, mode | O_CLOEXEC);
  if (r < 0) {
    return REPROC_ERROR_SYSTEM;
  }

  *parent = HANDLE_INVALID;
  *child = r;

  return REPROC_SUCCESS;
}


риптовалют не владеют собственными ключами.
\n
Преимущества криптовалюты, которые действительно отличают ее от традиционной финансовой системы, реализуются только тогда, когда у вас есть полное хранение ваших средств - у вас есть закрытые ключи от ваших монет.
\n
В этом коротком посте мы расскажем о том, почему вы должны хранить свои собственные ключи, и приведем несколько простых способов самостоятельного хранения Monero уже сегодня.
';

  @override
  String get knowledge250Sbkeys250Sb1250Sbtext => '
Это сохраняет конфиденциальность, которую Monero предоставляет пользователям
\n
Один из наиболее часто неправильно понимаемых аспектов самостоятельного хранения в Monero заключается в том, что если вы не владеете собственными ключами, вы практически не получаете выгоды от конфиденциальности, которую предлагает Monero. Поскольку отправитель транзакции имеет полную информацию об истинных расходах, сумме и адресе получателя, если вы не сами отправляете транзакцию, а поручаете это бирже или хранителю, они имеют \"полную\" информацию о том, как вы тратите свои Monero.
\n
К счастью, после отправки средств вступают в силу гарантии конфиденциальности Monero, которые обеспечивают строгую \"секретность на будущее\", но бирже или хранителю будет ясно, куда вы отправили средства и сколько вы отправили изначально.
\n
Это обеспечивает невероятную устойчивость Monero к цензуре
\n
Одним из основополагающих аспектов Monero является обеспечение устойчивости транзакций к цензуре - возможность совершать транзакции, которые могут быть одобрены или не одобрены \"ими\", независимо от того, что они пытаются сделать, чтобы остановить вас. Хотя необходимость противостояния цензуре может быть немного упущена теми из нас, кто живет в \"свободных\" странах, быстрое сползание к авторитаризму и политическому упадку во многих частях мира с каждым днем делает все более очевидным, что нам нужен способ совершать транзакции независимо от разрешения правительства.
\n
Однако если у вас нет собственных ключей, правительство


;
  opacity: 1;
  transition: opacity 0.75s ease;

  &.loading-screen-fade {
    opacity: 0;
  }

  &.loading-screen-hide {
    display: none;
  }

  .logo {
    position: absolute;
    background-image: url(../images/logo.png);
    height: @loading-screen-logo-size;
    width: @loading-screen-logo-size;
    background-size: @loading-screen-logo-size @loading-screen-logo-size;
    top: ~"calc(50% - @{loading-screen-logo-size}/2)";
    left: ~"calc(50% - @{loading-screen-logo-size}/2)";
  }

  .logo.breathe {
    animation-name: logo-breathe;
    animation-duration: 1.8s;
    animation-delay: .2s;
    animation-timing-function: cubic-bezier(.73, .005, .42, 1.005);
    animation-iteration-count: infinite;
    animation-direction: alternate;
  }
}
/*
 * Create Tweet Button
 */

.create-button {
  position: absolute;
  top: 25px;
  right: 15px;
  z-index: 1000;
  border-radius: 100px;
  outline: none;
}

/*
 * Edit and Delete Links
 */

.link {
  cursor: pointer;
  margin-right: 16px;
}

/*
 * Feed
 */

.feed .title {
  text-align: center;
}

.feed .tweets {
  margin-top: 32px;
}

.feed .pagination {
  text-align: center;
}

.feed nav {
  text-align: center;
}

/*
 * Filter
 */

.filter {
  marginTop: 20px;
}

/*
 * Header
 */

.header .container {
  position: relative;
}

/*
 * Footer
 */

.footer {
  text-align: center;
  margin-top: 32px;
  margin-bottom: 64px;
}

.footer button {
  outline: none;
}

/*
 * Profile
 */

.profile {
  position: relative;
  display: block;
  margin-bottom: .75rem;
  background-color: #fff;
  border-radius: .25rem;
  border: 1px solid rgba(0,0,0,.125);
  margin-top: 20px;
}

.profile .card-block {
  padding: 1.25rem
}

.profile .avatar {
  width: 48px;
  position: absolute;
  top: -24px;
  left: calc(50% - 24px);
  border: 1px solid gray
}

.profile .permissions {
  margin-left: -12px;
}

/*
 * Tweet
 */

.tweet .avatar {
  width: 32px;
  border: 1px solid gray
}

.tweet .image-container {
  display: inline-block;
  vertical-align: top;
  width: 32px
}

.tweet .content-container {
  display: inline-block;
  margin-left: 8px;
  max-width: 85%
}

.tweet .title {
  line-height: 32px;
  display: inline-block
}

.tweet .text {
  margin-bottom: 5px
}

.tweet .timestamp {
  display: inline-block;
  margin-left: 8px;
  color: #999;
  font-size: 14px
}

/*
 * Misc Styles
 */

body {
  padding-bottom: 64px;
}
@-webkit-keyframes logo-breathe {
  from {
    opacity: .2;
    filter: alpha(opacity=20)
  }
  to {
    opacity: 1;
    filter: alpha(opacity=100)
  }
}

@keyframes logo-breathe {
  from {
    opacity:


nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, '  ')\n          );\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case 'number':\n      case 'string':\n      case 'undefined':\n        return true;\n      case 'boolean':\n        return !propValue;\n      case 'object':\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propValue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === 'symbol') {\n      return true;\n    }\n\n    // falsy value can't be a Symbol\n    if (!propValue) {\n      return false;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue['@@toStringTag'] === 'Symbol') {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return 'array';\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return 'function' rather than\n      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return 'object';\n    }\n    if (isSymbo


			const tracks = <PagingTrackObject<PlaylistTrackObject>>(
				playlist.tracks
			)
			tracks.allLoaded = !tracks.next

			playlists[playlist.id] = playlist
			return {
				...playlists,
				[playlist.id]: playlist
			}
		}

		case ADD_TRACKS: {
			const playlistId = action.payload.playlistId
			const playlist = playlists[playlistId]

			const previousTracks = playlist.tracks.items
			const newTracks = action.payload.trackObject
			newTracks.items = [...previousTracks, ...newTracks.items]
			newTracks.allLoaded = !newTracks.next

			return {
				...playlists,
				[playlist.id]: {
					...playlist,
					tracks: newTracks
				}
			}
		}
		default:
			return playlists
	}
}

export default combineReducers({
	playlists: playlistsReducer
})
import { checkoutActionTypes } from "../actions";

import { IAction } from "../../../types/common";
import { IItem } from "../../../types/checkout";

import { couponDiscounts } from "../../constants/couponCodes";
import { pickupSavingsValue } from "../../constants/checkout";
import listOfItems from "../../constants/listOfItems";

const {
  APPLY_COUPON_CODE,
  TOGGLE_PICKUP,
  ADD_ITEM,
  REMOVE_ITEM,
  ITITALIZE_ITEMS,
} = checkoutActionTypes;

export interface ICheckoutPricing {
  taxRate: number;
  tax: number;
  subTotalPrice: number;
  pickupSavings: number;
  couponPercentage: number;
  couponDollar: number;
  totalPrice: number;
}

export interface ICheckoutReducer extends ICheckoutPricing {
  items: IItem[];
  couponCode: string;
  badCouponCode: boolean;
}

export const initialState = {
  items: [],
  couponCode: "",
  taxRate: 0.0975,
  tax: 0,
  subTotalPrice: 0,
  pickupSavings: 0,
  couponPercentage: 0,
  couponDollar: 0,
  totalPrice: 0,
  badCouponCode: false,
} as ICheckoutReducer;

/**
 * Function for applying the coupon code in the reducer.  Looks up the code
 * @param state
 * @param action
 */
const applyCouponCode = (state: ICheckoutReducer, action: IAction) => {
  const couponCode = action.payload.couponCode.toLowerCase();

  const discount = couponDiscounts[couponCode];
  let couponPercentage = 0;
  let couponDollar = 0;
  let error = false;

  if (discount) {
    couponPercentage = discount[couponPercentage]
      ? discount[couponPercentage]
      : 0;
    couponDollar = discount[couponDollar] ? discount[couponDollar] : 0;
  } else {
    error = true;
  }

  const nextState: ICheckoutReducer = {
    ...state,
    subTotalPrice: calculateSubTotal(state.items),
    couponCode: couponCode,
    couponPercentage: couponPercentage,
    couponDollar: couponDollar,
    totalPrice: state.totalPrice,
    badCouponCode: error,
  };

  nextState.totalPrice = calculateTotal(nextState);

  return nextState;
};

/**
 * Function for toggling between picking up or not.
 * @param state
 * @param action
 */
const togglePickup = (state: ICheckoutReducer, action: IAction) => {
  const nextState: ICheckoutReducer = {
    ...state,
    pickupSavings:
      state.pickupSavings === 0
        ? calculatePickupSavings(state.subTotalPrice)


  {
    final value = object.localVersion;
    if (value != null) {
      bytesCount += 3 + value.length * 3;
    }
  }
  return bytesCount;
}

void _tagTranslateInfoSerialize(
  TagTranslateInfo object,
  IsarWriter writer,
  List<int> offsets,
  Map<Type, List<int>> allOffsets,
) {
  writer.writeString(offsets[0], object.localVersion);
}

TagTranslateInfo _tagTranslateInfoDeserialize(
  Id id,
  IsarReader reader,
  List<int> offsets,
  Map<Type, List<int>> allOffsets,
) {
  final object = TagTranslateInfo(
    localVersion: reader.readStringOrNull(offsets[0]),
  );
  object.id = id;
  return object;
}

P _tagTranslateInfoDeserializeProp<P>(
  IsarReader reader,
  int propertyId,
  int offset,
  Map<Type, List<int>> allOffsets,
) {
  switch (propertyId) {
    case 0:
      return (reader.readStringOrNull(offset)) as P;
    default:
      throw IsarError('Unknown property with id $propertyId');
  }
}

Id _tagTranslateInfoGetId(TagTranslateInfo object) {
  return object.id;
}

List<IsarLinkBase<dynamic>> _tagTranslateInfoGetLinks(TagTranslateInfo object) {
  return [];
}

void _tagTranslateInfoAttach(
    IsarCollection<dynamic> col, Id id, TagTranslateInfo object) {
  object.id = id;
}

extension TagTranslateInfoQueryWhereSort
    on QueryBuilder<TagTranslateInfo, TagTranslateInfo, QWhere> {
  QueryBuilder<TagTranslateInfo, TagTranslateInfo, QAfterWhere> anyId() {
    return QueryBuilder.apply(this, (query) {
      return query.addWhereClause(const IdWhereClause.any());
    });
  }
}

extension TagTranslateInfoQueryWhere
    on QueryBuilder<TagTranslateInfo, TagTranslateInfo, QWhereClause> {
  QueryBuilder<TagTranslateInfo, TagTranslateInfo, QAfterWhereClause> idEqualTo(
      Id id) {
    return QueryBuilder.apply(this, (query) {
      return query.addWhereClause(IdWhereClause.between(
        lower: id,
        upper: id,
      ));
    });
  }

  QueryBuilder<TagTranslateInfo, TagTranslateInfo, QAfterWhereClause>
      idNotEqualTo(Id id) {
    return QueryBuilder.apply(this, (query) {
      if (query.whereSort == Sort.asc) {
        return query
            .addWhereClause(
              IdWhereClause.lessThan(upper: id, includeUpper: false),
            )
            .addWhereClause(
              IdWhereClause.greaterThan(lower: id, includeLower: false),
            );
      } else {
        return query
            .addWhereClause(
              IdWhereClause.greaterThan(lower: id, includeLower: false),
            )
            .addWhereClause(
              IdWhereClause.lessThan(upper: id, includeUpper: false),
            );
      }
    });
  }

  QueryBuilder<TagTranslateInfo, TagTranslateInfo, QAfterWhereClause>
      idGreaterThan(Id id, {bool include = false}) {
    return QueryBuilder.apply(this, (query) {
      return query.addWhereClause(
        IdWhereClause.greaterThan(lower: id, includeLower: include),
      );
    });
  }

  QueryBuilder<TagTranslateInfo, TagTranslateInfo, QAfterWhereClause>
      idLessThan(Id id, {bool include = false}) {
    return QueryBuilder.apply(this, (query) {
      return query.addWhereClause(
        IdWhereClause.lessThan(upper: id, includeUpper: include),
      );
    });
  }

  QueryBuilder<TagTranslateInfo, TagTranslateInfo, QAfterWhereClause> idBetween(
    Id lowerId,
    Id upperId, {
    bool includeLower = true,
    bool includ


tton = __webpack_require__(132);\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _buttonGroup = __webpack_require__(170);\n\nvar _buttonGroup2 = _interopRequireDefault(_buttonGroup);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n_button2['default'].Group = _buttonGroup2['default'];\nexports['default'] = _button2['default'];\nmodule.exports = exports['default'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW50ZC9saWIvYnV0dG9uL2luZGV4LmpzPzIyMjciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2J1dHRvbiA9IHJlcXVpcmUoJy4vYnV0dG9uJyk7XG5cbnZhciBfYnV0dG9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2J1dHRvbik7XG5cbnZhciBfYnV0dG9uR3JvdXAgPSByZXF1aXJlKCcuL2J1dHRvbi1ncm91cCcpO1xuXG52YXIgX2J1dHRvbkdyb3VwMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2J1dHRvbkdyb3VwKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5fYnV0dG9uMlsnZGVmYXVsdCddLkdyb3VwID0gX2J1dHRvbkdyb3VwMlsnZGVmYXVsdCddO1xuZXhwb3J0c1snZGVmYXVsdCddID0gX2J1dHRvbjJbJ2RlZmF1bHQnXTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2FudGQvbGliL2J1dHRvbi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNzRcbi8vIG1vZHVsZSBjaHVua3MgPSA4Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E


/*	$NetBSD: tss.h,v 1.5 2008/10/26 00:08:15 mrg Exp $	*/

/*
 * Copyright (c) 2001 Wasabi Systems, Inc.
 * All rights reserved.
 *
 * Written by Frank van der Linden for Wasabi Systems, Inc.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *      This product includes software developed for the NetBSD Project by
 *      Wasabi Systems, Inc.
 * 4. The name of Wasabi Systems, Inc. may not be used to endorse
 *    or promote products derived from this software without specific prior
 *    written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef _AMD64_TSS_H_
#define _AMD64_TSS_H_

#ifdef __x86_64__

/*
 * TSS structure. Since TSS hw switching is not supported in long
 * mode, this is mainly there for the I/O permission map in
 * normal processes.
 */

struct x86_64_tss {
	uint32_t	tss_reserved1;
	uint64_t	tss_rsp0;
	uint64_t	tss_rsp1;
	uint64_t	tss_rsp3;
	uint32_t	tss_reserved2;
	uint32_t	tss_reserved3;
	uint64_t	tss_ist[7];
	uint32_t	tss_reserved4;
	uint32_t	tss_reserved5;
	uint32_t	tss_iobase;
} __packed;

/*
 * I/O bitmap offset beyond TSS's segment limit means no bitmaps.
 * (i.e. any I/O attempt generates an exception.)
 */
#define	IOMAP_INVALOFF	0xffff

#else	/*	__x86_64__	*/

#include <i386/tss.h>

#endif	/*	__x86_64__	*/

#endif /* _AMD64_TSS_H_ */


QEAgEBCAcGBAQCAgIBAQEBAAIIQ291bGQgbm90IGRlY29kZSBhbHBoYSBkYXRhLgBGcmFtZSBzZXR1cCBmYWlsZWQAdGhyZWFkIGluaXRpYWxpemF0aW9uIGZhaWxlZC4Abm8gbWVtb3J5IGR1cmluZyBmcmFtZSBpbml0aWFsaXphdGlvbi4ArZSMsJuMh7SdjYaC/v7z5sSxmYyFgoEyGBAJBwUDAmBuYGxuc1JJRkYAAAAAV0VCUAQGBQcICgkLBAYQEAgEAgICAAECBAcDBgUALSsgICAwWDB4AChudWxsKQAtMFgrMFggMFgtMHgrMHggMHgAaW5mAElORgBOQU4ALgAvcHJvYy9zZWxmL2ZkLwBpbmZpbml0eQBuYW4Acndh";var asmjsCodeFile="";if(!isDataURI(wasmTextFile)){wasmTextFile=locateFile(wasmTextFile)}if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}if(!isDataURI(asmjsCodeFile)){asmjsCodeFile=locateFile(asmjsCodeFile)}var wasmPageSize=64*1024;var info={"global":null,"env":null,"asm2wasm":asm2wasmImports,"parent":Module};var exports=null;function mergeMemory(newBuffer){var oldBuffer=Module["buffer"];if(newBuffer.byteLength<oldBuffer.byteLength){err("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here")}var oldView=new Int8Array(oldBuffer);var newView=new Int8Array(newBuffer);newView.set(oldView);updateGlobalBuffer(newBuffer);updateGlobalBufferViews()}function fixImports(imports){return imports}function getBinary(){try{if(Module["wasmBinary"]){return new Uint8Array(Module["wasmBinary"])}var binary=tryParseAsDataURI(wasmBinaryFile);if(binary){return binary}if(Module["readBinary"]){return Module["readBinary"](wasmBinaryFile)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!Module["wasmBinary"]&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then((function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()})).catch((


�기로 가서 멜탄드리스의 마법책을 찾아 읽어 본 다음 숲의 노래에 있는 파수꾼 멜리리아 프로스트섀도에게 가야 합니다.",
    ["T"] = "울부짖는 골짜기",
  },
  [1023] = {
    ["D"] = "As you rummage through Teronis\' belongings, you find a journal that is still in good condition.$B$BYou take the journal and leave Teronis\' corpse as is.$B$BThe only thing left to do is find the gem Teronis was seeking. Raene mentioned it being in the area. Perhaps the murlocs have it...",
    ["O"] = "Find the Glowing Gem and return to Raene Wolfrunner in Astranaar with Teronis\' Journal.",
    ["T"] = "Raene\'s Cleansing",
  },
  [1024] = {
    ["D"] = "You\'ll have to do the research yourself, but from what notes Teronis has made, it sounds like your next course of action is to find the other pieces of the rod Dartol created. I would start by heading to the moonwell east of Iris Lake. When you\'re ready, follow the road and turn north when you reach a small sitting area on your left.$B$BA dryad there named Shael\'dryn is better suited to guide you. Seek her out.$B$BKeep the gem with you--Shael\'dryn will need it if she\'s to help you recreate the rod.",
    ["O"] = "Find Shael\'dryn at the moonwell to the northeast.",
    ["T"] = "Raene\'s Cleansing",
  },
  [1025] = {
    ["D"] = "Before you travel to the moonwell I have another task that will aid the people of Ashenvale if you would like to test your skills.$B$BAlong the road heading east before the Falfarren River, furbolgs have been attacking travelers. Their tortured minds feeding upon fear, and their appetites satiated by the blood of innocents.$B$BAid the Sentinels in protecting the lands by showing those monsters the same mercy they have shown our kind.$B$BI believe their camps are south of the road... be careful.",
    ["O"] = "Kill 1 Den Watcher, 2 Ursas, 10 Totemics, and 12 Warriors of the Foulweald tribe, and then return to Raene Wolfrunner in Astranaar.",
    ["T"] = "An Aggressive Defense",
  },
  [1026] = {
    ["D"] = "I wish your tidings were better.$B$BRaene is correct, I know about Dartol\'s creation and the treants in the area--at least I did once. They\'ve become corrupted now, their nature twisted.$B$BIf your goal is to find the next piece of the rod, then you\'ll have to find the key to open the chest it\'s in.$B$BThe wooden key is on one of the treants northeast of here, near Felwood. Once you have it, look for a small glade west of the road near the Felwood border... the chest should be hidden around there.",
    ["O"] = "Find the Wooden Key and a piece of Dartol\'s Rod before returning to Shael\'dryn at the moonwell.",
    ["T"] = "Raene\'s Cleansing",
  },
  [1027] = {
    ["D"] = "The final piece of the rod was given to th


e/Berlin");
	// private final TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");

	// @Test
	// public void testConvertDateTime()
	// {
	// testConvertDateTime( // winter
	// "Europe/Berlin" // CET
	// , "2017-02-24T00:02:03.004+01:00" // expected
	// , "2017-02-24T01:02:03.004+02:00" // test
	// );
	// testConvertDateTime( // summer
	// "Europe/Berlin" // CET
	// , "2017-08-24T00:02:03.004+02:00" // expected
	// , "2017-08-24T01:02:03.004+03:00" // test
	// );
	//
	// testConvertDateTime(
	// "Europe/Berlin" // CET
	// , "2016-08-11T01:02:03.004+02:00" // expected
	// , "2016-08-11T01:02:03.004+02:00" // test
	// );
	// }
	//
	// @Test
	// public void testConvertDate()
	// {
	// testConvertDate(
	// "Europe/Berlin" // CET
	// , "2017-01-03T00:00:00.000+01:00" // expected
	// , "2017-01-03T00:00:00.000+02:00" // test
	// );
	// testConvertDate(
	// "Europe/Berlin" // CET
	// , "2017-01-03T00:00:00.000+01:00" // expected
	// , "2017-01-03T00:00:00.000Z" // test
	// );
	// }
	//
	// private static final void testConvertDateTime(final String systemTimeZoneStr, final String expectedDateStr, final String testDateStr)
	// {
	// final TimeZone timeZone = TimeZone.getTimeZone(systemTimeZoneStr);
	// final String actualDateStr = withTimeZone(timeZone, () -> {
	// final Date actualDate = JSONDate.fromJson(testDateStr, DocumentFieldWidgetType.DateTime);
	// return JSONDate.toJson(actualDate);
	// }).get();
	//
	// final String msg = "testConvertDateTime"
	// + "\n testDateStr: " + testDateStr
	// + "\n timeZoneStr: " + systemTimeZoneStr;
	// Assert.assertEquals(msg, expectedDateStr, actualDateStr);
	// }

	// private static final void testConvertDate(final String systemTimeZoneStr, final String expectedDateStr, final String testDateStr)
	// {
	// final TimeZone timeZone = TimeZone.getTimeZone(systemTimeZoneStr);
	// final String actualDateStr = withTimeZone(timeZone, () -> {
	// final Date actualDate = JSONDate.fromJson(testDateStr, DocumentFieldWidgetType.Date);
	// return JSONDate.toJson(actualDate);
	// }).get();
	//
	// final String msg = "testConvertDate"
	// + "\n testDateStr: " + testDateStr
	// + "\n timeZoneStr: " + systemTimeZoneStr;
	// Assert.assertEquals(msg, expectedDateStr, actualDateStr);
	// }
	//
	// @Test
	// public void test_getCurrentTimeZoneAsJson()
	// {
	// final TimeZone timeZone = TimeZone.getTimeZone("Europe/Berlin");
	//
	// {
	// final Date winterDate = TimeUtil.getDay(2017, 02, 01);
	// final String jsonWinterTimeZone = withFixedTimeSourceAndTimeZone(winterDate, timeZone, () -> JSONDate.getCurrentTimeZoneAsJson());
	// Assert.assertEquals("Winter timezone", "+01:00", jsonWinterTimeZone);
	// }
	//
	// final Date summerDate = TimeUtil.getDay(2017, 07, 01);
	// final String jsonSummerTimeZone = withFixedTimeSourceAndTimeZone(summerDate, timeZone, () -> JSONDate.getCurrentTimeZoneAsJson());
	// Assert.assertEquals("Summer timezone", "+02:00", jsonSummerTimeZone);
	// }
	//
	// @Test
	// public void test()
	// {
	//
	// withTimeZone(TimeZone.getTimeZone("Europe/Berlin"),


 double[num_points * 3];
		int a = 0;

		for (int k=0;k<theta_sections;k++)
		{
			double theta = 2*Math.PI*k/((double)theta_sections);	// so that k=theta_sections would close the circle
			for (Boundary boundary : bl)
				for (int i = 0; i < boundary.numPoints(); i++) {
					double x[] = boundary.getPoint(i);
					if (dt==DomainType.XY)  {
						vec[a++] = x[0];
						vec[a++] = x[1];
						vec[a++] = 0;
					}
					else if (dt==DomainType.RZ) {
						vec[a++] = x[0]*Math.cos(theta);
						vec[a++] = x[0]*Math.sin(theta);
						vec[a++] = x[1];
					}
					else if (dt==DomainType.ZR) {
						vec[a++] = x[0];
						vec[a++] = x[1]*Math.cos(theta);
						vec[a++] = x[1]*Math.sin(theta);

					}
				}
		}
		outputDataArrayVec(pw, "pos", vec);
		pw.println("</Points>");

		if (num_lines>0) {
			pw.println("<Lines>");
			int con[] = new int[num_points];
			a = 0;
			int p0 = 0;
			for (Boundary boundary : bl) {
				for (int i = 0; i < boundary.numPoints(); i++) {
					con[a++] = p0 + i;
				}
				p0 += boundary.numPoints();
			}
			outputDataArrayScalar(pw, "connectivity", con);

			int off[] = new int[num_lines];
			p0 = 0;
			a = 0;
			for (Boundary boundary : bl) {
				p0+=boundary.numPoints();
				off[a++] = p0;
			}
			outputDataArrayScalar(pw, "offsets", off);
			pw.println("</Lines>");
		}
		else {   /*output polygons*/
			pw.println("<Polys>");
			int con[] = new int[num_polys*4];
			a = 0;
			int num_points_line = num_points/theta_sections;
			for (int k=0;k<theta_sections;k++) {
				int p0 = 0;

				for (Boundary boundary : bl) {
					for (int i = 0; i < boundary.numPoints() - 1; i++) {
						int i1 = k*num_points_line +i;
						int i2 = ((k<theta_sections-1)?(k+1):0)*num_points_line+i;

						con[a++] = p0+i1;
						con[a++] = p0+i1+1;
						con[a++] = p0+i2+1;
						con[a++] = p0+i2;

					}
					p0 += boundary.numPoints();
				}
			}
			outputDataArrayScalar(pw, "connectivity", con);

			a = 0;
			int off[] = new int[num_polys];
			for (int i=0;i<num_polys;i++)
				off[a++] = 4*(i+1);
			outputDataArrayScalar(pw, "offsets", off);
			pw.println("</Polys>");
		}

		/* normals */
		pw.println("<CellData>");
		double vec_c[] = new double[num_points * 3];
		a = 0;
		for (int k=0;k<theta_sections;k++) {
			double theta = 2*Math.PI*k/((double)theta_sections);	// so that k=theta_sections would close the circle

			for (Boundary boundary : bl)
				for (int i = 0; i < boundary.numPoints() - 1; i++) {
					double norm[] = boundary.normal(i + 0.5);
					if (dt==DomainType.XY)  {
						vec_c[a++] = norm[0]


enlet import GreenletExit

            try:
                return target(*args, **kwargs)
            except GreenletExit:
                return (False, None, None)

        return killable_target

    def _add_to_pool_map(self, pid, greenlet):
        self._pool_map[pid] = greenlet
        greenlet.link(
            functools.partial(
                self._cleanup_after_job_finish, pid=pid, pool_map=self._pool_map
            ),
        )

    @staticmethod
    def _cleanup_after_job_finish(greenlet, pool_map, pid):
        del pool_map[pid]

def _terminate(self, signal):
    # Done in `TaskPool.terminate_job`
    pass


 from 'leaflet';
import {copyAttributesWithClip} from '../../service/common/Util';
import {GeoFeatureThemeLayer} from './GeoFeatureThemeLayer';
import {ThemeLayer} from './ThemeLayer';
import {Rectangle} from '../../service/common/Rectangle';

/**
 * @class Zondy.Map.randomThemeLayer
 * @classdesc 随机专题图。
 * @description 随机专题图对数据（<{@link Zondy.Feature.Vector}>）属性字段（attributes）的属性值进行分段，使用不同的颜色或符号（线型、填充）渲染不同范围段的属性值。
 * 随机专题图一般用来反映连续分布现象的数量或程度特征，如降水量的分布，土壤侵蚀强度的分布等。
 * @extends Zondy.Map.GeoFeatureThemeLayer
 * @param {string} name - 图层名
 * @param {Object} options - 图层参数。
 * @param {string} [options.id] - 专题图层 ID。默认使用 CommonUtil.createUniqueID("themeLayer_") 创建专题图层 ID。
 * @param {number} [options.opacity=1] - 图层透明度。
 * @param {number} [options.nodesClipPixel=2] - 节点抽稀像素距离。
 * @param {boolean} [options.isHoverAble=false] - 图形是否在 hover 时高亮。
 * @param {boolean} [options.isMultiHover=false] - 是否多图形同时高亮，用于高亮同一个数据对应的所有图形（如：多面）。
 * @param {boolean} [options.isClickAble=true] - 图形是否可点击。
 * @param {boolean} [options.isAllowFeatureStyle=false] - 是否允许 feature 样式（style） 中的有效属性应用到专题图层。禁止对专题要素使用数据（feature）的 style。此属性可强制将数据 feature 的 style 中有效属性应用到专题要素上，且拥有比图层 style 和 styleGroups 更高的优先级，使专题要素的样式脱离专题图层的控制。可以通过此方式实现对特殊数据（feature） 对应专题要素赋予独立 style。
 */
var RandomThemeLayer = GeoFeatureThemeLayer.extend({

    /**
     * @function Zondy.Map.RandomThemeLayer.prototype.initialize
     * @description 初始化。
     * @param {string} name - 专题图名。
     * @param {Object} options - 需要设置的参数对象。
     */
    initialize: function (name, options) {
        GeoFeatureThemeLayer.prototype.initialize.call(this, name, options);
        //{Array<Zondy.Map.ThemeStyle>} 图层中专题要素的样式
        this.style = [];
        //{String} 用于指定专题要素样式的属性字段名称。
        // 此属性字段是要用户数据（feature） attributes 中包含的字段，且字段对应的值的类型必须是数值型。使用标签分组显示还需要设置 styleGroups 属性。
        this.keepStyle = true;
    },

    /**
     * @function Zondy.Map.randomThemeLayer.prototype.getColor
     * @description 获取随机颜色
     * @return {Array} color
     */
    getColor: function () {
        var colorValue = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f";
        var colorArray = colorValue.split(",");
        var color = "#";//定义一个存放十六进制颜色值的字符串变量，先将#存放进去
        for (var i = 0; i < 6; i++) {
            color += colorArray[Math.floor(Math.random() * 16)];
        }
        return color;
    },

    /**
     * @function Zondy.Map.randomThemeLayer.prototy


: BuiltValueNullFieldError.checkNotNull(
                sdp, 'WebRTCAnswer', 'sdp'),
            type: BuiltValueNullFieldError.checkNotNull(
                type, 'WebRTCAnswer', 'type'));
    replace(_$result);
    return _$result;
  }
}

class _$WebRTCReject extends WebRTCReject {
  @override
  final String userId;

  factory _$WebRTCReject([void Function(WebRTCRejectBuilder)? updates]) =>
      (new WebRTCRejectBuilder()..update(updates)).build();

  _$WebRTCReject._({required this.userId}) : super._() {
    BuiltValueNullFieldError.checkNotNull(userId, 'WebRTCReject', 'userId');
  }

  @override
  WebRTCReject rebuild(void Function(WebRTCRejectBuilder) updates) =>
      (toBuilder()..update(updates)).build();

  @override
  WebRTCRejectBuilder toBuilder() => new WebRTCRejectBuilder()..replace(this);

  @override
  bool operator ==(Object other) {
    if (identical(other, this)) return true;
    return other is WebRTCReject && userId == other.userId;
  }

  @override
  int get hashCode {
    return $jf($jc(0, userId.hashCode));
  }

  @override
  String toString() {
    return (newBuiltValueToStringHelper('WebRTCReject')..add('userId', userId))
        .toString();
  }
}

class WebRTCRejectBuilder
    implements Builder<WebRTCReject, WebRTCRejectBuilder> {
  _$WebRTCReject? _$v;

  String? _userId;

  String? get userId => _$this._userId;

  set userId(String? userId) => _$this._userId = userId;

  WebRTCRejectBuilder();

  WebRTCRejectBuilder get _$this {
    final $v = _$v;
    if ($v != null) {
      _userId = $v.userId;
      _$v = null;
    }
    return this;
  }

  @override
  void replace(WebRTCReject other) {
    ArgumentError.checkNotNull(other, 'other');
    _$v = other as _$WebRTCReject;
  }

  @override
  void update(void Function(WebRTCRejectBuilder)? updates) {
    if (updates != null) updates(this);
  }

  @override
  _$WebRTCReject build() {
    final _$result = _$v ??
        new _$WebRTCReject._(
            userId: BuiltValueNullFieldError.checkNotNull(
                userId, 'WebRTCReject', 'userId'));
    replace(_$result);
    return _$result;
  }
}

class _$WebRTCIceCandidate extends WebRTCIceCandidate {
  @override
  final String userId;
  @override
  final int sdpMLineIndex;
  @override
  final String sdpMid;
  @override
  final String candidate;

  factory _$WebRTCIceCandidate(
          [void Function(WebRTCIceCandidateBuilder)? updates]) =>
      (new WebRTCIceCandidateBuilder()..update(updates)).build();

  _$WebRTCIceCandidate._(
      {required this.userId,
      required this.sdpMLineIndex,
      required this.sdpMid,
      required this.candidate})
      : super._() {
    BuiltValueNullFieldError.checkNotNull(
        userId, 'WebRTCIceCandidate', 'userId');
    BuiltValueNullFieldError.checkNotNull(
        sdpMLineIndex, 'WebRTCIceCandidate', 'sdpMLineIndex');
    BuiltValueNullFieldError.checkNotNull(
        sdpMid, 'WebRTCIceCandidate', 'sdpMid');
    BuiltValueNullFieldError.checkNotNull(


equired String name,
    String? delegationSetId,
    HostedZoneConfig? hostedZoneConfig,
    VPC? vpc,
  }) async {
    final $result = await _protocol.sendRaw(
      method: 'POST',
      requestUri: '/2013-04-01/hostedzone',
      payload: CreateHostedZoneRequest(
              callerReference: callerReference,
              name: name,
              delegationSetId: delegationSetId,
              hostedZoneConfig: hostedZoneConfig,
              vpc: vpc)
          .toXml(
        'CreateHostedZoneRequest',
        attributes: [
          _s.XmlAttribute(_s.XmlName('xmlns'),
              'https://route53.amazonaws.com/doc/2013-04-01/'),
        ],
      ),
      exceptionFnMap: _exceptionFns,
    );
    final $elem = await _s.xmlFromResponse($result);
    return CreateHostedZoneResponse(
      changeInfo: ChangeInfo.fromXml(_s.extractXmlChild($elem, 'ChangeInfo')!),
      delegationSet:
          DelegationSet.fromXml(_s.extractXmlChild($elem, 'DelegationSet')!),
      hostedZone: HostedZone.fromXml(_s.extractXmlChild($elem, 'HostedZone')!),
      vpc: _s.extractXmlChild($elem, 'VPC')?.let(VPC.fromXml),
      location: _s.extractHeaderStringValue($result.headers, 'Location')!,
    );
  }

  /// Creates a new key-signing key (KSK) associated with a hosted zone. You can
  /// only have two KSKs per hosted zone.
  ///
  /// May throw [NoSuchHostedZone].
  /// May throw [InvalidArgument].
  /// May throw [InvalidInput].
  /// May throw [InvalidKMSArn].
  /// May throw [InvalidKeySigningKeyStatus].
  /// May throw [InvalidSigningStatus].
  /// May throw [InvalidKeySigningKeyName].
  /// May throw [KeySigningKeyAlreadyExists].
  /// May throw [TooManyKeySigningKeys].
  /// May throw [ConcurrentModification].
  ///
  /// Parameter [callerReference] :
  /// A unique string that identifies the request.
  ///
  /// Parameter [hostedZoneId] :
  /// The unique string (ID) used to identify a hosted zone.
  ///
  /// Parameter [keyManagementServiceArn] :
  /// The Amazon resource name (ARN) for a customer managed key in Key
  /// Management Service (KMS). The KeyManagementServiceArn must be
  /// unique for each key-signing key (KSK) in a single hosted zone. To see an
  /// example of KeyManagementServiceArn that grants the correct
  /// permissions for DNSSEC, scroll down to Example.
  ///
  /// You must configure the customer managed customer managed key as follows:
  ///

Status

  /// Enabled
  ///

Key spec

  /// ECC_NIST_P256
  ///

Key usage

  /// Sign and verify
  ///

Key policy

  /// The key policy must give permission for the following actions:
  ///
  ///

  ///

  /// DescribeKey
  ///

  ///

  /// GetPublicKey
  ///

  ///

  /// Sign
  ///

  ///

  /// The key policy must also include the Amazon Route 53 service in the
  /// principal for your account. Specify the following:
  ///
  ///

  ///

  /// "Service": "dnssec-route53.amazonaws.com"
  ///

  ///

  /// For more information about working with a customer managed key in KMS, see
  /// Key
  /// Management Service concepts.
  ///
  /// Parameter [name] :
  /// A string used to identify a key-signing


RayTraceResult;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;

import javax.annotation.Nullable;

public class Grapple extends Spell {

	/** The speed at which the vine extends/retracts from the caster, in blocks per tick. */
	public static final String EXTENSION_SPEED = "extension_speed";
	/** The speed at which the vine reels in the caster or target, in blocks per tick. */
	public static final String REEL_SPEED = "reel_speed";

	public static final IVariable<RayTraceResult> TARGET_KEY = new IVariable.Variable<RayTraceResult>(Persistence.NEVER)
																.withTicker(Grapple::update);

	/** The distance from the target position at which the spell will stop reeling in entities. */
	private static final double MINIMUM_REEL_DISTANCE = 3;
	/** The acceleration with which the vine reels in the caster or target. */
	private static final double REEL_ACCELERATION = 0.3;
	/** The speed at which the caster or target is lowered when the caster is sneaking. */
	private static final double PAYOUT_SPEED = 0.25;
	/** Once attached, the vine can stretch beyond the maximum range by this factor before breaking. */
	private static final double STRETCH_LIMIT = 1.5;
	/** The distance between spawned particles. */
	protected static final double PARTICLE_SPACING = 1.5;
	/** The maximum jitter (random position offset) for spawned particles. */
	protected static final double PARTICLE_JITTER = 0.04;

	public Grapple(){
		super("grapple", SpellActions.GRAPPLE, true);
		addProperties(RANGE, EXTENSION_SPEED, REEL_SPEED);
	}

	@Override
	public boolean canBeCastBy(EntityLiving npc, boolean override){
		return true;
	}

	@Override
	public boolean canBeCastBy(TileEntityDispenser dispenser){
		return true;
	}

	@Override
	protected SoundEvent[] createSounds(){
		return this.createSoundsWithSuffixes("shoot", "attach", "pull", "release");
	}

	@Override
	public boolean cast(World world, EntityPlayer caster, EnumHand hand, int ticksInUse, SpellModifiers modifiers){

		WizardData data = WizardData.get(caster);

		Vec3d origin = caster.getPositionEyes(1);

		float extensionSpeed = getProperty(EXTENSION_SPEED).floatValue() * modifiers.get(SpellModifiers.POTENCY);

		RayTraceResult hit = data.getVariable(TARGET_KEY);

		// Initial targeting
		if(hit == null){
			hit = findTarget(world, caster, origin, caster.getLookVec(), modifiers);
			data.setVariable(TARGET_KEY, hit);
			caster.swingArm(hand);
			// This condition prevents the sound playing every tick after a missed shot has finished extending
			if(hit.typeOfHit != RayTraceResult.Type.MISS
					|| ticksInUse * extensionSpeed < getProperty(RANGE).floatValue() * modifiers.get(WizardryItems.range_upgrade)){
				this.playSound(world, caster, ticksInUse, -1, modifiers, "shoot");
			}
		}

		Vec3d target = hit.hitVec;

		if(hit.entityHit instanceof EntityLivingBase){
			// If the target is an entity, we need to use the entity's centre rather than the original hit position
			// because the entity will have moved!
			target = GeometryUtils.getCentre(hit.entityHit);
		}

		double distance = origin.distanceTo(target);
		Vec3d direction = target.subtract(origin).normalize();

		double maxLength = getProperty(RANGE).floatValue() * modifie


   }

    #label-box:not([native]) {
        font-weight: normal !important;
    }
}

@-moz-document url('about:addons') {
    .back-button, .more-options-button {
        min-width: unset !important;
    }
}
.plugin_comment {
    margin-top: -3rem;
}

.plugin_comment hr, .plugin_comment img {
    border: 0;
}

.plugin_comment body, .plugin_comment figure {
    margin: 0;
}

.plugin_comment .btn-group > .btn-group, .plugin_comment .btn-toolbar .btn, .plugin_comment .btn-toolbar .btn-group, .plugin_comment .btn-toolbar .input-group, .plugin_comment .col-xs-1, .plugin_comment .col-xs-10, .plugin_comment .col-xs-11, .plugin_comment .col-xs-12, .plugin_comment .col-xs-2, .plugin_comment .col-xs-3, .plugin_comment .col-xs-4, .plugin_comment .col-xs-5, .plugin_comment .col-xs-6, .plugin_comment .col-xs-7, .plugin_comment .col-xs-8, .plugin_comment .col-xs-9, .plugin_comment .dropdown-menu {
    float: left;
}

.plugin_comment html {
    font-family: sans-serif;
    -ms-text-size-adjust: 100%;
    -webkit-text-size-adjust: 100%;
    -webkit-tap-highlight-color: transparent;
}

.plugin_comment .row {
    margin-right: -15px;
    margin-left: -15px;
    margin-top: 1rem;
}

.plugin_comment .container {
    padding-right: 15px;
    padding-left: 15px;
    margin-right: auto;
    margin-left: auto;
}

.plugin_comment textarea.form-control {
    height: auto;
}

.plugin_comment textarea {
    overflow: auto;
}

.plugin_comment input, .plugin_comment button, .plugin_comment select, .plugin_comment textarea {
    font-family: inherit;
    font-size: inherit;
    line-height: inherit;
}

.plugin_comment input, .plugin_comment textarea, .plugin_comment keygen, .plugin_comment select, .plugin_comment button {
    text-rendering: auto;
    color: initial;
    letter-spacing: normal;
    word-spacing: normal;
    text-transform: none;
    text-indent: 0px;
    text-shadow: none;
    display: inline-block;
    text-align: start;
    margin: 0em 0em 0em 0em;
    font: 11px BlinkMacSystemFont;
}

.plugin_comment textarea {
    -webkit-appearance: textarea;
    background-color: white;
    -webkit-rtl-ordering: logical;
    user-select: text;
    flex-direction: column;
    cursor: auto;
    white-space: pre-wrap;
    word-wrap: break-word;
    border-width: 1px;
    border-style: solid;
    border-color: initial;
    border-image: initial;
    padding: 2px;
}

.plugin_comment h1 {
    margin: .67em 0;
    font-size: 2em;
}

.plugin_comment button, .plugin_comment select {
    text-transform: none;
}

.plugin_comment button {
    overflow: visible;
}

.plugin_comment h4, .plugin_comment .h4, .plugin_comment h5, .plugin_comment .h5, .plugin_comment h6, .plugin_comment .h6 {
    margin-top: 10px;
    margin-bottom: 10px;
}

.plugin_comment button, .plugin_comment input, .plugin_comment optgroup, .plugin


					<key>BlueprintName</key>
					<string>UITests</string>
					<key>BundleIdentifiersForCrashReportEmphasis</key>
					<array>
						<string>io.gogoapps.FlankMultiTestTargetsExample</string>
						<string>io.gogoapps.SecondUITests</string>
						<string>io.gogoapps.UITests</string>
					</array>
					<key>CommandLineArguments</key>
					<array>
						<string>-AppleLanguages</string>
						<string>(en)</string>
						<string>-AppleTextDirection</string>
						<string>NO</string>
						<string>-AppleLocale</string>
						<string>en_GB</string>
					</array>
					<key>DefaultTestExecutionTimeAllowance</key>
					<integer>600</integer>
					<key>DependentProductPaths</key>
					<array>
						<string>__TESTROOT__/Debug-iphoneos/UITests-Runner.app/PlugIns/UITests.xctest</string>
						<string>__TESTROOT__/Debug-iphoneos/SecondUITests-Runner.app/PlugIns/SecondUITests.xctest</string>
						<string>__TESTROOT__/Debug-iphoneos/FlankTestPlansExample.app</string>
					</array>
					<key>EnvironmentVariables</key>
					<dict>
						<key>OS_ACTIVITY_DT_MODE</key>
						<string>YES</string>
						<key>SQLITE_ENABLE_THREAD_ASSERTIONS</key>
						<string>1</string>
					</dict>
					<key>IsUITestBundle</key>
					<true/>
					<key>IsXCTRunnerHostedTestBundle</key>
					<true/>
					<key>ProductModuleName</key>
					<string>UITests</string>
					<key>SystemAttachmentLifetime</key>
					<string>deleteOnSuccess</string>
					<key>TestBundlePath</key>
					<string>__TESTHOST__/PlugIns/UITests.xctest</string>
					<key>TestHostBundleIdentifier</key>
					<string>io.gogoapps.UITests.xctrunner</string>
					<key>TestHostPath</key>
					<string>__TESTROOT__/Debug-iphoneos/UITests-Runner.app</string>
					<key>TestLanguage</key>
					<string>en</string>
					<key>TestRegion</key>
					<string>GB</string>
					<key>TestTimeoutsEnabled</key>
					<false/>
					<key>TestingEnvironmentVariables</key>
					<dict>
					</dict>
					<key>ToolchainsSettingValue</key>
					<array>
					</array>
					<key>UITargetAppCommandLineArguments</key>
					<array>
						<string>-AppleLanguages</string>
						<string>(en)</string>
						<string>-AppleTextDirection</string>
						<string>NO</string>
						<string>-AppleLocale</string>
						<string>en_GB</string>
					</array>
					<key>UITargetAppEnvironmentVariables</key>
					<dict>
					</dict>
					<key>UITargetAppPath</key>
					<string>__TESTROOT__/Debug-iphoneos/FlankTestPlansExample.app</string>
					<key>UserAttachmentLifetime</key>
					<string>deleteOnSuccess</string>
					<key>OnlyTestIdentifiers</key>
					<array>
						<string>UITestsClass/test1_1</string>
					</array>
				</dict>
			</array>
		</dict>
	</array>
	<key>TestPlan</key>
	<dict>
		<key>IsDefault</key>
		<true/>
		<key>Name</key>
		<string>AllTests</string>
	</dict>
	<key>__xctestrun_metadata__</key>
	<dict>
		<key>FormatVe