From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qt1-f174.google.com (mail-qt1-f174.google.com [209.85.160.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 304D47A for ; Mon, 4 Apr 2022 15:56:51 +0000 (UTC) Received: by mail-qt1-f174.google.com with SMTP id b18so8028734qtk.13 for ; Mon, 04 Apr 2022 08:56:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20210112.gappssmtp.com; s=20210112; h=message-id:subject:from:to:cc:date:in-reply-to:references :content-transfer-encoding:user-agent:mime-version; bh=oxOs663yUTsQaF87soynkuuBjsTvX+61snvNDnfnDpk=; b=chfLUKxMwEMVxSBD2jEIRK7tGSH7AVdL1lvo/9Ye7Ui1fkiTef2W1bVpebglZLUlzg 1Q2l/8FKmI+QYKZpZ7QkVLv9KW1+QnhiOv8e3cmTbzZ0BplKdYBcwi2Z3zpgdqQSS/a2 Riih5TYQyc0SgsH5G6n5CZ36/B1jwHgk8IfvGhI2I5BrEHOfJ6lHnnUZMdXbJuHTl/+p V2aGoKoOUVXkwtGDxIp5vEgPKBMsfF3+gT16w+DOUnkBiUBpgUu8dYm9MUToqerw548Z hSa6U6zzRBbotpB6IvWsKFMQ9V0AQKByQ4WninpIjJu+7eAo5bkCP4DBYRb3Sj43O8OF SrOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:content-transfer-encoding:user-agent:mime-version; bh=oxOs663yUTsQaF87soynkuuBjsTvX+61snvNDnfnDpk=; b=63+M33AjjIUJInDofz2drluZMt7bqFiA2lG1Km0Tx/tm4gz5M9PDTWnzWsvvTLcgQ1 MvKvcJ84CA18OPzXdIqxQUXE0dX8A/Jx+jEjsBuVmmzqNdogQLtCeJL+K6/UxvfzJBeg +LSVhrTWY3ILLVImUcVLS6qR/mA7cLxKisuo4WUqcI40TzBmRBjg4MktXZwxKTrAKpUS pt8OtlwPBliEyxBtLaTtO4zZP43XXnjGb3MG75MIZJEzLDi6DrMGWPRTDKflFJgyXRsQ A07uOCDsPUJRUJ/c5P+GZSl5AniBvV4XEWZcTuPmSAs07CwY3MwEdop4cqrM+voCw7eE TcCw== X-Gm-Message-State: AOAM532VHSTp5kcAhipgWw+AkAxJeOhDdPdsup+yzuvGotv8DugxneoR YemzC4LU6izmXAXsXWGg7XD37A== X-Google-Smtp-Source: ABdhPJw2/icBGrgAgwAxRbBd++PjY8dJNbX4PyEG8FXVChXg4BbE0MkqxL4xHnIBPpHIB/5SWIfQ2g== X-Received: by 2002:ac8:5a47:0:b0:2e1:e78c:8367 with SMTP id o7-20020ac85a47000000b002e1e78c8367mr664250qta.126.1649087809994; Mon, 04 Apr 2022 08:56:49 -0700 (PDT) Received: from nicolas-tpx395.localdomain (173-246-12-168.qc.cable.ebox.net. [173.246.12.168]) by smtp.gmail.com with ESMTPSA id b2-20020ac87fc2000000b002e1b9ddb629sm8462150qtk.47.2022.04.04.08.56.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Apr 2022 08:56:49 -0700 (PDT) Message-ID: Subject: Re: [PATCH v4 05/15] media: uapi: HEVC: Rename HEVC stateless controls with STATELESS prefix From: Nicolas Dufresne To: Benjamin Gaignard , mchehab@kernel.org, ezequiel@vanguardiasur.com.ar, p.zabel@pengutronix.de, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@gmail.com, jonas@kwiboo.se Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-staging@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, kernel@collabora.com, knaerzche@gmail.com, jc@kynesim.co.uk Date: Mon, 04 Apr 2022 11:56:47 -0400 In-Reply-To: <20220228140838.622021-6-benjamin.gaignard@collabora.com> References: <20220228140838.622021-1-benjamin.gaignard@collabora.com> <20220228140838.622021-6-benjamin.gaignard@collabora.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.44.0 (3.44.0-1.fc36) Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Le lundi 28 f=C3=A9vrier 2022 =C3=A0 15:08 +0100, Benjamin Gaignard a =C3= =A9crit=C2=A0: > Change HEVC stateless controls names to V4L2_CID_STATELESS_HEVC instead > of V4L2_CID_MPEG_VIDEO_HEVC be coherent with v4l2 naming convention. >=20 > Signed-off-by: Benjamin Gaignard Reviewed-by: Nicolas Dufresne > --- > version 4: > - put controls under stateless section in v4l2-ctrls-defs.c >=20 > .../media/v4l/ext-ctrls-codec.rst | 26 +++++++-------- > drivers/media/v4l2-core/v4l2-ctrls-defs.c | 32 +++++++++---------- > drivers/staging/media/hantro/hantro_drv.c | 26 +++++++-------- > drivers/staging/media/hantro/hantro_hevc.c | 8 ++--- > drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +++++++------- > .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +++--- > include/media/hevc-ctrls.h | 26 +++++++-------- > 7 files changed, 76 insertions(+), 76 deletions(-) >=20 > diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst b/= Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst > index d096cb75993a..acf49420e56d 100644 > --- a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst > +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst > @@ -2639,7 +2639,7 @@ enum v4l2_mpeg_video_hevc_size_of_length_field - > =20 > .. _v4l2-mpeg-hevc: > =20 > -``V4L2_CID_MPEG_VIDEO_HEVC_SPS (struct)`` > +``V4L2_CID_STATELESS_HEVC_SPS (struct)`` > Specifies the Sequence Parameter Set fields (as extracted from the > bitstream) for the associated HEVC slice data. > These bitstream parameters are defined according to :ref:`hevc`. > @@ -2792,7 +2792,7 @@ enum v4l2_mpeg_video_hevc_size_of_length_field - > =20 > \normalsize > =20 > -``V4L2_CID_MPEG_VIDEO_HEVC_PPS (struct)`` > +``V4L2_CID_STATELESS_HEVC_PPS (struct)`` > Specifies the Picture Parameter Set fields (as extracted from the > bitstream) for the associated HEVC slice data. > These bitstream parameters are defined according to :ref:`hevc`. > @@ -2945,7 +2945,7 @@ enum v4l2_mpeg_video_hevc_size_of_length_field - > =20 > \normalsize > =20 > -``V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS (struct)`` > +``V4L2_CID_STATELESS_HEVC_SLICE_PARAMS (struct)`` > Specifies various slice-specific parameters, especially from the NAL= unit > header, general slice segment header and weighted prediction paramet= er > parts of the bitstream. > @@ -3110,7 +3110,7 @@ enum v4l2_mpeg_video_hevc_size_of_length_field - > =20 > \normalsize > =20 > -``V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX (struct)`` > +``V4L2_CID_STATELESS_HEVC_SCALING_MATRIX (struct)`` > Specifies the HEVC scaling matrix parameters used for the scaling pr= ocess > for transform coefficients. > These matrix and parameters are defined according to :ref:`hevc`. > @@ -3260,7 +3260,7 @@ enum v4l2_mpeg_video_hevc_size_of_length_field - > =20 > \normalsize > =20 > -``V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE (enum)`` > +``V4L2_CID_STATELESS_HEVC_DECODE_MODE (enum)`` > Specifies the decoding mode to use. Currently exposes slice-based an= d > frame-based decoding but new modes might be added later on. > This control is used as a modifier for V4L2_PIX_FMT_HEVC_SLICE > @@ -3275,7 +3275,7 @@ enum v4l2_mpeg_video_hevc_size_of_length_field - > This menu control is not yet part of the public kernel API and > it is expected to change. > =20 > -.. c:type:: v4l2_mpeg_video_hevc_decode_mode > +.. c:type:: v4l2_stateless_hevc_decode_mode > =20 > .. raw:: latex > =20 > @@ -3288,11 +3288,11 @@ enum v4l2_mpeg_video_hevc_size_of_length_field - > :stub-columns: 0 > :widths: 1 1 2 > =20 > - * - ``V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_SLICE_BASED`` > + * - ``V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED`` > - 0 > - Decoding is done at the slice granularity. > The OUTPUT buffer must contain a single slice. > - * - ``V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_FRAME_BASED`` > + * - ``V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED`` > - 1 > - Decoding is done at the frame granularity. > The OUTPUT buffer must contain all slices needed to decode the > @@ -3302,7 +3302,7 @@ enum v4l2_mpeg_video_hevc_size_of_length_field - > =20 > \normalsize > =20 > -``V4L2_CID_MPEG_VIDEO_HEVC_START_CODE (enum)`` > +``V4L2_CID_STATELESS_HEVC_START_CODE (enum)`` > Specifies the HEVC slice start code expected for each slice. > This control is used as a modifier for V4L2_PIX_FMT_HEVC_SLICE > pixel format. Applications that support V4L2_PIX_FMT_HEVC_SLICE > @@ -3316,7 +3316,7 @@ enum v4l2_mpeg_video_hevc_size_of_length_field - > This menu control is not yet part of the public kernel API and > it is expected to change. > =20 > -.. c:type:: v4l2_mpeg_video_hevc_start_code > +.. c:type:: v4l2_stateless_hevc_start_code > =20 > .. tabularcolumns:: |p{9.2cm}|p{0.6cm}|p{7.5cm}| > =20 > @@ -3325,13 +3325,13 @@ enum v4l2_mpeg_video_hevc_size_of_length_field - > :stub-columns: 0 > :widths: 1 1 2 > =20 > - * - ``V4L2_MPEG_VIDEO_HEVC_START_CODE_NONE`` > + * - ``V4L2_STATELESS_HEVC_START_CODE_NONE`` > - 0 > - Selecting this value specifies that HEVC slices are passed > to the driver without any start code. The bitstream data should = be > according to :ref:`hevc` 7.3.1.1 General NAL unit syntax, hence > contains emulation prevention bytes when required. > - * - ``V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B`` > + * - ``V4L2_STATELESS_HEVC_START_CODE_ANNEX_B`` > - 1 > - Selecting this value specifies that HEVC slices are expected > to be prefixed by Annex B start codes. According to :ref:`hevc` > @@ -3364,7 +3364,7 @@ enum v4l2_mpeg_video_hevc_size_of_length_field - > This provides a bitmask which consists of bits [0, LTR_COUNT-1]. > This is applicable to the H264 and HEVC encoders. > =20 > -``V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS (struct)`` > +``V4L2_CID_STATELESS_HEVC_DECODE_PARAMS (struct)`` > Specifies various decode parameters, especially the references pictu= re order > count (POC) for all the lists (short, long, before, current, after) = and the > number of entries for each of them. > diff --git a/drivers/media/v4l2-core/v4l2-ctrls-defs.c b/drivers/media/v4= l2-core/v4l2-ctrls-defs.c > index 54ca4e6b820b..4b68cbe23309 100644 > --- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c > +++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c > @@ -699,9 +699,9 @@ const char * const *v4l2_ctrl_get_menu(u32 id) > return hevc_tier; > case V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE: > return hevc_loop_filter_mode; > - case V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE: > + case V4L2_CID_STATELESS_HEVC_DECODE_MODE: > return hevc_decode_mode; > - case V4L2_CID_MPEG_VIDEO_HEVC_START_CODE: > + case V4L2_CID_STATELESS_HEVC_START_CODE: > return hevc_start_code; > case V4L2_CID_CAMERA_ORIENTATION: > return camera_orientation; > @@ -995,13 +995,6 @@ const char *v4l2_ctrl_get_name(u32 id) > case V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD: return "HEVC Size o= f Length Field"; > case V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES: return "Reference Fram= es for a P-Frame"; > case V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR: return "Prepend SPS an= d PPS to IDR"; > - case V4L2_CID_MPEG_VIDEO_HEVC_SPS: return "HEVC Sequence Parameter Se= t"; > - case V4L2_CID_MPEG_VIDEO_HEVC_PPS: return "HEVC Picture Parameter Set= "; > - case V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS: return "HEVC Slice Paramet= ers"; > - case V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX: return "HEVC Scaling Mat= rix"; > - case V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS: return "HEVC Decode Param= eters"; > - case V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE: return "HEVC Decode Mode"; > - case V4L2_CID_MPEG_VIDEO_HEVC_START_CODE: return "HEVC Start Code"; > =20 > /* CAMERA controls */ > /* Keep the order of the 'case's the same as in v4l2-controls.h! */ > @@ -1180,6 +1173,13 @@ const char *v4l2_ctrl_get_name(u32 id) > case V4L2_CID_STATELESS_MPEG2_QUANTISATION: return "MPEG-2 Quantisatio= n Matrices"; > case V4L2_CID_STATELESS_VP9_COMPRESSED_HDR: return "VP9 Probabilities U= pdates"; > case V4L2_CID_STATELESS_VP9_FRAME: return "VP9 Frame Decode Parameter= s"; > + case V4L2_CID_STATELESS_HEVC_SPS: return "HEVC Sequence Parameter Set= "; > + case V4L2_CID_STATELESS_HEVC_PPS: return "HEVC Picture Parameter Set"= ; > + case V4L2_CID_STATELESS_HEVC_SLICE_PARAMS: return "HEVC Slice Paramete= rs"; > + case V4L2_CID_STATELESS_HEVC_SCALING_MATRIX: return "HEVC Scaling Matr= ix"; > + case V4L2_CID_STATELESS_HEVC_DECODE_PARAMS: return "HEVC Decode Parame= ters"; > + case V4L2_CID_STATELESS_HEVC_DECODE_MODE: return "HEVC Decode Mode"; > + case V4L2_CID_STATELESS_HEVC_START_CODE: return "HEVC Start Code"; > =20 > /* Colorimetry controls */ > /* Keep the order of the 'case's the same as in v4l2-controls.h! */ > @@ -1355,8 +1355,8 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum= v4l2_ctrl_type *type, > case V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD: > case V4L2_CID_MPEG_VIDEO_HEVC_TIER: > case V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE: > - case V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE: > - case V4L2_CID_MPEG_VIDEO_HEVC_START_CODE: > + case V4L2_CID_STATELESS_HEVC_DECODE_MODE: > + case V4L2_CID_STATELESS_HEVC_START_CODE: > case V4L2_CID_STATELESS_H264_DECODE_MODE: > case V4L2_CID_STATELESS_H264_START_CODE: > case V4L2_CID_CAMERA_ORIENTATION: > @@ -1493,19 +1493,19 @@ void v4l2_ctrl_fill(u32 id, const char **name, en= um v4l2_ctrl_type *type, > case V4L2_CID_STATELESS_VP8_FRAME: > *type =3D V4L2_CTRL_TYPE_VP8_FRAME; > break; > - case V4L2_CID_MPEG_VIDEO_HEVC_SPS: > + case V4L2_CID_STATELESS_HEVC_SPS: > *type =3D V4L2_CTRL_TYPE_HEVC_SPS; > break; > - case V4L2_CID_MPEG_VIDEO_HEVC_PPS: > + case V4L2_CID_STATELESS_HEVC_PPS: > *type =3D V4L2_CTRL_TYPE_HEVC_PPS; > break; > - case V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS: > + case V4L2_CID_STATELESS_HEVC_SLICE_PARAMS: > *type =3D V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS; > break; > - case V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX: > + case V4L2_CID_STATELESS_HEVC_SCALING_MATRIX: > *type =3D V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX; > break; > - case V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS: > + case V4L2_CID_STATELESS_HEVC_DECODE_PARAMS: > *type =3D V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS; > break; > case V4L2_CID_STATELESS_VP9_COMPRESSED_HDR: > diff --git a/drivers/staging/media/hantro/hantro_drv.c b/drivers/staging/= media/hantro/hantro_drv.c > index dc768884cb79..6f58c259d8fc 100644 > --- a/drivers/staging/media/hantro/hantro_drv.c > +++ b/drivers/staging/media/hantro/hantro_drv.c > @@ -255,7 +255,7 @@ static int hantro_try_ctrl(struct v4l2_ctrl *ctrl) > if (sps->bit_depth_luma_minus8 !=3D 0) > /* Only 8-bit is supported */ > return -EINVAL; > - } else if (ctrl->id =3D=3D V4L2_CID_MPEG_VIDEO_HEVC_SPS) { > + } else if (ctrl->id =3D=3D V4L2_CID_STATELESS_HEVC_SPS) { > const struct v4l2_ctrl_hevc_sps *sps =3D ctrl->p_new.p_hevc_sps; > =20 > if (sps->bit_depth_luma_minus8 !=3D sps->bit_depth_chroma_minus8) > @@ -428,18 +428,18 @@ static const struct hantro_ctrl controls[] =3D { > }, { > .codec =3D HANTRO_HEVC_DECODER, > .cfg =3D { > - .id =3D V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE, > - .min =3D V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_FRAME_BASED, > - .max =3D V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_FRAME_BASED, > - .def =3D V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_FRAME_BASED, > + .id =3D V4L2_CID_STATELESS_HEVC_DECODE_MODE, > + .min =3D V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED, > + .max =3D V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED, > + .def =3D V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED, > }, > }, { > .codec =3D HANTRO_HEVC_DECODER, > .cfg =3D { > - .id =3D V4L2_CID_MPEG_VIDEO_HEVC_START_CODE, > - .min =3D V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B, > - .max =3D V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B, > - .def =3D V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B, > + .id =3D V4L2_CID_STATELESS_HEVC_START_CODE, > + .min =3D V4L2_STATELESS_HEVC_START_CODE_ANNEX_B, > + .max =3D V4L2_STATELESS_HEVC_START_CODE_ANNEX_B, > + .def =3D V4L2_STATELESS_HEVC_START_CODE_ANNEX_B, > }, > }, { > .codec =3D HANTRO_HEVC_DECODER, > @@ -459,23 +459,23 @@ static const struct hantro_ctrl controls[] =3D { > }, { > .codec =3D HANTRO_HEVC_DECODER, > .cfg =3D { > - .id =3D V4L2_CID_MPEG_VIDEO_HEVC_SPS, > + .id =3D V4L2_CID_STATELESS_HEVC_SPS, > .ops =3D &hantro_ctrl_ops, > }, > }, { > .codec =3D HANTRO_HEVC_DECODER, > .cfg =3D { > - .id =3D V4L2_CID_MPEG_VIDEO_HEVC_PPS, > + .id =3D V4L2_CID_STATELESS_HEVC_PPS, > }, > }, { > .codec =3D HANTRO_HEVC_DECODER, > .cfg =3D { > - .id =3D V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS, > + .id =3D V4L2_CID_STATELESS_HEVC_DECODE_PARAMS, > }, > }, { > .codec =3D HANTRO_HEVC_DECODER, > .cfg =3D { > - .id =3D V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX, > + .id =3D V4L2_CID_STATELESS_HEVC_SCALING_MATRIX, > }, > }, { > .codec =3D HANTRO_HEVC_DECODER, > diff --git a/drivers/staging/media/hantro/hantro_hevc.c b/drivers/staging= /media/hantro/hantro_hevc.c > index b49a41d7ae91..b6ec86d03d91 100644 > --- a/drivers/staging/media/hantro/hantro_hevc.c > +++ b/drivers/staging/media/hantro/hantro_hevc.c > @@ -201,22 +201,22 @@ int hantro_hevc_dec_prepare_run(struct hantro_ctx *= ctx) > hantro_start_prepare_run(ctx); > =20 > ctrls->decode_params =3D > - hantro_get_ctrl(ctx, V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS); > + hantro_get_ctrl(ctx, V4L2_CID_STATELESS_HEVC_DECODE_PARAMS); > if (WARN_ON(!ctrls->decode_params)) > return -EINVAL; > =20 > ctrls->scaling =3D > - hantro_get_ctrl(ctx, V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX); > + hantro_get_ctrl(ctx, V4L2_CID_STATELESS_HEVC_SCALING_MATRIX); > if (WARN_ON(!ctrls->scaling)) > return -EINVAL; > =20 > ctrls->sps =3D > - hantro_get_ctrl(ctx, V4L2_CID_MPEG_VIDEO_HEVC_SPS); > + hantro_get_ctrl(ctx, V4L2_CID_STATELESS_HEVC_SPS); > if (WARN_ON(!ctrls->sps)) > return -EINVAL; > =20 > ctrls->pps =3D > - hantro_get_ctrl(ctx, V4L2_CID_MPEG_VIDEO_HEVC_PPS); > + hantro_get_ctrl(ctx, V4L2_CID_STATELESS_HEVC_PPS); > if (WARN_ON(!ctrls->pps)) > return -EINVAL; > =20 > diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.c b/drivers/stagin= g/media/sunxi/cedrus/cedrus.c > index 4a4b714b0f26..e0428163f82c 100644 > --- a/drivers/staging/media/sunxi/cedrus/cedrus.c > +++ b/drivers/staging/media/sunxi/cedrus/cedrus.c > @@ -42,7 +42,7 @@ static int cedrus_try_ctrl(struct v4l2_ctrl *ctrl) > if (sps->bit_depth_luma_minus8 !=3D 0) > /* Only 8-bit is supported */ > return -EINVAL; > - } else if (ctrl->id =3D=3D V4L2_CID_MPEG_VIDEO_HEVC_SPS) { > + } else if (ctrl->id =3D=3D V4L2_CID_STATELESS_HEVC_SPS) { > const struct v4l2_ctrl_hevc_sps *sps =3D ctrl->p_new.p_hevc_sps; > struct cedrus_ctx *ctx =3D container_of(ctrl->handler, struct cedrus_c= tx, hdl); > =20 > @@ -164,42 +164,42 @@ static const struct cedrus_control cedrus_controls[= ] =3D { > }, > { > .cfg =3D { > - .id =3D V4L2_CID_MPEG_VIDEO_HEVC_SPS, > + .id =3D V4L2_CID_STATELESS_HEVC_SPS, > .ops =3D &cedrus_ctrl_ops, > }, > .codec =3D CEDRUS_CODEC_H265, > }, > { > .cfg =3D { > - .id =3D V4L2_CID_MPEG_VIDEO_HEVC_PPS, > + .id =3D V4L2_CID_STATELESS_HEVC_PPS, > }, > .codec =3D CEDRUS_CODEC_H265, > }, > { > .cfg =3D { > - .id =3D V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS, > + .id =3D V4L2_CID_STATELESS_HEVC_SLICE_PARAMS, > }, > .codec =3D CEDRUS_CODEC_H265, > }, > { > .cfg =3D { > - .id =3D V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX, > + .id =3D V4L2_CID_STATELESS_HEVC_SCALING_MATRIX, > }, > .codec =3D CEDRUS_CODEC_H265, > }, > { > .cfg =3D { > - .id =3D V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE, > - .max =3D V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_SLICE_BASED, > - .def =3D V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_SLICE_BASED, > + .id =3D V4L2_CID_STATELESS_HEVC_DECODE_MODE, > + .max =3D V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED, > + .def =3D V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED, > }, > .codec =3D CEDRUS_CODEC_H265, > }, > { > .cfg =3D { > - .id =3D V4L2_CID_MPEG_VIDEO_HEVC_START_CODE, > - .max =3D V4L2_MPEG_VIDEO_HEVC_START_CODE_NONE, > - .def =3D V4L2_MPEG_VIDEO_HEVC_START_CODE_NONE, > + .id =3D V4L2_CID_STATELESS_HEVC_START_CODE, > + .max =3D V4L2_STATELESS_HEVC_START_CODE_NONE, > + .def =3D V4L2_STATELESS_HEVC_START_CODE_NONE, > }, > .codec =3D CEDRUS_CODEC_H265, > }, > @@ -211,7 +211,7 @@ static const struct cedrus_control cedrus_controls[] = =3D { > }, > { > .cfg =3D { > - .id =3D V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS, > + .id =3D V4L2_CID_STATELESS_HEVC_DECODE_PARAMS, > }, > .codec =3D CEDRUS_CODEC_H265, > }, > diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_dec.c b/drivers/st= aging/media/sunxi/cedrus/cedrus_dec.c > index a16c1422558f..f6be4ae72ee2 100644 > --- a/drivers/staging/media/sunxi/cedrus/cedrus_dec.c > +++ b/drivers/staging/media/sunxi/cedrus/cedrus_dec.c > @@ -65,15 +65,15 @@ void cedrus_device_run(void *priv) > =20 > case V4L2_PIX_FMT_HEVC_SLICE: > run.h265.sps =3D cedrus_find_control_data(ctx, > - V4L2_CID_MPEG_VIDEO_HEVC_SPS); > + V4L2_CID_STATELESS_HEVC_SPS); > run.h265.pps =3D cedrus_find_control_data(ctx, > - V4L2_CID_MPEG_VIDEO_HEVC_PPS); > + V4L2_CID_STATELESS_HEVC_PPS); > run.h265.slice_params =3D cedrus_find_control_data(ctx, > - V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS); > + V4L2_CID_STATELESS_HEVC_SLICE_PARAMS); > run.h265.decode_params =3D cedrus_find_control_data(ctx, > - V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS); > + V4L2_CID_STATELESS_HEVC_DECODE_PARAMS); > run.h265.scaling_matrix =3D cedrus_find_control_data(ctx, > - V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX); > + V4L2_CID_STATELESS_HEVC_SCALING_MATRIX); > break; > =20 > case V4L2_PIX_FMT_VP8_FRAME: > diff --git a/include/media/hevc-ctrls.h b/include/media/hevc-ctrls.h > index a329e086a89a..b3540167df9e 100644 > --- a/include/media/hevc-ctrls.h > +++ b/include/media/hevc-ctrls.h > @@ -16,13 +16,13 @@ > /* The pixel format isn't stable at the moment and will likely be rename= d. */ > #define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC = parsed slices */ > =20 > -#define V4L2_CID_MPEG_VIDEO_HEVC_SPS (V4L2_CID_CODEC_BASE + 1008) > -#define V4L2_CID_MPEG_VIDEO_HEVC_PPS (V4L2_CID_CODEC_BASE + 1009) > -#define V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS (V4L2_CID_CODEC_BASE + 101= 0) > -#define V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX (V4L2_CID_CODEC_BASE + 1= 011) > -#define V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS (V4L2_CID_CODEC_BASE + 10= 12) > -#define V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE (V4L2_CID_CODEC_BASE + 1015= ) > -#define V4L2_CID_MPEG_VIDEO_HEVC_START_CODE (V4L2_CID_CODEC_BASE + 1016) > +#define V4L2_CID_STATELESS_HEVC_SPS (V4L2_CID_CODEC_BASE + 1008) > +#define V4L2_CID_STATELESS_HEVC_PPS (V4L2_CID_CODEC_BASE + 1009) > +#define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS (V4L2_CID_CODEC_BASE + 1010= ) > +#define V4L2_CID_STATELESS_HEVC_SCALING_MATRIX (V4L2_CID_CODEC_BASE + 10= 11) > +#define V4L2_CID_STATELESS_HEVC_DECODE_PARAMS (V4L2_CID_CODEC_BASE + 101= 2) > +#define V4L2_CID_STATELESS_HEVC_DECODE_MODE (V4L2_CID_CODEC_BASE + 1015) > +#define V4L2_CID_STATELESS_HEVC_START_CODE (V4L2_CID_CODEC_BASE + 1016) > =20 > /* enum v4l2_ctrl_type type values */ > #define V4L2_CTRL_TYPE_HEVC_SPS 0x0120 > @@ -31,14 +31,14 @@ > #define V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX 0x0123 > #define V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS 0x0124 > =20 > -enum v4l2_mpeg_video_hevc_decode_mode { > - V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_SLICE_BASED, > - V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_FRAME_BASED, > +enum v4l2_stateless_hevc_decode_mode { > + V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED, > + V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED, > }; > =20 > -enum v4l2_mpeg_video_hevc_start_code { > - V4L2_MPEG_VIDEO_HEVC_START_CODE_NONE, > - V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B, > +enum v4l2_stateless_hevc_start_code { > + V4L2_STATELESS_HEVC_START_CODE_NONE, > + V4L2_STATELESS_HEVC_START_CODE_ANNEX_B, > }; > =20 > #define V4L2_HEVC_SLICE_TYPE_B 0 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 38719C433F5 for ; Mon, 4 Apr 2022 15:58:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=JyTKGVunVFcEkHdJ4DGWK/sDfGWIAt/N002v95ZucIc=; b=p/OdPspC3me5gx 6+xqUqOU/Sne88SS42S7QKf34ZTyZVuhCCSlYkE6kXo/fh88VZjPMwqgf9jnEu0VzBOjkvKKQXFAE +PjDFW9S3L96TB1LER+qB+WnN6eWnTuSXo9o4R+nutTE3pcmuqQkM32jOD+vtclGWjY/Yq0L2sXw6 LxGKoU62vq7DZYjx/Ji8s3WNjbQLuuh6bVx4OHBwC0oAFhGhmUsIIp4WxYZNKg1HcESwvalDcIIby 6rXUnsn/3sxWVq2n+6NoJGBYaSpay9RSCqXYzzQo4m/FqGwaE90goWssoj9gC49zovtH2jFTLBkQM hFn1uFCQYFP9TuSRin3A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nbP52-00Fdna-NU; Mon, 04 Apr 2022 15:57:25 +0000 Received: from mail-qt1-x82f.google.com ([2607:f8b0:4864:20::82f]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nbP4b-00FdT7-Cl for linux-arm-kernel@lists.infradead.org; Mon, 04 Apr 2022 15:57:00 +0000 Received: by mail-qt1-x82f.google.com with SMTP id o15so6686918qtv.8 for ; Mon, 04 Apr 2022 08:56:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20210112.gappssmtp.com; s=20210112; h=message-id:subject:from:to:cc:date:in-reply-to:references :content-transfer-encoding:user-agent:mime-version; bh=oxOs663yUTsQaF87soynkuuBjsTvX+61snvNDnfnDpk=; b=chfLUKxMwEMVxSBD2jEIRK7tGSH7AVdL1lvo/9Ye7Ui1fkiTef2W1bVpebglZLUlzg 1Q2l/8FKmI+QYKZpZ7QkVLv9KW1+QnhiOv8e3cmTbzZ0BplKdYBcwi2Z3zpgdqQSS/a2 Riih5TYQyc0SgsH5G6n5CZ36/B1jwHgk8IfvGhI2I5BrEHOfJ6lHnnUZMdXbJuHTl/+p V2aGoKoOUVXkwtGDxIp5vEgPKBMsfF3+gT16w+DOUnkBiUBpgUu8dYm9MUToqerw548Z hSa6U6zzRBbotpB6IvWsKFMQ9V0AQKByQ4WninpIjJu+7eAo5bkCP4DBYRb3Sj43O8OF SrOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:content-transfer-encoding:user-agent:mime-version; bh=oxOs663yUTsQaF87soynkuuBjsTvX+61snvNDnfnDpk=; b=Q8y6A3U5X3u9mwUUVZAv9TjJ1xjLfSZqMDAFJXyhopNhmDNlJTTFPbaI1Qhskm3OFd 0NMjC+7PUKHMrbXienmPvTm0t9+1qXMMToQ+NSjjImzq9hIkavBgQu7In31MF6eklA+h ExgvBh39YkmXc+zcriAFMBiE/erI+eGbEGupv8pDq3jyfjPxrIVwV7exaz/PVdnljhhk +AxW5JEQQdaG+7iE2x8wMGU+p5RhQVKmtjPVr9GBFzTHtDseaDlne9JNu+8UeEqlw6um vc4BnkmIcjG8GIWJcYK28uZcLk1W9mx230mWSOrQoyOZ6y1UkloM1kVRGuAOht43s4Kb Qg+A== X-Gm-Message-State: AOAM531vY+h1nRbMEhrg/Yge0p0GmdJULUfTnc0rK6qRiD1GCNeEF3uf sl46/cf5m1FoTQGTKy9Ihs0WHg== X-Google-Smtp-Source: ABdhPJw2/icBGrgAgwAxRbBd++PjY8dJNbX4PyEG8FXVChXg4BbE0MkqxL4xHnIBPpHIB/5SWIfQ2g== X-Received: by 2002:ac8:5a47:0:b0:2e1:e78c:8367 with SMTP id o7-20020ac85a47000000b002e1e78c8367mr664250qta.126.1649087809994; Mon, 04 Apr 2022 08:56:49 -0700 (PDT) Received: from nicolas-tpx395.localdomain (173-246-12-168.qc.cable.ebox.net. [173.246.12.168]) by smtp.gmail.com with ESMTPSA id b2-20020ac87fc2000000b002e1b9ddb629sm8462150qtk.47.2022.04.04.08.56.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Apr 2022 08:56:49 -0700 (PDT) Message-ID: Subject: Re: [PATCH v4 05/15] media: uapi: HEVC: Rename HEVC stateless controls with STATELESS prefix From: Nicolas Dufresne To: Benjamin Gaignard , mchehab@kernel.org, ezequiel@vanguardiasur.com.ar, p.zabel@pengutronix.de, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@gmail.com, jonas@kwiboo.se Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-staging@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, kernel@collabora.com, knaerzche@gmail.com, jc@kynesim.co.uk Date: Mon, 04 Apr 2022 11:56:47 -0400 In-Reply-To: <20220228140838.622021-6-benjamin.gaignard@collabora.com> References: <20220228140838.622021-1-benjamin.gaignard@collabora.com> <20220228140838.622021-6-benjamin.gaignard@collabora.com> User-Agent: Evolution 3.44.0 (3.44.0-1.fc36) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220404_085657_481851_4AADB298 X-CRM114-Status: GOOD ( 27.16 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org TGUgbHVuZGkgMjggZsOpdnJpZXIgMjAyMiDDoCAxNTowOCArMDEwMCwgQmVuamFtaW4gR2FpZ25h cmQgYSDDqWNyaXTCoDoKPiBDaGFuZ2UgSEVWQyAgc3RhdGVsZXNzIGNvbnRyb2xzIG5hbWVzIHRv IFY0TDJfQ0lEX1NUQVRFTEVTU19IRVZDIGluc3RlYWQKPiBvZiBWNEwyX0NJRF9NUEVHX1ZJREVP X0hFVkMgYmUgY29oZXJlbnQgd2l0aCB2NGwyIG5hbWluZyBjb252ZW50aW9uLgo+IAo+IFNpZ25l ZC1vZmYtYnk6IEJlbmphbWluIEdhaWduYXJkIDxiZW5qYW1pbi5nYWlnbmFyZEBjb2xsYWJvcmEu Y29tPgoKUmV2aWV3ZWQtYnk6IE5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMuZHVmcmVzbmVAY29s bGFib3JhLmNvbT4KCj4gLS0tCj4gdmVyc2lvbiA0Ogo+IC0gcHV0IGNvbnRyb2xzIHVuZGVyIHN0 YXRlbGVzcyBzZWN0aW9uIGluIHY0bDItY3RybHMtZGVmcy5jCj4gCj4gIC4uLi9tZWRpYS92NGwv ZXh0LWN0cmxzLWNvZGVjLnJzdCAgICAgICAgICAgICB8IDI2ICsrKysrKystLS0tLS0tLQo+ICBk cml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWRlZnMuYyAgICAgfCAzMiArKysrKysr KystLS0tLS0tLS0tCj4gIGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2Rydi5j ICAgICB8IDI2ICsrKysrKystLS0tLS0tLQo+ICBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJv L2hhbnRyb19oZXZjLmMgICAgfCAgOCArKy0tLQo+ICBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3Vu eGkvY2VkcnVzL2NlZHJ1cy5jICAgfCAyNCArKysrKysrLS0tLS0tLQo+ICAuLi4vc3RhZ2luZy9t ZWRpYS9zdW54aS9jZWRydXMvY2VkcnVzX2RlYy5jICAgfCAxMCArKystLS0KPiAgaW5jbHVkZS9t ZWRpYS9oZXZjLWN0cmxzLmggICAgICAgICAgICAgICAgICAgIHwgMjYgKysrKysrKy0tLS0tLS0t Cj4gIDcgZmlsZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgNzYgZGVsZXRpb25zKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvZXh0 LWN0cmxzLWNvZGVjLnJzdCBiL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwv ZXh0LWN0cmxzLWNvZGVjLnJzdAo+IGluZGV4IGQwOTZjYjc1OTkzYS4uYWNmNDk0MjBlNTZkIDEw MDY0NAo+IC0tLSBhL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvZXh0LWN0 cmxzLWNvZGVjLnJzdAo+ICsrKyBiL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92 NGwvZXh0LWN0cmxzLWNvZGVjLnJzdAo+IEBAIC0yNjM5LDcgKzI2MzksNyBAQCBlbnVtIHY0bDJf bXBlZ192aWRlb19oZXZjX3NpemVfb2ZfbGVuZ3RoX2ZpZWxkIC0KPiAgCj4gIC4uIF92NGwyLW1w ZWctaGV2YzoKPiAgCj4gLWBgVjRMMl9DSURfTVBFR19WSURFT19IRVZDX1NQUyAoc3RydWN0KWBg Cj4gK2BgVjRMMl9DSURfU1RBVEVMRVNTX0hFVkNfU1BTIChzdHJ1Y3QpYGAKPiAgICAgIFNwZWNp ZmllcyB0aGUgU2VxdWVuY2UgUGFyYW1ldGVyIFNldCBmaWVsZHMgKGFzIGV4dHJhY3RlZCBmcm9t IHRoZQo+ICAgICAgYml0c3RyZWFtKSBmb3IgdGhlIGFzc29jaWF0ZWQgSEVWQyBzbGljZSBkYXRh Lgo+ICAgICAgVGhlc2UgYml0c3RyZWFtIHBhcmFtZXRlcnMgYXJlIGRlZmluZWQgYWNjb3JkaW5n IHRvIDpyZWY6YGhldmNgLgo+IEBAIC0yNzkyLDcgKzI3OTIsNyBAQCBlbnVtIHY0bDJfbXBlZ192 aWRlb19oZXZjX3NpemVfb2ZfbGVuZ3RoX2ZpZWxkIC0KPiAgCj4gICAgICBcbm9ybWFsc2l6ZQo+ ICAKPiAtYGBWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfUFBTIChzdHJ1Y3QpYGAKPiArYGBWNEwy X0NJRF9TVEFURUxFU1NfSEVWQ19QUFMgKHN0cnVjdClgYAo+ICAgICAgU3BlY2lmaWVzIHRoZSBQ aWN0dXJlIFBhcmFtZXRlciBTZXQgZmllbGRzIChhcyBleHRyYWN0ZWQgZnJvbSB0aGUKPiAgICAg IGJpdHN0cmVhbSkgZm9yIHRoZSBhc3NvY2lhdGVkIEhFVkMgc2xpY2UgZGF0YS4KPiAgICAgIFRo ZXNlIGJpdHN0cmVhbSBwYXJhbWV0ZXJzIGFyZSBkZWZpbmVkIGFjY29yZGluZyB0byA6cmVmOmBo ZXZjYC4KPiBAQCAtMjk0NSw3ICsyOTQ1LDcgQEAgZW51bSB2NGwyX21wZWdfdmlkZW9faGV2Y19z aXplX29mX2xlbmd0aF9maWVsZCAtCj4gIAo+ICAgICAgXG5vcm1hbHNpemUKPiAgCj4gLWBgVjRM Ml9DSURfTVBFR19WSURFT19IRVZDX1NMSUNFX1BBUkFNUyAoc3RydWN0KWBgCj4gK2BgVjRMMl9D SURfU1RBVEVMRVNTX0hFVkNfU0xJQ0VfUEFSQU1TIChzdHJ1Y3QpYGAKPiAgICAgIFNwZWNpZmll cyB2YXJpb3VzIHNsaWNlLXNwZWNpZmljIHBhcmFtZXRlcnMsIGVzcGVjaWFsbHkgZnJvbSB0aGUg TkFMIHVuaXQKPiAgICAgIGhlYWRlciwgZ2VuZXJhbCBzbGljZSBzZWdtZW50IGhlYWRlciBhbmQg d2VpZ2h0ZWQgcHJlZGljdGlvbiBwYXJhbWV0ZXIKPiAgICAgIHBhcnRzIG9mIHRoZSBiaXRzdHJl YW0uCj4gQEAgLTMxMTAsNyArMzExMCw3IEBAIGVudW0gdjRsMl9tcGVnX3ZpZGVvX2hldmNfc2l6 ZV9vZl9sZW5ndGhfZmllbGQgLQo+ICAKPiAgICAgIFxub3JtYWxzaXplCj4gIAo+IC1gYFY0TDJf Q0lEX01QRUdfVklERU9fSEVWQ19TQ0FMSU5HX01BVFJJWCAoc3RydWN0KWBgCj4gK2BgVjRMMl9D SURfU1RBVEVMRVNTX0hFVkNfU0NBTElOR19NQVRSSVggKHN0cnVjdClgYAo+ICAgICAgU3BlY2lm aWVzIHRoZSBIRVZDIHNjYWxpbmcgbWF0cml4IHBhcmFtZXRlcnMgdXNlZCBmb3IgdGhlIHNjYWxp bmcgcHJvY2Vzcwo+ICAgICAgZm9yIHRyYW5zZm9ybSBjb2VmZmljaWVudHMuCj4gICAgICBUaGVz ZSBtYXRyaXggYW5kIHBhcmFtZXRlcnMgYXJlIGRlZmluZWQgYWNjb3JkaW5nIHRvIDpyZWY6YGhl dmNgLgo+IEBAIC0zMjYwLDcgKzMyNjAsNyBAQCBlbnVtIHY0bDJfbXBlZ192aWRlb19oZXZjX3Np emVfb2ZfbGVuZ3RoX2ZpZWxkIC0KPiAgCj4gICAgICBcbm9ybWFsc2l6ZQo+ICAKPiAtYGBWNEwy X0NJRF9NUEVHX1ZJREVPX0hFVkNfREVDT0RFX01PREUgKGVudW0pYGAKPiArYGBWNEwyX0NJRF9T VEFURUxFU1NfSEVWQ19ERUNPREVfTU9ERSAoZW51bSlgYAo+ICAgICAgU3BlY2lmaWVzIHRoZSBk ZWNvZGluZyBtb2RlIHRvIHVzZS4gQ3VycmVudGx5IGV4cG9zZXMgc2xpY2UtYmFzZWQgYW5kCj4g ICAgICBmcmFtZS1iYXNlZCBkZWNvZGluZyBidXQgbmV3IG1vZGVzIG1pZ2h0IGJlIGFkZGVkIGxh dGVyIG9uLgo+ICAgICAgVGhpcyBjb250cm9sIGlzIHVzZWQgYXMgYSBtb2RpZmllciBmb3IgVjRM Ml9QSVhfRk1UX0hFVkNfU0xJQ0UKPiBAQCAtMzI3NSw3ICszMjc1LDcgQEAgZW51bSB2NGwyX21w ZWdfdmlkZW9faGV2Y19zaXplX29mX2xlbmd0aF9maWVsZCAtCj4gICAgICAgICBUaGlzIG1lbnUg Y29udHJvbCBpcyBub3QgeWV0IHBhcnQgb2YgdGhlIHB1YmxpYyBrZXJuZWwgQVBJIGFuZAo+ICAg ICAgICAgaXQgaXMgZXhwZWN0ZWQgdG8gY2hhbmdlLgo+ICAKPiAtLi4gYzp0eXBlOjogdjRsMl9t cGVnX3ZpZGVvX2hldmNfZGVjb2RlX21vZGUKPiArLi4gYzp0eXBlOjogdjRsMl9zdGF0ZWxlc3Nf aGV2Y19kZWNvZGVfbW9kZQo+ICAKPiAgLi4gcmF3OjogbGF0ZXgKPiAgCj4gQEAgLTMyODgsMTEg KzMyODgsMTEgQEAgZW51bSB2NGwyX21wZWdfdmlkZW9faGV2Y19zaXplX29mX2xlbmd0aF9maWVs ZCAtCj4gICAgICA6c3R1Yi1jb2x1bW5zOiAwCj4gICAgICA6d2lkdGhzOiAgICAgICAxIDEgMgo+ ICAKPiAtICAgICogLSBgYFY0TDJfTVBFR19WSURFT19IRVZDX0RFQ09ERV9NT0RFX1NMSUNFX0JB U0VEYGAKPiArICAgICogLSBgYFY0TDJfU1RBVEVMRVNTX0hFVkNfREVDT0RFX01PREVfU0xJQ0Vf QkFTRURgYAo+ICAgICAgICAtIDAKPiAgICAgICAgLSBEZWNvZGluZyBpcyBkb25lIGF0IHRoZSBz bGljZSBncmFudWxhcml0eS4KPiAgICAgICAgICBUaGUgT1VUUFVUIGJ1ZmZlciBtdXN0IGNvbnRh aW4gYSBzaW5nbGUgc2xpY2UuCj4gLSAgICAqIC0gYGBWNEwyX01QRUdfVklERU9fSEVWQ19ERUNP REVfTU9ERV9GUkFNRV9CQVNFRGBgCj4gKyAgICAqIC0gYGBWNEwyX1NUQVRFTEVTU19IRVZDX0RF Q09ERV9NT0RFX0ZSQU1FX0JBU0VEYGAKPiAgICAgICAgLSAxCj4gICAgICAgIC0gRGVjb2Rpbmcg aXMgZG9uZSBhdCB0aGUgZnJhbWUgZ3JhbnVsYXJpdHkuCj4gICAgICAgICAgVGhlIE9VVFBVVCBi dWZmZXIgbXVzdCBjb250YWluIGFsbCBzbGljZXMgbmVlZGVkIHRvIGRlY29kZSB0aGUKPiBAQCAt MzMwMiw3ICszMzAyLDcgQEAgZW51bSB2NGwyX21wZWdfdmlkZW9faGV2Y19zaXplX29mX2xlbmd0 aF9maWVsZCAtCj4gIAo+ICAgICAgXG5vcm1hbHNpemUKPiAgCj4gLWBgVjRMMl9DSURfTVBFR19W SURFT19IRVZDX1NUQVJUX0NPREUgKGVudW0pYGAKPiArYGBWNEwyX0NJRF9TVEFURUxFU1NfSEVW Q19TVEFSVF9DT0RFIChlbnVtKWBgCj4gICAgICBTcGVjaWZpZXMgdGhlIEhFVkMgc2xpY2Ugc3Rh cnQgY29kZSBleHBlY3RlZCBmb3IgZWFjaCBzbGljZS4KPiAgICAgIFRoaXMgY29udHJvbCBpcyB1 c2VkIGFzIGEgbW9kaWZpZXIgZm9yIFY0TDJfUElYX0ZNVF9IRVZDX1NMSUNFCj4gICAgICBwaXhl bCBmb3JtYXQuIEFwcGxpY2F0aW9ucyB0aGF0IHN1cHBvcnQgVjRMMl9QSVhfRk1UX0hFVkNfU0xJ Q0UKPiBAQCAtMzMxNiw3ICszMzE2LDcgQEAgZW51bSB2NGwyX21wZWdfdmlkZW9faGV2Y19zaXpl X29mX2xlbmd0aF9maWVsZCAtCj4gICAgICAgICBUaGlzIG1lbnUgY29udHJvbCBpcyBub3QgeWV0 IHBhcnQgb2YgdGhlIHB1YmxpYyBrZXJuZWwgQVBJIGFuZAo+ICAgICAgICAgaXQgaXMgZXhwZWN0 ZWQgdG8gY2hhbmdlLgo+ICAKPiAtLi4gYzp0eXBlOjogdjRsMl9tcGVnX3ZpZGVvX2hldmNfc3Rh cnRfY29kZQo+ICsuLiBjOnR5cGU6OiB2NGwyX3N0YXRlbGVzc19oZXZjX3N0YXJ0X2NvZGUKPiAg Cj4gIC4uIHRhYnVsYXJjb2x1bW5zOjogfHB7OS4yY219fHB7MC42Y219fHB7Ny41Y219fAo+ICAK PiBAQCAtMzMyNSwxMyArMzMyNSwxMyBAQCBlbnVtIHY0bDJfbXBlZ192aWRlb19oZXZjX3NpemVf b2ZfbGVuZ3RoX2ZpZWxkIC0KPiAgICAgIDpzdHViLWNvbHVtbnM6IDAKPiAgICAgIDp3aWR0aHM6 ICAgICAgIDEgMSAyCj4gIAo+IC0gICAgKiAtIGBgVjRMMl9NUEVHX1ZJREVPX0hFVkNfU1RBUlRf Q09ERV9OT05FYGAKPiArICAgICogLSBgYFY0TDJfU1RBVEVMRVNTX0hFVkNfU1RBUlRfQ09ERV9O T05FYGAKPiAgICAgICAgLSAwCj4gICAgICAgIC0gU2VsZWN0aW5nIHRoaXMgdmFsdWUgc3BlY2lm aWVzIHRoYXQgSEVWQyBzbGljZXMgYXJlIHBhc3NlZAo+ICAgICAgICAgIHRvIHRoZSBkcml2ZXIg d2l0aG91dCBhbnkgc3RhcnQgY29kZS4gVGhlIGJpdHN0cmVhbSBkYXRhIHNob3VsZCBiZQo+ICAg ICAgICAgIGFjY29yZGluZyB0byA6cmVmOmBoZXZjYCA3LjMuMS4xIEdlbmVyYWwgTkFMIHVuaXQg c3ludGF4LCBoZW5jZQo+ICAgICAgICAgIGNvbnRhaW5zIGVtdWxhdGlvbiBwcmV2ZW50aW9uIGJ5 dGVzIHdoZW4gcmVxdWlyZWQuCj4gLSAgICAqIC0gYGBWNEwyX01QRUdfVklERU9fSEVWQ19TVEFS VF9DT0RFX0FOTkVYX0JgYAo+ICsgICAgKiAtIGBgVjRMMl9TVEFURUxFU1NfSEVWQ19TVEFSVF9D T0RFX0FOTkVYX0JgYAo+ICAgICAgICAtIDEKPiAgICAgICAgLSBTZWxlY3RpbmcgdGhpcyB2YWx1 ZSBzcGVjaWZpZXMgdGhhdCBIRVZDIHNsaWNlcyBhcmUgZXhwZWN0ZWQKPiAgICAgICAgICB0byBi ZSBwcmVmaXhlZCBieSBBbm5leCBCIHN0YXJ0IGNvZGVzLiBBY2NvcmRpbmcgdG8gOnJlZjpgaGV2 Y2AKPiBAQCAtMzM2NCw3ICszMzY0LDcgQEAgZW51bSB2NGwyX21wZWdfdmlkZW9faGV2Y19zaXpl X29mX2xlbmd0aF9maWVsZCAtCj4gICAgICBUaGlzIHByb3ZpZGVzIGEgYml0bWFzayB3aGljaCBj b25zaXN0cyBvZiBiaXRzIFswLCBMVFJfQ09VTlQtMV0uCj4gICAgICBUaGlzIGlzIGFwcGxpY2Fi bGUgdG8gdGhlIEgyNjQgYW5kIEhFVkMgZW5jb2RlcnMuCj4gIAo+IC1gYFY0TDJfQ0lEX01QRUdf VklERU9fSEVWQ19ERUNPREVfUEFSQU1TIChzdHJ1Y3QpYGAKPiArYGBWNEwyX0NJRF9TVEFURUxF U1NfSEVWQ19ERUNPREVfUEFSQU1TIChzdHJ1Y3QpYGAKPiAgICAgIFNwZWNpZmllcyB2YXJpb3Vz IGRlY29kZSBwYXJhbWV0ZXJzLCBlc3BlY2lhbGx5IHRoZSByZWZlcmVuY2VzIHBpY3R1cmUgb3Jk ZXIKPiAgICAgIGNvdW50IChQT0MpIGZvciBhbGwgdGhlIGxpc3RzIChzaG9ydCwgbG9uZywgYmVm b3JlLCBjdXJyZW50LCBhZnRlcikgYW5kIHRoZQo+ICAgICAgbnVtYmVyIG9mIGVudHJpZXMgZm9y IGVhY2ggb2YgdGhlbS4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRs Mi1jdHJscy1kZWZzLmMgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWRlZnMu Ywo+IGluZGV4IDU0Y2E0ZTZiODIwYi4uNGI2OGNiZTIzMzA5IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtZGVmcy5jCj4gKysrIGIvZHJpdmVycy9tZWRp YS92NGwyLWNvcmUvdjRsMi1jdHJscy1kZWZzLmMKPiBAQCAtNjk5LDkgKzY5OSw5IEBAIGNvbnN0 IGNoYXIgKiBjb25zdCAqdjRsMl9jdHJsX2dldF9tZW51KHUzMiBpZCkKPiAgCQlyZXR1cm4gaGV2 Y190aWVyOwo+ICAJY2FzZSBWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfTE9PUF9GSUxURVJfTU9E RToKPiAgCQlyZXR1cm4gaGV2Y19sb29wX2ZpbHRlcl9tb2RlOwo+IC0JY2FzZSBWNEwyX0NJRF9N UEVHX1ZJREVPX0hFVkNfREVDT0RFX01PREU6Cj4gKwljYXNlIFY0TDJfQ0lEX1NUQVRFTEVTU19I RVZDX0RFQ09ERV9NT0RFOgo+ICAJCXJldHVybiBoZXZjX2RlY29kZV9tb2RlOwo+IC0JY2FzZSBW NEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfU1RBUlRfQ09ERToKPiArCWNhc2UgVjRMMl9DSURfU1RB VEVMRVNTX0hFVkNfU1RBUlRfQ09ERToKPiAgCQlyZXR1cm4gaGV2Y19zdGFydF9jb2RlOwo+ICAJ Y2FzZSBWNEwyX0NJRF9DQU1FUkFfT1JJRU5UQVRJT046Cj4gIAkJcmV0dXJuIGNhbWVyYV9vcmll bnRhdGlvbjsKPiBAQCAtOTk1LDEzICs5OTUsNiBAQCBjb25zdCBjaGFyICp2NGwyX2N0cmxfZ2V0 X25hbWUodTMyIGlkKQo+ICAJY2FzZSBWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfU0laRV9PRl9M RU5HVEhfRklFTEQ6CXJldHVybiAiSEVWQyBTaXplIG9mIExlbmd0aCBGaWVsZCI7Cj4gIAljYXNl IFY0TDJfQ0lEX01QRUdfVklERU9fUkVGX05VTUJFUl9GT1JfUEZSQU1FUzoJcmV0dXJuICJSZWZl cmVuY2UgRnJhbWVzIGZvciBhIFAtRnJhbWUiOwo+ICAJY2FzZSBWNEwyX0NJRF9NUEVHX1ZJREVP X1BSRVBFTkRfU1BTUFBTX1RPX0lEUjoJCXJldHVybiAiUHJlcGVuZCBTUFMgYW5kIFBQUyB0byBJ RFIiOwo+IC0JY2FzZSBWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfU1BTOgkJCXJldHVybiAiSEVW QyBTZXF1ZW5jZSBQYXJhbWV0ZXIgU2V0IjsKPiAtCWNhc2UgVjRMMl9DSURfTVBFR19WSURFT19I RVZDX1BQUzoJCQlyZXR1cm4gIkhFVkMgUGljdHVyZSBQYXJhbWV0ZXIgU2V0IjsKPiAtCWNhc2Ug VjRMMl9DSURfTVBFR19WSURFT19IRVZDX1NMSUNFX1BBUkFNUzoJCXJldHVybiAiSEVWQyBTbGlj ZSBQYXJhbWV0ZXJzIjsKPiAtCWNhc2UgVjRMMl9DSURfTVBFR19WSURFT19IRVZDX1NDQUxJTkdf TUFUUklYOgkJcmV0dXJuICJIRVZDIFNjYWxpbmcgTWF0cml4IjsKPiAtCWNhc2UgVjRMMl9DSURf TVBFR19WSURFT19IRVZDX0RFQ09ERV9QQVJBTVM6CQlyZXR1cm4gIkhFVkMgRGVjb2RlIFBhcmFt ZXRlcnMiOwo+IC0JY2FzZSBWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfREVDT0RFX01PREU6CQly ZXR1cm4gIkhFVkMgRGVjb2RlIE1vZGUiOwo+IC0JY2FzZSBWNEwyX0NJRF9NUEVHX1ZJREVPX0hF VkNfU1RBUlRfQ09ERToJCXJldHVybiAiSEVWQyBTdGFydCBDb2RlIjsKPiAgCj4gIAkvKiBDQU1F UkEgY29udHJvbHMgKi8KPiAgCS8qIEtlZXAgdGhlIG9yZGVyIG9mIHRoZSAnY2FzZSdzIHRoZSBz YW1lIGFzIGluIHY0bDItY29udHJvbHMuaCEgKi8KPiBAQCAtMTE4MCw2ICsxMTczLDEzIEBAIGNv bnN0IGNoYXIgKnY0bDJfY3RybF9nZXRfbmFtZSh1MzIgaWQpCj4gIAljYXNlIFY0TDJfQ0lEX1NU QVRFTEVTU19NUEVHMl9RVUFOVElTQVRJT046CQlyZXR1cm4gIk1QRUctMiBRdWFudGlzYXRpb24g TWF0cmljZXMiOwo+ICAJY2FzZSBWNEwyX0NJRF9TVEFURUxFU1NfVlA5X0NPTVBSRVNTRURfSERS OglyZXR1cm4gIlZQOSBQcm9iYWJpbGl0aWVzIFVwZGF0ZXMiOwo+ICAJY2FzZSBWNEwyX0NJRF9T VEFURUxFU1NfVlA5X0ZSQU1FOgkJCXJldHVybiAiVlA5IEZyYW1lIERlY29kZSBQYXJhbWV0ZXJz IjsKPiArCWNhc2UgVjRMMl9DSURfU1RBVEVMRVNTX0hFVkNfU1BTOgkJCXJldHVybiAiSEVWQyBT ZXF1ZW5jZSBQYXJhbWV0ZXIgU2V0IjsKPiArCWNhc2UgVjRMMl9DSURfU1RBVEVMRVNTX0hFVkNf UFBTOgkJCXJldHVybiAiSEVWQyBQaWN0dXJlIFBhcmFtZXRlciBTZXQiOwo+ICsJY2FzZSBWNEwy X0NJRF9TVEFURUxFU1NfSEVWQ19TTElDRV9QQVJBTVM6CQlyZXR1cm4gIkhFVkMgU2xpY2UgUGFy YW1ldGVycyI7Cj4gKwljYXNlIFY0TDJfQ0lEX1NUQVRFTEVTU19IRVZDX1NDQUxJTkdfTUFUUklY OgkJcmV0dXJuICJIRVZDIFNjYWxpbmcgTWF0cml4IjsKPiArCWNhc2UgVjRMMl9DSURfU1RBVEVM RVNTX0hFVkNfREVDT0RFX1BBUkFNUzoJCXJldHVybiAiSEVWQyBEZWNvZGUgUGFyYW1ldGVycyI7 Cj4gKwljYXNlIFY0TDJfQ0lEX1NUQVRFTEVTU19IRVZDX0RFQ09ERV9NT0RFOgkJcmV0dXJuICJI RVZDIERlY29kZSBNb2RlIjsKPiArCWNhc2UgVjRMMl9DSURfU1RBVEVMRVNTX0hFVkNfU1RBUlRf Q09ERToJCXJldHVybiAiSEVWQyBTdGFydCBDb2RlIjsKPiAgCj4gIAkvKiBDb2xvcmltZXRyeSBj b250cm9scyAqLwo+ICAJLyogS2VlcCB0aGUgb3JkZXIgb2YgdGhlICdjYXNlJ3MgdGhlIHNhbWUg YXMgaW4gdjRsMi1jb250cm9scy5oISAqLwo+IEBAIC0xMzU1LDggKzEzNTUsOCBAQCB2b2lkIHY0 bDJfY3RybF9maWxsKHUzMiBpZCwgY29uc3QgY2hhciAqKm5hbWUsIGVudW0gdjRsMl9jdHJsX3R5 cGUgKnR5cGUsCj4gIAljYXNlIFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19TSVpFX09GX0xFTkdU SF9GSUVMRDoKPiAgCWNhc2UgVjRMMl9DSURfTVBFR19WSURFT19IRVZDX1RJRVI6Cj4gIAljYXNl IFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19MT09QX0ZJTFRFUl9NT0RFOgo+IC0JY2FzZSBWNEwy X0NJRF9NUEVHX1ZJREVPX0hFVkNfREVDT0RFX01PREU6Cj4gLQljYXNlIFY0TDJfQ0lEX01QRUdf VklERU9fSEVWQ19TVEFSVF9DT0RFOgo+ICsJY2FzZSBWNEwyX0NJRF9TVEFURUxFU1NfSEVWQ19E RUNPREVfTU9ERToKPiArCWNhc2UgVjRMMl9DSURfU1RBVEVMRVNTX0hFVkNfU1RBUlRfQ09ERToK PiAgCWNhc2UgVjRMMl9DSURfU1RBVEVMRVNTX0gyNjRfREVDT0RFX01PREU6Cj4gIAljYXNlIFY0 TDJfQ0lEX1NUQVRFTEVTU19IMjY0X1NUQVJUX0NPREU6Cj4gIAljYXNlIFY0TDJfQ0lEX0NBTUVS QV9PUklFTlRBVElPTjoKPiBAQCAtMTQ5MywxOSArMTQ5MywxOSBAQCB2b2lkIHY0bDJfY3RybF9m aWxsKHUzMiBpZCwgY29uc3QgY2hhciAqKm5hbWUsIGVudW0gdjRsMl9jdHJsX3R5cGUgKnR5cGUs Cj4gIAljYXNlIFY0TDJfQ0lEX1NUQVRFTEVTU19WUDhfRlJBTUU6Cj4gIAkJKnR5cGUgPSBWNEwy X0NUUkxfVFlQRV9WUDhfRlJBTUU7Cj4gIAkJYnJlYWs7Cj4gLQljYXNlIFY0TDJfQ0lEX01QRUdf VklERU9fSEVWQ19TUFM6Cj4gKwljYXNlIFY0TDJfQ0lEX1NUQVRFTEVTU19IRVZDX1NQUzoKPiAg CQkqdHlwZSA9IFY0TDJfQ1RSTF9UWVBFX0hFVkNfU1BTOwo+ICAJCWJyZWFrOwo+IC0JY2FzZSBW NEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfUFBTOgo+ICsJY2FzZSBWNEwyX0NJRF9TVEFURUxFU1Nf SEVWQ19QUFM6Cj4gIAkJKnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9IRVZDX1BQUzsKPiAgCQlicmVh azsKPiAtCWNhc2UgVjRMMl9DSURfTVBFR19WSURFT19IRVZDX1NMSUNFX1BBUkFNUzoKPiArCWNh c2UgVjRMMl9DSURfU1RBVEVMRVNTX0hFVkNfU0xJQ0VfUEFSQU1TOgo+ICAJCSp0eXBlID0gVjRM Ml9DVFJMX1RZUEVfSEVWQ19TTElDRV9QQVJBTVM7Cj4gIAkJYnJlYWs7Cj4gLQljYXNlIFY0TDJf Q0lEX01QRUdfVklERU9fSEVWQ19TQ0FMSU5HX01BVFJJWDoKPiArCWNhc2UgVjRMMl9DSURfU1RB VEVMRVNTX0hFVkNfU0NBTElOR19NQVRSSVg6Cj4gIAkJKnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9I RVZDX1NDQUxJTkdfTUFUUklYOwo+ICAJCWJyZWFrOwo+IC0JY2FzZSBWNEwyX0NJRF9NUEVHX1ZJ REVPX0hFVkNfREVDT0RFX1BBUkFNUzoKPiArCWNhc2UgVjRMMl9DSURfU1RBVEVMRVNTX0hFVkNf REVDT0RFX1BBUkFNUzoKPiAgCQkqdHlwZSA9IFY0TDJfQ1RSTF9UWVBFX0hFVkNfREVDT0RFX1BB UkFNUzsKPiAgCQlicmVhazsKPiAgCWNhc2UgVjRMMl9DSURfU1RBVEVMRVNTX1ZQOV9DT01QUkVT U0VEX0hEUjoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50 cm9fZHJ2LmMgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19kcnYuYwo+IGlu ZGV4IGRjNzY4ODg0Y2I3OS4uNmY1OGMyNTlkOGZjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvc3Rh Z2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2Rydi5jCj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21l ZGlhL2hhbnRyby9oYW50cm9fZHJ2LmMKPiBAQCAtMjU1LDcgKzI1NSw3IEBAIHN0YXRpYyBpbnQg aGFudHJvX3RyeV9jdHJsKHN0cnVjdCB2NGwyX2N0cmwgKmN0cmwpCj4gIAkJaWYgKHNwcy0+Yml0 X2RlcHRoX2x1bWFfbWludXM4ICE9IDApCj4gIAkJCS8qIE9ubHkgOC1iaXQgaXMgc3VwcG9ydGVk ICovCj4gIAkJCXJldHVybiAtRUlOVkFMOwo+IC0JfSBlbHNlIGlmIChjdHJsLT5pZCA9PSBWNEwy X0NJRF9NUEVHX1ZJREVPX0hFVkNfU1BTKSB7Cj4gKwl9IGVsc2UgaWYgKGN0cmwtPmlkID09IFY0 TDJfQ0lEX1NUQVRFTEVTU19IRVZDX1NQUykgewo+ICAJCWNvbnN0IHN0cnVjdCB2NGwyX2N0cmxf aGV2Y19zcHMgKnNwcyA9IGN0cmwtPnBfbmV3LnBfaGV2Y19zcHM7Cj4gIAo+ICAJCWlmIChzcHMt PmJpdF9kZXB0aF9sdW1hX21pbnVzOCAhPSBzcHMtPmJpdF9kZXB0aF9jaHJvbWFfbWludXM4KQo+ IEBAIC00MjgsMTggKzQyOCwxOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGhhbnRyb19jdHJsIGNv bnRyb2xzW10gPSB7Cj4gIAl9LCB7Cj4gIAkJLmNvZGVjID0gSEFOVFJPX0hFVkNfREVDT0RFUiwK PiAgCQkuY2ZnID0gewo+IC0JCQkuaWQgPSBWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfREVDT0RF X01PREUsCj4gLQkJCS5taW4gPSBWNEwyX01QRUdfVklERU9fSEVWQ19ERUNPREVfTU9ERV9GUkFN RV9CQVNFRCwKPiAtCQkJLm1heCA9IFY0TDJfTVBFR19WSURFT19IRVZDX0RFQ09ERV9NT0RFX0ZS QU1FX0JBU0VELAo+IC0JCQkuZGVmID0gVjRMMl9NUEVHX1ZJREVPX0hFVkNfREVDT0RFX01PREVf RlJBTUVfQkFTRUQsCj4gKwkJCS5pZCA9IFY0TDJfQ0lEX1NUQVRFTEVTU19IRVZDX0RFQ09ERV9N T0RFLAo+ICsJCQkubWluID0gVjRMMl9TVEFURUxFU1NfSEVWQ19ERUNPREVfTU9ERV9GUkFNRV9C QVNFRCwKPiArCQkJLm1heCA9IFY0TDJfU1RBVEVMRVNTX0hFVkNfREVDT0RFX01PREVfRlJBTUVf QkFTRUQsCj4gKwkJCS5kZWYgPSBWNEwyX1NUQVRFTEVTU19IRVZDX0RFQ09ERV9NT0RFX0ZSQU1F X0JBU0VELAo+ICAJCX0sCj4gIAl9LCB7Cj4gIAkJLmNvZGVjID0gSEFOVFJPX0hFVkNfREVDT0RF UiwKPiAgCQkuY2ZnID0gewo+IC0JCQkuaWQgPSBWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfU1RB UlRfQ09ERSwKPiAtCQkJLm1pbiA9IFY0TDJfTVBFR19WSURFT19IRVZDX1NUQVJUX0NPREVfQU5O RVhfQiwKPiAtCQkJLm1heCA9IFY0TDJfTVBFR19WSURFT19IRVZDX1NUQVJUX0NPREVfQU5ORVhf QiwKPiAtCQkJLmRlZiA9IFY0TDJfTVBFR19WSURFT19IRVZDX1NUQVJUX0NPREVfQU5ORVhfQiwK PiArCQkJLmlkID0gVjRMMl9DSURfU1RBVEVMRVNTX0hFVkNfU1RBUlRfQ09ERSwKPiArCQkJLm1p biA9IFY0TDJfU1RBVEVMRVNTX0hFVkNfU1RBUlRfQ09ERV9BTk5FWF9CLAo+ICsJCQkubWF4ID0g VjRMMl9TVEFURUxFU1NfSEVWQ19TVEFSVF9DT0RFX0FOTkVYX0IsCj4gKwkJCS5kZWYgPSBWNEwy X1NUQVRFTEVTU19IRVZDX1NUQVJUX0NPREVfQU5ORVhfQiwKPiAgCQl9LAo+ICAJfSwgewo+ICAJ CS5jb2RlYyA9IEhBTlRST19IRVZDX0RFQ09ERVIsCj4gQEAgLTQ1OSwyMyArNDU5LDIzIEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaGFudHJvX2N0cmwgY29udHJvbHNbXSA9IHsKPiAgCX0sIHsKPiAg CQkuY29kZWMgPSBIQU5UUk9fSEVWQ19ERUNPREVSLAo+ICAJCS5jZmcgPSB7Cj4gLQkJCS5pZCA9 IFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19TUFMsCj4gKwkJCS5pZCA9IFY0TDJfQ0lEX1NUQVRF TEVTU19IRVZDX1NQUywKPiAgCQkJLm9wcyA9ICZoYW50cm9fY3RybF9vcHMsCj4gIAkJfSwKPiAg CX0sIHsKPiAgCQkuY29kZWMgPSBIQU5UUk9fSEVWQ19ERUNPREVSLAo+ICAJCS5jZmcgPSB7Cj4g LQkJCS5pZCA9IFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19QUFMsCj4gKwkJCS5pZCA9IFY0TDJf Q0lEX1NUQVRFTEVTU19IRVZDX1BQUywKPiAgCQl9LAo+ICAJfSwgewo+ICAJCS5jb2RlYyA9IEhB TlRST19IRVZDX0RFQ09ERVIsCj4gIAkJLmNmZyA9IHsKPiAtCQkJLmlkID0gVjRMMl9DSURfTVBF R19WSURFT19IRVZDX0RFQ09ERV9QQVJBTVMsCj4gKwkJCS5pZCA9IFY0TDJfQ0lEX1NUQVRFTEVT U19IRVZDX0RFQ09ERV9QQVJBTVMsCj4gIAkJfSwKPiAgCX0sIHsKPiAgCQkuY29kZWMgPSBIQU5U Uk9fSEVWQ19ERUNPREVSLAo+ICAJCS5jZmcgPSB7Cj4gLQkJCS5pZCA9IFY0TDJfQ0lEX01QRUdf VklERU9fSEVWQ19TQ0FMSU5HX01BVFJJWCwKPiArCQkJLmlkID0gVjRMMl9DSURfU1RBVEVMRVNT X0hFVkNfU0NBTElOR19NQVRSSVgsCj4gIAkJfSwKPiAgCX0sIHsKPiAgCQkuY29kZWMgPSBIQU5U Uk9fSEVWQ19ERUNPREVSLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFu dHJvL2hhbnRyb19oZXZjLmMgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19o ZXZjLmMKPiBpbmRleCBiNDlhNDFkN2FlOTEuLmI2ZWM4NmQwM2Q5MSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19oZXZjLmMKPiArKysgYi9kcml2ZXJz L3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19oZXZjLmMKPiBAQCAtMjAxLDIyICsyMDEsMjIg QEAgaW50IGhhbnRyb19oZXZjX2RlY19wcmVwYXJlX3J1bihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4 KQo+ICAJaGFudHJvX3N0YXJ0X3ByZXBhcmVfcnVuKGN0eCk7Cj4gIAo+ICAJY3RybHMtPmRlY29k ZV9wYXJhbXMgPQo+IC0JCWhhbnRyb19nZXRfY3RybChjdHgsIFY0TDJfQ0lEX01QRUdfVklERU9f SEVWQ19ERUNPREVfUEFSQU1TKTsKPiArCQloYW50cm9fZ2V0X2N0cmwoY3R4LCBWNEwyX0NJRF9T VEFURUxFU1NfSEVWQ19ERUNPREVfUEFSQU1TKTsKPiAgCWlmIChXQVJOX09OKCFjdHJscy0+ZGVj b2RlX3BhcmFtcykpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJY3RybHMtPnNjYWxpbmcg PQo+IC0JCWhhbnRyb19nZXRfY3RybChjdHgsIFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19TQ0FM SU5HX01BVFJJWCk7Cj4gKwkJaGFudHJvX2dldF9jdHJsKGN0eCwgVjRMMl9DSURfU1RBVEVMRVNT X0hFVkNfU0NBTElOR19NQVRSSVgpOwo+ICAJaWYgKFdBUk5fT04oIWN0cmxzLT5zY2FsaW5nKSkK PiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gIAljdHJscy0+c3BzID0KPiAtCQloYW50cm9fZ2V0 X2N0cmwoY3R4LCBWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfU1BTKTsKPiArCQloYW50cm9fZ2V0 X2N0cmwoY3R4LCBWNEwyX0NJRF9TVEFURUxFU1NfSEVWQ19TUFMpOwo+ICAJaWYgKFdBUk5fT04o IWN0cmxzLT5zcHMpKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCWN0cmxzLT5wcHMgPQo+ IC0JCWhhbnRyb19nZXRfY3RybChjdHgsIFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19QUFMpOwo+ ICsJCWhhbnRyb19nZXRfY3RybChjdHgsIFY0TDJfQ0lEX1NUQVRFTEVTU19IRVZDX1BQUyk7Cj4g IAlpZiAoV0FSTl9PTighY3RybHMtPnBwcykpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvY2VkcnVzL2NlZHJ1cy5jIGIv ZHJpdmVycy9zdGFnaW5nL21lZGlhL3N1bnhpL2NlZHJ1cy9jZWRydXMuYwo+IGluZGV4IDRhNGI3 MTRiMGYyNi4uZTA0MjgxNjNmODJjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRp YS9zdW54aS9jZWRydXMvY2VkcnVzLmMKPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3Vu eGkvY2VkcnVzL2NlZHJ1cy5jCj4gQEAgLTQyLDcgKzQyLDcgQEAgc3RhdGljIGludCBjZWRydXNf dHJ5X2N0cmwoc3RydWN0IHY0bDJfY3RybCAqY3RybCkKPiAgCQlpZiAoc3BzLT5iaXRfZGVwdGhf bHVtYV9taW51czggIT0gMCkKPiAgCQkJLyogT25seSA4LWJpdCBpcyBzdXBwb3J0ZWQgKi8KPiAg CQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQl9IGVsc2UgaWYgKGN0cmwtPmlkID09IFY0TDJfQ0lEX01Q RUdfVklERU9fSEVWQ19TUFMpIHsKPiArCX0gZWxzZSBpZiAoY3RybC0+aWQgPT0gVjRMMl9DSURf U1RBVEVMRVNTX0hFVkNfU1BTKSB7Cj4gIAkJY29uc3Qgc3RydWN0IHY0bDJfY3RybF9oZXZjX3Nw cyAqc3BzID0gY3RybC0+cF9uZXcucF9oZXZjX3NwczsKPiAgCQlzdHJ1Y3QgY2VkcnVzX2N0eCAq Y3R4ID0gY29udGFpbmVyX29mKGN0cmwtPmhhbmRsZXIsIHN0cnVjdCBjZWRydXNfY3R4LCBoZGwp Owo+ICAKPiBAQCAtMTY0LDQyICsxNjQsNDIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjZWRydXNf Y29udHJvbCBjZWRydXNfY29udHJvbHNbXSA9IHsKPiAgCX0sCj4gIAl7Cj4gIAkJLmNmZyA9IHsK PiAtCQkJLmlkCT0gVjRMMl9DSURfTVBFR19WSURFT19IRVZDX1NQUywKPiArCQkJLmlkCT0gVjRM Ml9DSURfU1RBVEVMRVNTX0hFVkNfU1BTLAo+ICAJCQkub3BzCT0gJmNlZHJ1c19jdHJsX29wcywK PiAgCQl9LAo+ICAJCS5jb2RlYwkJPSBDRURSVVNfQ09ERUNfSDI2NSwKPiAgCX0sCj4gIAl7Cj4g IAkJLmNmZyA9IHsKPiAtCQkJLmlkCT0gVjRMMl9DSURfTVBFR19WSURFT19IRVZDX1BQUywKPiAr CQkJLmlkCT0gVjRMMl9DSURfU1RBVEVMRVNTX0hFVkNfUFBTLAo+ICAJCX0sCj4gIAkJLmNvZGVj CQk9IENFRFJVU19DT0RFQ19IMjY1LAo+ICAJfSwKPiAgCXsKPiAgCQkuY2ZnID0gewo+IC0JCQku aWQJPSBWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfU0xJQ0VfUEFSQU1TLAo+ICsJCQkuaWQJPSBW NEwyX0NJRF9TVEFURUxFU1NfSEVWQ19TTElDRV9QQVJBTVMsCj4gIAkJfSwKPiAgCQkuY29kZWMJ CT0gQ0VEUlVTX0NPREVDX0gyNjUsCj4gIAl9LAo+ICAJewo+ICAJCS5jZmcgPSB7Cj4gLQkJCS5p ZAk9IFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19TQ0FMSU5HX01BVFJJWCwKPiArCQkJLmlkCT0g VjRMMl9DSURfU1RBVEVMRVNTX0hFVkNfU0NBTElOR19NQVRSSVgsCj4gIAkJfSwKPiAgCQkuY29k ZWMJCT0gQ0VEUlVTX0NPREVDX0gyNjUsCj4gIAl9LAo+ICAJewo+ICAJCS5jZmcgPSB7Cj4gLQkJ CS5pZAk9IFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19ERUNPREVfTU9ERSwKPiAtCQkJLm1heAk9 IFY0TDJfTVBFR19WSURFT19IRVZDX0RFQ09ERV9NT0RFX1NMSUNFX0JBU0VELAo+IC0JCQkuZGVm CT0gVjRMMl9NUEVHX1ZJREVPX0hFVkNfREVDT0RFX01PREVfU0xJQ0VfQkFTRUQsCj4gKwkJCS5p ZAk9IFY0TDJfQ0lEX1NUQVRFTEVTU19IRVZDX0RFQ09ERV9NT0RFLAo+ICsJCQkubWF4CT0gVjRM Ml9TVEFURUxFU1NfSEVWQ19ERUNPREVfTU9ERV9TTElDRV9CQVNFRCwKPiArCQkJLmRlZgk9IFY0 TDJfU1RBVEVMRVNTX0hFVkNfREVDT0RFX01PREVfU0xJQ0VfQkFTRUQsCj4gIAkJfSwKPiAgCQku Y29kZWMJCT0gQ0VEUlVTX0NPREVDX0gyNjUsCj4gIAl9LAo+ICAJewo+ICAJCS5jZmcgPSB7Cj4g LQkJCS5pZAk9IFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19TVEFSVF9DT0RFLAo+IC0JCQkubWF4 CT0gVjRMMl9NUEVHX1ZJREVPX0hFVkNfU1RBUlRfQ09ERV9OT05FLAo+IC0JCQkuZGVmCT0gVjRM Ml9NUEVHX1ZJREVPX0hFVkNfU1RBUlRfQ09ERV9OT05FLAo+ICsJCQkuaWQJPSBWNEwyX0NJRF9T VEFURUxFU1NfSEVWQ19TVEFSVF9DT0RFLAo+ICsJCQkubWF4CT0gVjRMMl9TVEFURUxFU1NfSEVW Q19TVEFSVF9DT0RFX05PTkUsCj4gKwkJCS5kZWYJPSBWNEwyX1NUQVRFTEVTU19IRVZDX1NUQVJU X0NPREVfTk9ORSwKPiAgCQl9LAo+ICAJCS5jb2RlYwkJPSBDRURSVVNfQ09ERUNfSDI2NSwKPiAg CX0sCj4gQEAgLTIxMSw3ICsyMTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNlZHJ1c19jb250 cm9sIGNlZHJ1c19jb250cm9sc1tdID0gewo+ICAJfSwKPiAgCXsKPiAgCQkuY2ZnID0gewo+IC0J CQkuaWQgPSBWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfREVDT0RFX1BBUkFNUywKPiArCQkJLmlk ID0gVjRMMl9DSURfU1RBVEVMRVNTX0hFVkNfREVDT0RFX1BBUkFNUywKPiAgCQl9LAo+ICAJCS5j b2RlYwkJPSBDRURSVVNfQ09ERUNfSDI2NSwKPiAgCX0sCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv c3RhZ2luZy9tZWRpYS9zdW54aS9jZWRydXMvY2VkcnVzX2RlYy5jIGIvZHJpdmVycy9zdGFnaW5n L21lZGlhL3N1bnhpL2NlZHJ1cy9jZWRydXNfZGVjLmMKPiBpbmRleCBhMTZjMTQyMjU1OGYuLmY2 YmU0YWU3MmVlMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvY2Vk cnVzL2NlZHJ1c19kZWMuYwo+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9zdW54aS9jZWRy dXMvY2VkcnVzX2RlYy5jCj4gQEAgLTY1LDE1ICs2NSwxNSBAQCB2b2lkIGNlZHJ1c19kZXZpY2Vf cnVuKHZvaWQgKnByaXYpCj4gIAo+ICAJY2FzZSBWNEwyX1BJWF9GTVRfSEVWQ19TTElDRToKPiAg CQlydW4uaDI2NS5zcHMgPSBjZWRydXNfZmluZF9jb250cm9sX2RhdGEoY3R4LAo+IC0JCQlWNEwy X0NJRF9NUEVHX1ZJREVPX0hFVkNfU1BTKTsKPiArCQkJVjRMMl9DSURfU1RBVEVMRVNTX0hFVkNf U1BTKTsKPiAgCQlydW4uaDI2NS5wcHMgPSBjZWRydXNfZmluZF9jb250cm9sX2RhdGEoY3R4LAo+ IC0JCQlWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfUFBTKTsKPiArCQkJVjRMMl9DSURfU1RBVEVM RVNTX0hFVkNfUFBTKTsKPiAgCQlydW4uaDI2NS5zbGljZV9wYXJhbXMgPSBjZWRydXNfZmluZF9j b250cm9sX2RhdGEoY3R4LAo+IC0JCQlWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfU0xJQ0VfUEFS QU1TKTsKPiArCQkJVjRMMl9DSURfU1RBVEVMRVNTX0hFVkNfU0xJQ0VfUEFSQU1TKTsKPiAgCQly dW4uaDI2NS5kZWNvZGVfcGFyYW1zID0gY2VkcnVzX2ZpbmRfY29udHJvbF9kYXRhKGN0eCwKPiAt CQkJVjRMMl9DSURfTVBFR19WSURFT19IRVZDX0RFQ09ERV9QQVJBTVMpOwo+ICsJCQlWNEwyX0NJ RF9TVEFURUxFU1NfSEVWQ19ERUNPREVfUEFSQU1TKTsKPiAgCQlydW4uaDI2NS5zY2FsaW5nX21h dHJpeCA9IGNlZHJ1c19maW5kX2NvbnRyb2xfZGF0YShjdHgsCj4gLQkJCVY0TDJfQ0lEX01QRUdf VklERU9fSEVWQ19TQ0FMSU5HX01BVFJJWCk7Cj4gKwkJCVY0TDJfQ0lEX1NUQVRFTEVTU19IRVZD X1NDQUxJTkdfTUFUUklYKTsKPiAgCQlicmVhazsKPiAgCj4gIAljYXNlIFY0TDJfUElYX0ZNVF9W UDhfRlJBTUU6Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvaGV2Yy1jdHJscy5oIGIvaW5j bHVkZS9tZWRpYS9oZXZjLWN0cmxzLmgKPiBpbmRleCBhMzI5ZTA4NmE4OWEuLmIzNTQwMTY3ZGY5 ZSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL21lZGlhL2hldmMtY3RybHMuaAo+ICsrKyBiL2luY2x1 ZGUvbWVkaWEvaGV2Yy1jdHJscy5oCj4gQEAgLTE2LDEzICsxNiwxMyBAQAo+ICAvKiBUaGUgcGl4 ZWwgZm9ybWF0IGlzbid0IHN0YWJsZSBhdCB0aGUgbW9tZW50IGFuZCB3aWxsIGxpa2VseSBiZSBy ZW5hbWVkLiAqLwo+ICAjZGVmaW5lIFY0TDJfUElYX0ZNVF9IRVZDX1NMSUNFIHY0bDJfZm91cmNj KCdTJywgJzInLCAnNicsICc1JykgLyogSEVWQyBwYXJzZWQgc2xpY2VzICovCj4gIAo+IC0jZGVm aW5lIFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19TUFMJCShWNEwyX0NJRF9DT0RFQ19CQVNFICsg MTAwOCkKPiAtI2RlZmluZSBWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfUFBTCQkoVjRMMl9DSURf Q09ERUNfQkFTRSArIDEwMDkpCj4gLSNkZWZpbmUgVjRMMl9DSURfTVBFR19WSURFT19IRVZDX1NM SUNFX1BBUkFNUwkoVjRMMl9DSURfQ09ERUNfQkFTRSArIDEwMTApCj4gLSNkZWZpbmUgVjRMMl9D SURfTVBFR19WSURFT19IRVZDX1NDQUxJTkdfTUFUUklYCShWNEwyX0NJRF9DT0RFQ19CQVNFICsg MTAxMSkKPiAtI2RlZmluZSBWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfREVDT0RFX1BBUkFNUwko VjRMMl9DSURfQ09ERUNfQkFTRSArIDEwMTIpCj4gLSNkZWZpbmUgVjRMMl9DSURfTVBFR19WSURF T19IRVZDX0RFQ09ERV9NT0RFCShWNEwyX0NJRF9DT0RFQ19CQVNFICsgMTAxNSkKPiAtI2RlZmlu ZSBWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfU1RBUlRfQ09ERQkoVjRMMl9DSURfQ09ERUNfQkFT RSArIDEwMTYpCj4gKyNkZWZpbmUgVjRMMl9DSURfU1RBVEVMRVNTX0hFVkNfU1BTCQkoVjRMMl9D SURfQ09ERUNfQkFTRSArIDEwMDgpCj4gKyNkZWZpbmUgVjRMMl9DSURfU1RBVEVMRVNTX0hFVkNf UFBTCQkoVjRMMl9DSURfQ09ERUNfQkFTRSArIDEwMDkpCj4gKyNkZWZpbmUgVjRMMl9DSURfU1RB VEVMRVNTX0hFVkNfU0xJQ0VfUEFSQU1TCShWNEwyX0NJRF9DT0RFQ19CQVNFICsgMTAxMCkKPiAr I2RlZmluZSBWNEwyX0NJRF9TVEFURUxFU1NfSEVWQ19TQ0FMSU5HX01BVFJJWAkoVjRMMl9DSURf Q09ERUNfQkFTRSArIDEwMTEpCj4gKyNkZWZpbmUgVjRMMl9DSURfU1RBVEVMRVNTX0hFVkNfREVD T0RFX1BBUkFNUwkoVjRMMl9DSURfQ09ERUNfQkFTRSArIDEwMTIpCj4gKyNkZWZpbmUgVjRMMl9D SURfU1RBVEVMRVNTX0hFVkNfREVDT0RFX01PREUJKFY0TDJfQ0lEX0NPREVDX0JBU0UgKyAxMDE1 KQo+ICsjZGVmaW5lIFY0TDJfQ0lEX1NUQVRFTEVTU19IRVZDX1NUQVJUX0NPREUJKFY0TDJfQ0lE X0NPREVDX0JBU0UgKyAxMDE2KQo+ICAKPiAgLyogZW51bSB2NGwyX2N0cmxfdHlwZSB0eXBlIHZh bHVlcyAqLwo+ICAjZGVmaW5lIFY0TDJfQ1RSTF9UWVBFX0hFVkNfU1BTIDB4MDEyMAo+IEBAIC0z MSwxNCArMzEsMTQgQEAKPiAgI2RlZmluZSBWNEwyX0NUUkxfVFlQRV9IRVZDX1NDQUxJTkdfTUFU UklYIDB4MDEyMwo+ICAjZGVmaW5lIFY0TDJfQ1RSTF9UWVBFX0hFVkNfREVDT0RFX1BBUkFNUyAw eDAxMjQKPiAgCj4gLWVudW0gdjRsMl9tcGVnX3ZpZGVvX2hldmNfZGVjb2RlX21vZGUgewo+IC0J VjRMMl9NUEVHX1ZJREVPX0hFVkNfREVDT0RFX01PREVfU0xJQ0VfQkFTRUQsCj4gLQlWNEwyX01Q RUdfVklERU9fSEVWQ19ERUNPREVfTU9ERV9GUkFNRV9CQVNFRCwKPiArZW51bSB2NGwyX3N0YXRl bGVzc19oZXZjX2RlY29kZV9tb2RlIHsKPiArCVY0TDJfU1RBVEVMRVNTX0hFVkNfREVDT0RFX01P REVfU0xJQ0VfQkFTRUQsCj4gKwlWNEwyX1NUQVRFTEVTU19IRVZDX0RFQ09ERV9NT0RFX0ZSQU1F X0JBU0VELAo+ICB9Owo+ICAKPiAtZW51bSB2NGwyX21wZWdfdmlkZW9faGV2Y19zdGFydF9jb2Rl IHsKPiAtCVY0TDJfTVBFR19WSURFT19IRVZDX1NUQVJUX0NPREVfTk9ORSwKPiAtCVY0TDJfTVBF R19WSURFT19IRVZDX1NUQVJUX0NPREVfQU5ORVhfQiwKPiArZW51bSB2NGwyX3N0YXRlbGVzc19o ZXZjX3N0YXJ0X2NvZGUgewo+ICsJVjRMMl9TVEFURUxFU1NfSEVWQ19TVEFSVF9DT0RFX05PTkUs Cj4gKwlWNEwyX1NUQVRFTEVTU19IRVZDX1NUQVJUX0NPREVfQU5ORVhfQiwKPiAgfTsKPiAgCj4g ICNkZWZpbmUgVjRMMl9IRVZDX1NMSUNFX1RZUEVfQgkwCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QK bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=