From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id CDB8C46675 for ; Tue, 30 May 2023 07:59:05 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 87EB068C1C3; Tue, 30 May 2023 10:59:02 +0300 (EEST) Received: from mail-vs1-f54.google.com (mail-vs1-f54.google.com [209.85.217.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DB50D68BFDD for ; Tue, 30 May 2023 10:58:56 +0300 (EEST) Received: by mail-vs1-f54.google.com with SMTP id ada2fe7eead31-4394b1820a8so1366058137.3 for ; Tue, 30 May 2023 00:58:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1685433535; x=1688025535; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=E9KLrhIo3y1WZXOEm1aL61w7ZNb1CM5lSH+4VcKLlIw=; b=VyNuiItXD3T9nn3VWJAX6uxPodYnVgyMDjD7gOpFzZH4pIIgK+HCWbqUM5mK1HvDIl 2IRz5g2Vl/NUDUUtNmwAv/EW3kM94OqNP3uq0G22y0ISd8FqH9MkTGu9omnjp6lwfhhW 0BImuc6byRkCT2HIwa83C65DUHLtw6FHQzkL/rAIxU1i9RQBOF/B2fVA6NWZQmS+zSia VO6WFgf1VqH+QLLWeH6xpIhYuP1mXpVkOSCAlst2w+XMS38Y2QLk9XZoFyRUtHvybpWf 7aWTL6ZN+/bBVNSGzRE5Vl6iDiF4Uif9pFKly1SSYyB3fD+zkyb95e9BntzRqYv2ciAg Fd0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685433535; x=1688025535; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=E9KLrhIo3y1WZXOEm1aL61w7ZNb1CM5lSH+4VcKLlIw=; b=iCcvqAUfcVBm1B8sSMGSrv2ZPMYred24mYJBmHTVX7I2Tb2DasacL/BIwWaUUGr1/e lY4ktWjpmhufKBVzcvQKYKqiasXnaLV49rhee1rIGWUpWkKFr8eIKV0wSAeqeG56Hmr6 TDhkzvezhtsIt3H/TWC930mo0QdfYiknlvR4Lr91cWeEKVtkdY78bcGrcRee/RY8T/eH dOT8gINyTFuQhAWeaHZulQ4QGAKsOfJpqippMQpN41xQWrHzaked4ZBMwK8fBzJ1YBfo gaDLg7JfO1Qdc0pcxFIXO8L0nvWK82d5s1HRrYjz0LlQzilOqOT8WOnBMvQabszTzEeH o4AQ== X-Gm-Message-State: AC+VfDymDULGGd6YH7S8WZad9U31OizeESF2YabgV2LH3Q4FQ7uzMRAq N06LPYwC3oHq/N87mDqUGQmJFQW41CTY5Om1Qe/jFyyC X-Google-Smtp-Source: ACHHUZ46L2nhBgzE48kh6LNXdCl34sHLfjzEV16Oap9H/jTf8kQO/E2CwjMmEEMGwXkbRqH/3t6VmrBPws1krK6H3ug= X-Received: by 2002:a67:b64c:0:b0:439:47c3:a08e with SMTP id e12-20020a67b64c000000b0043947c3a08emr435266vsm.13.1685433534844; Tue, 30 May 2023 00:58:54 -0700 (PDT) MIME-Version: 1.0 References: <20230530013359.31434-1-epirat07@gmail.com> In-Reply-To: <20230530013359.31434-1-epirat07@gmail.com> From: Paul B Mahol Date: Tue, 30 May 2023 10:05:28 +0200 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH] libavfilter: add vf_xfade_vulkan X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Marvin Scholz Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gVHVlLCBNYXkgMzAsIDIwMjMgYXQgMzozNOKAr0FNIE1hcnZpbiBTY2hvbHogPGVwaXJhdDA3 QGdtYWlsLmNvbT4gd3JvdGU6Cgo+IFRoaXMgaXMgYW4gaW5pdGlhbCB2ZXJzaW9uIG9mIHZmX3hm YWRlX3Z1bGthbiBiYXNlZAo+IG9uIHZmX3hmYWRlX29wZW5jbCwgZm9yIG5vdyBvbmx5IGZhZGUg YW5kIHdpcGVsZWZ0Cj4gdHJhbnNpdGlvbnMgYXJlIHN1cHBvcnRlZC4KPiAtLS0KPiAgbGliYXZm aWx0ZXIvTWFrZWZpbGUgICAgICAgICAgfCAgIDEgKwo+ICBsaWJhdmZpbHRlci9hbGxmaWx0ZXJz LmMgICAgICB8ICAgMSArCj4gIGxpYmF2ZmlsdGVyL3ZmX3hmYWRlX3Z1bGthbi5jIHwgNDQxICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCA0NDMg aW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0ZXIvdmZfeGZhZGVf dnVsa2FuLmMKPgo+IGRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9NYWtlZmlsZSBiL2xpYmF2Zmls dGVyL01ha2VmaWxlCj4gaW5kZXggMTg5MzViMTYxNi4uZmYxNDlhMzczMyAxMDA2NDQKPiAtLS0g YS9saWJhdmZpbHRlci9NYWtlZmlsZQo+ICsrKyBiL2xpYmF2ZmlsdGVyL01ha2VmaWxlCj4gQEAg LTU1Miw2ICs1NTIsNyBAQCBPQkpTLSQoQ09ORklHX1hCUl9GSUxURVIpICAgICAgICAgICAgICAg ICAgICArPQo+IHZmX3hici5vCj4gIE9CSlMtJChDT05GSUdfWENPUlJFTEFURV9GSUxURVIpICAg ICAgICAgICAgICs9IHZmX2NvbnZvbHZlLm8gZnJhbWVzeW5jLm8KPiAgT0JKUy0kKENPTkZJR19Y RkFERV9GSUxURVIpICAgICAgICAgICAgICAgICAgKz0gdmZfeGZhZGUubwo+ICBPQkpTLSQoQ09O RklHX1hGQURFX09QRU5DTF9GSUxURVIpICAgICAgICAgICArPSB2Zl94ZmFkZV9vcGVuY2wubwo+ IG9wZW5jbC5vIG9wZW5jbC94ZmFkZS5vCj4gK09CSlMtJChDT05GSUdfWEZBREVfVlVMS0FOX0ZJ TFRFUikgICAgICAgICAgICs9IHZmX3hmYWRlX3Z1bGthbi5vCj4gdnVsa2FuLm8gdnVsa2FuX2Zp bHRlci5vCj4gIE9CSlMtJChDT05GSUdfWE1FRElBTl9GSUxURVIpICAgICAgICAgICAgICAgICs9 IHZmX3htZWRpYW4ubyBmcmFtZXN5bmMubwo+ICBPQkpTLSQoQ09ORklHX1hTVEFDS19GSUxURVIp ICAgICAgICAgICAgICAgICArPSB2Zl9zdGFjay5vIGZyYW1lc3luYy5vCj4gIE9CSlMtJChDT05G SUdfWUFESUZfRklMVEVSKSAgICAgICAgICAgICAgICAgICs9IHZmX3lhZGlmLm8geWFkaWZfY29t bW9uLm8KPiBkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jIGIvbGliYXZmaWx0 ZXIvYWxsZmlsdGVycy5jCj4gaW5kZXggZjFmNzgxMTAxYi4uNjU5M2U0ZWI4MyAxMDA2NDQKPiAt LS0gYS9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMKPiArKysgYi9saWJhdmZpbHRlci9hbGxmaWx0 ZXJzLmMKPiBAQCAtNTE5LDYgKzUxOSw3IEBAIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl94 YnI7Cj4gIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl94Y29ycmVsYXRlOwo+ICBleHRlcm4g Y29uc3QgQVZGaWx0ZXIgZmZfdmZfeGZhZGU7Cj4gIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92 Zl94ZmFkZV9vcGVuY2w7Cj4gK2V4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl94ZmFkZV92dWxr YW47Cj4gIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl94bWVkaWFuOwo+ICBleHRlcm4gY29u c3QgQVZGaWx0ZXIgZmZfdmZfeHN0YWNrOwo+ICBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZf eWFkaWY7Cj4gZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL3ZmX3hmYWRlX3Z1bGthbi5jIGIvbGli YXZmaWx0ZXIvdmZfeGZhZGVfdnVsa2FuLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4 IDAwMDAwMDAwMDAuLjRhNDdjNjhmYjQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliYXZmaWx0 ZXIvdmZfeGZhZGVfdnVsa2FuLmMKPiBAQCAtMCwwICsxLDQ0MSBAQAo+ICsvKgo+ICsgKiBUaGlz IGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiAr ICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ICsg KiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEgVVNBCj4gKyAq Lwo+ICsKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9yYW5kb21fc2VlZC5oIgo+ICsjaW5jbHVkZSAi bGliYXZ1dGlsL29wdC5oIgo+ICsjaW5jbHVkZSAidnVsa2FuX2ZpbHRlci5oIgo+ICsjaW5jbHVk ZSAidnVsa2FuX3NwaXJ2LmgiCj4gKyNpbmNsdWRlICJmaWx0ZXJzLmgiCj4gKyNpbmNsdWRlICJp bnRlcm5hbC5oIgo+ICsKPiArI2RlZmluZSBJTl9BIDAKPiArI2RlZmluZSBJTl9CIDEKPiArCj4g K2VudW0gWEZhZGVUcmFuc2l0aW9ucyB7Cj4gKyAgICBGQURFLAo+ICsgICAgV0lQRUxFRlQsCj4g KyAgICBOQl9UUkFOU0lUSU9OUywKPiArfTsKPiArCj4gK3R5cGVkZWYgc3RydWN0IFhGYWRlUGFy YW1ldGVycyB7Cj4gKyAgICBmbG9hdCBwcm9ncmVzczsKPiArfSBYRmFkZVBhcmFtZXRlcnM7Cj4g Kwo+ICt0eXBlZGVmIHN0cnVjdCBYRmFkZVZ1bGthbkNvbnRleHQgewo+ICsgICAgRkZWdWxrYW5D b250ZXh0ICAgICB2a2N0eDsKPiArCj4gKyAgICBpbnQgICAgICAgICAgICAgICAgIHRyYW5zaXRp b247Cj4gKyAgICBpbnQ2NF90ICAgICAgICAgICAgIGR1cmF0aW9uOwo+ICsgICAgaW50NjRfdCAg ICAgICAgICAgICBvZmZzZXQ7Cj4gKwo+ICsgICAgaW50ICAgICAgICAgICAgICAgICBpbml0aWFs aXplZDsKPiArICAgIEZGVnVsa2FuUGlwZWxpbmUgICAgcGw7Cj4gKyAgICBGRlZrRXhlY1Bvb2wg ICAgICAgIGU7Cj4gKyAgICBGRlZrUXVldWVGYW1pbHlDdHggIHFmOwo+ICsgICAgRkZWa1NQSVJW U2hhZGVyICAgICBzaGQ7Cj4gKyAgICBWa1NhbXBsZXIgICAgICAgICAgIHNhbXBsZXI7Cj4gKwo+ ICsgICAgaW50NjRfdCAgICAgICAgICAgICBkdXJhdGlvbl9wdHM7Cj4gKyAgICBpbnQ2NF90ICAg ICAgICAgICAgIG9mZnNldF9wdHM7Cj4gKyAgICBpbnQ2NF90ICAgICAgICAgICAgIGZpcnN0X3B0 czsKPiArICAgIGludDY0X3QgICAgICAgICAgICAgbGFzdF9wdHM7Cj4gKyAgICBpbnQ2NF90ICAg ICAgICAgICAgIHB0czsKPiArICAgIGludCAgICAgICAgICAgICAgICAgeGZhZGVfaXNfb3ZlcjsK PiArICAgIGludCAgICAgICAgICAgICAgICAgbmVlZF9zZWNvbmQ7Cj4gKyAgICBpbnQgICAgICAg ICAgICAgICAgIGVvZlsyXTsKPiArICAgIEFWRnJhbWUgICAgICAgICAgICAgKnhmWzJdOwo+ICt9 IFhGYWRlVnVsa2FuQ29udGV4dDsKPiArCj4gK3N0YXRpYyBjb25zdCBjaGFyIHRyYW5zaXRpb25f ZmFkZVtdID0gewo+ICsgICAgQygwLCB2b2lkIHRyYW5zaXRpb24oaW50IGlkeCwgaXZlYzIgcG9z LCBmbG9hdCBwcm9ncmVzcykKPiAgICAgICkKPiArICAgIEMoMCwgewo+ICAgICAgKQo+ICsgICAg QygxLCAgICAgdmVjNCBhID0gdGV4dHVyZShhX2ltYWdlc1tpZHhdLCBwb3MpOwo+ICAgICAgKQo+ ICsgICAgQygxLCAgICAgdmVjNCBiID0gdGV4dHVyZShiX2ltYWdlc1tpZHhdLCBwb3MpOwo+ICAg ICAgKQo+ICsgICAgQygxLCAgICAgaW1hZ2VTdG9yZShvdXRwdXRfaW1hZ2VzW2lkeF0sIHBvcywg bWl4KGIsIGEsIHByb2dyZXNzKSk7Cj4gICAgICApCj4gKyAgICBDKDAsIH0KPiAgICAgICkKPiAr fTsKPiArCj4gK3N0YXRpYyBjb25zdCBjaGFyIHRyYW5zaXRpb25fd2lwZWxlZnRbXSA9IHsKPiAr ICAgIEMoMCwgdm9pZCB0cmFuc2l0aW9uKGludCBpZHgsIGl2ZWMyIHBvcywgZmxvYXQgcHJvZ3Jl c3MpCj4gICAgICApCj4gKyAgICBDKDAsIHsKPiAgICAgICkKPiArICAgIEMoMSwgICAgIGl2ZWMy IHNpemUgPSBpbWFnZVNpemUob3V0cHV0X2ltYWdlc1tpZHhdKTsKPiAgICAgICkKPiArICAgIEMo MSwgICAgIGludCAgcyA9IGludChzaXplLnggKiBwcm9ncmVzcyk7Cj4gICAgICAgKQo+ICsgICAg QygxLCAgICAgdmVjNCBhID0gdGV4dHVyZShhX2ltYWdlc1tpZHhdLCBwb3MpOwo+ICAgICAgKQo+ ICsgICAgQygxLCAgICAgdmVjNCBiID0gdGV4dHVyZShiX2ltYWdlc1tpZHhdLCBwb3MpOwo+ICAg ICAgKQo+ICsgICAgQygxLCAgICAgaW1hZ2VTdG9yZShvdXRwdXRfaW1hZ2VzW2lkeF0sIHBvcywg cG9zLnggPiBzID8gYiA6IGEpOwo+ICAgICAgKQo+ICsgICAgQygwLCB9Cj4gICAgICApCj4gK307 Cj4gKwo+ICtzdGF0aWMgYXZfY29sZCBpbnQgaW5pdF9maWx0ZXIoQVZGaWx0ZXJDb250ZXh0ICph dmN0eCkKPiArewo+ICsgICAgaW50IGVyciA9IDA7Cj4gKyAgICB1aW50OF90ICpzcHZfZGF0YTsK PiArICAgIHNpemVfdCBzcHZfbGVuOwo+ICsgICAgdm9pZCAqc3B2X29wYXF1ZSA9IE5VTEw7Cj4g KyAgICBYRmFkZVZ1bGthbkNvbnRleHQgKnMgPSBhdmN0eC0+cHJpdjsKPiArICAgIEZGVnVsa2Fu Q29udGV4dCAqdmtjdHggPSAmcy0+dmtjdHg7Cj4gKyAgICBjb25zdCBpbnQgcGxhbmVzID0gYXZf cGl4X2ZtdF9jb3VudF9wbGFuZXMocy0+dmtjdHgub3V0cHV0X2Zvcm1hdCk7Cj4gKyAgICBGRlZr U1BJUlZTaGFkZXIgKnNoZCA9ICZzLT5zaGQ7Cj4gKyAgICBGRlZrU1BJUlZDb21waWxlciAqc3B2 Owo+ICsgICAgRkZWdWxrYW5EZXNjcmlwdG9yU2V0QmluZGluZyAqZGVzYzsKPiArCj4gKyAgICBz cHYgPSBmZl92a19zcGlydl9pbml0KCk7Cj4gKyAgICBpZiAoIXNwdikgewo+ICsgICAgICAgIGF2 X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiVW5hYmxlIHRvIGluaXRpYWxpemUgU1BJUi1WCj4g Y29tcGlsZXIhXG4iKTsKPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9FWFRFUk5BTDsKPiArICAg IH0KPiArCj4gKyAgICBmZl92a19xZl9pbml0KHZrY3R4LCAmcy0+cWYsIFZLX1FVRVVFX0NPTVBV VEVfQklUKTsKPiArICAgIFJFVChmZl92a19leGVjX3Bvb2xfaW5pdCh2a2N0eCwgJnMtPnFmLCAm cy0+ZSwgcy0+cWYubmJfcXVldWVzKjQsIDAsCj4gMCwgMCwgTlVMTCkpOwo+ICsgICAgUkVUKGZm X3ZrX2luaXRfc2FtcGxlcih2a2N0eCwgJnMtPnNhbXBsZXIsIDEsIFZLX0ZJTFRFUl9ORUFSRVNU KSk7Cj4gKyAgICBSRVQoZmZfdmtfc2hhZGVyX2luaXQoJnMtPnBsLCAmcy0+c2hkLCAieGZhZGVf Y29tcHV0ZSIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgVktfU0hBREVSX1NUQUdFX0NP TVBVVEVfQklULCAwKSk7Cj4gKwo+ICsgICAgZmZfdmtfc2hhZGVyX3NldF9jb21wdXRlX3NpemVz KCZzLT5zaGQsIDMyLCAzMiwgMSk7Cj4gKwo+ICsgICAgZGVzYyA9IChGRlZ1bGthbkRlc2NyaXB0 b3JTZXRCaW5kaW5nIFtdKSB7Cj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICAubmFtZSAgICAg ICA9ICJhX2ltYWdlcyIsCj4gKyAgICAgICAgICAgIC50eXBlICAgICAgID0gVktfREVTQ1JJUFRP Ul9UWVBFX0NPTUJJTkVEX0lNQUdFX1NBTVBMRVIsCj4gKyAgICAgICAgICAgIC5kaW1lbnNpb25z ID0gMiwKPiArICAgICAgICAgICAgLmVsZW1zICAgICAgPSBwbGFuZXMsCj4gKyAgICAgICAgICAg IC5zdGFnZXMgICAgID0gVktfU0hBREVSX1NUQUdFX0NPTVBVVEVfQklULAo+ICsgICAgICAgICAg ICAuc2FtcGxlcnMgICA9IERVUF9TQU1QTEVSKHMtPnNhbXBsZXIpLAo+ICsgICAgICAgIH0sCj4g KyAgICAgICAgewo+ICsgICAgICAgICAgICAubmFtZSAgICAgICA9ICJiX2ltYWdlcyIsCj4gKyAg ICAgICAgICAgIC50eXBlICAgICAgID0gVktfREVTQ1JJUFRPUl9UWVBFX0NPTUJJTkVEX0lNQUdF X1NBTVBMRVIsCj4gKyAgICAgICAgICAgIC5kaW1lbnNpb25zID0gMiwKPiArICAgICAgICAgICAg LmVsZW1zICAgICAgPSBwbGFuZXMsCj4gKyAgICAgICAgICAgIC5zdGFnZXMgICAgID0gVktfU0hB REVSX1NUQUdFX0NPTVBVVEVfQklULAo+ICsgICAgICAgICAgICAuc2FtcGxlcnMgICA9IERVUF9T QU1QTEVSKHMtPnNhbXBsZXIpLAo+ICsgICAgICAgIH0sCj4gKyAgICAgICAgewo+ICsgICAgICAg ICAgICAubmFtZSAgICAgICA9ICJvdXRwdXRfaW1hZ2VzIiwKPiArICAgICAgICAgICAgLnR5cGUg ICAgICAgPSBWS19ERVNDUklQVE9SX1RZUEVfU1RPUkFHRV9JTUFHRSwKPiArICAgICAgICAgICAg Lm1lbV9sYXlvdXQgPSBmZl92a19zaGFkZXJfcmVwX2ZtdChzLT52a2N0eC5vdXRwdXRfZm9ybWF0 KSwKPiArICAgICAgICAgICAgLm1lbV9xdWFsaSAgPSAid3JpdGVvbmx5IiwKPiArICAgICAgICAg ICAgLmRpbWVuc2lvbnMgPSAyLAo+ICsgICAgICAgICAgICAuZWxlbXMgICAgICA9IHBsYW5lcywK PiArICAgICAgICAgICAgLnN0YWdlcyAgICAgPSBWS19TSEFERVJfU1RBR0VfQ09NUFVURV9CSVQs Cj4gKyAgICAgICAgfSwKPiArICAgIH07Cj4gKwo+ICsgICAgUkVUKGZmX3ZrX3BpcGVsaW5lX2Rl c2NyaXB0b3Jfc2V0X2FkZCh2a2N0eCwgJnMtPnBsLCBzaGQsIGRlc2MsIDMsIDAsCj4gMCkpOwo+ ICsKPiArICAgIEdMU0xDKDAsIGxheW91dChwdXNoX2NvbnN0YW50LCBzdGQ0MzApIHVuaWZvcm0g cHVzaENvbnN0YW50cyB7Cj4gICAgICAgICAgKTsKPiArICAgIEdMU0xDKDEsICAgIGZsb2F0IHBy b2dyZXNzOwo+ICAgICAgICAgICApOwo+ICsgICAgR0xTTEMoMCwgfTsKPiAgICAgICAgICAgKTsK PiArCj4gKyAgICBmZl92a19hZGRfcHVzaF9jb25zdGFudCgmcy0+cGwsIDAsIHNpemVvZihYRmFk ZVBhcmFtZXRlcnMpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfU0hBREVSX1NU QUdFX0NPTVBVVEVfQklUKTsKPiArCj4gKyAgICBzd2l0Y2ggKHMtPnRyYW5zaXRpb24pIHsKPiAr ICAgICAgICBjYXNlIEZBREU6Cj4gKyAgICAgICAgICAgIEdMU0xEKHRyYW5zaXRpb25fZmFkZSk7 Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIGNhc2UgV0lQRUxFRlQ6Cj4gKyAgICAg ICAgICAgIEdMU0xEKHRyYW5zaXRpb25fd2lwZWxlZnQpOwo+ICsgICAgICAgICAgICBicmVhazsK PiArICAgICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAgICBlcnIgPSBBVkVSUk9SX0JVRzsKPiAr ICAgICAgICAgICAgZ290byBmYWlsOwo+ICsgICAgfQo+ICsKPiArICAgIEdMU0xDKDAsIHZvaWQg bWFpbigpCj4gKTsKPiArICAgIEdMU0xDKDAsIHsKPiApOwo+ICsgICAgR0xTTEMoMSwgICAgIGl2 ZWMyIHBvcyA9IGl2ZWMyKGdsX0dsb2JhbEludm9jYXRpb25JRC54eSk7Cj4gICk7Cj4gKyAgICBH TFNMRigxLCAgICAgaW50IHBsYW5lcyA9ICVpOwo+ICxwbGFuZXMpOwo+ICsgICAgR0xTTEMoMSwg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGxhbmVzOyBpKyspIHsKPiAgKTsKPiArICAgIEdMU0xD KDIsICAgICAgICB0cmFuc2l0aW9uKGksIHBvcywgcHJvZ3Jlc3MpOwo+ICApOwo+ICsgICAgR0xT TEMoMSwgICAgIH0KPiApOwo+ICsgICAgR0xTTEMoMCwgfQo+ICk7Cj4gKwo+ICsgICAgUkVUKHNw di0+Y29tcGlsZV9zaGFkZXIoc3B2LCBhdmN0eCwgc2hkLCAmc3B2X2RhdGEsICZzcHZfbGVuLCAi bWFpbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3B2X29wYXF1ZSkpOwo+ICsg ICAgUkVUKGZmX3ZrX3NoYWRlcl9jcmVhdGUodmtjdHgsIHNoZCwgc3B2X2RhdGEsIHNwdl9sZW4s ICJtYWluIikpOwo+ICsKPiArICAgIFJFVChmZl92a19pbml0X2NvbXB1dGVfcGlwZWxpbmUodmtj dHgsICZzLT5wbCwgc2hkKSk7Cj4gKyAgICBSRVQoZmZfdmtfZXhlY19waXBlbGluZV9yZWdpc3Rl cih2a2N0eCwgJnMtPmUsICZzLT5wbCkpOwo+ICsKPiArICAgIHMtPmluaXRpYWxpemVkID0gMTsK PiArCj4gK2ZhaWw6Cj4gKyAgICBpZiAoc3B2X29wYXF1ZSkKPiArICAgICAgICBzcHYtPmZyZWVf c2hhZGVyKHNwdiwgJnNwdl9vcGFxdWUpOwo+ICsgICAgaWYgKHNwdikKPiArICAgICAgICBzcHYt PnVuaW5pdCgmc3B2KTsKPiArCj4gKyAgICByZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50IHhmYWRlX2ZyYW1lKEFWRmlsdGVyQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmEsIEFWRnJh bWUgKmIpCj4gK3sKPiArICAgIGludCBlcnI7Cj4gKyAgICBBVkZpbHRlckxpbmsgKm91dGxpbmsg PSBhdmN0eC0+b3V0cHV0c1swXTsKPiArICAgIFhGYWRlVnVsa2FuQ29udGV4dCAqcyA9IGF2Y3R4 LT5wcml2Owo+ICsgICAgQVZGcmFtZSAqZnJhbWVfYSA9IHMtPnhmW0lOX0FdOwo+ICsgICAgQVZG cmFtZSAqZnJhbWVfYiA9IHMtPnhmW0lOX0JdOwo+ICsgICAgZmxvYXQgcHJvZ3Jlc3M7Cj4gKwo+ ICsgICAgQVZGcmFtZSAqb3V0cHV0ID0gZmZfZ2V0X3ZpZGVvX2J1ZmZlcihvdXRsaW5rLCBvdXRs aW5rLT53LAo+IG91dGxpbmstPmgpOwo+ICsgICAgaWYgKCFvdXRwdXQpIHsKPiArICAgICAgICBl cnIgPSBBVkVSUk9SKEVOT01FTSk7Cj4gKyAgICAgICAgZ290byBmYWlsOwo+ICsgICAgfQo+ICsK PiArICAgIGlmICghcy0+aW5pdGlhbGl6ZWQpIHsKPiArICAgICAgICBBVkhXRnJhbWVzQ29udGV4 dCAqYV9mYyA9Cj4gKEFWSFdGcmFtZXNDb250ZXh0KilmcmFtZV9hLT5od19mcmFtZXNfY3R4LT5k YXRhOwo+ICsgICAgICAgIEFWSFdGcmFtZXNDb250ZXh0ICpiX2ZjID0KPiAoQVZIV0ZyYW1lc0Nv bnRleHQqKWZyYW1lX2ItPmh3X2ZyYW1lc19jdHgtPmRhdGE7Cj4gKyAgICAgICAgaWYgKGFfZmMt PnN3X2Zvcm1hdCAhPSBiX2ZjLT5zd19mb3JtYXQpIHsKPiArICAgICAgICAgICAgYXZfbG9nKGF2 Y3R4LCBBVl9MT0dfRVJST1IsCj4gKyAgICAgICAgICAgICAgICAgICAiQ3VycmVudGx5IHRoZSBz dyBmb3JtYXQgb2YgdGhlIGZpcnN0IHZpZGVvIG5lZWRlIHRvCj4gbWF0Y2ggdGhlIHNlY29uZCFc biIpOwo+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+ICsgICAgICAgIH0K PiArICAgICAgICBSRVQoaW5pdF9maWx0ZXIoYXZjdHgpKTsKPiArICAgIH0KPiArCj4gKyAgICBS RVQoYXZfZnJhbWVfY29weV9wcm9wcyhvdXRwdXQsIGZyYW1lX2EpKTsKPiArICAgIG91dHB1dC0+ cHRzID0gcy0+cHRzOwo+ICsKPiArICAgIHByb2dyZXNzID0gYXZfY2xpcGYoCj4gKyAgICAgICAg MS5mIC0gKChmbG9hdCkocy0+cHRzIC0gcy0+Zmlyc3RfcHRzIC0gcy0+b2Zmc2V0X3B0cykgLwo+ IHMtPmR1cmF0aW9uX3B0cyksCj4gKyAgICAgICAgMC5mLCAxLmYpOwo+ICsKPiArICAgIFJFVChm Zl92a19maWx0ZXJfcHJvY2Vzc19OaW4oJnMtPnZrY3R4LCAmcy0+ZSwgJnMtPnBsLCBvdXRwdXQs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFWRnJhbWUgKltdKXsgZnJhbWVf YSwgZnJhbWVfYiB9LCAyLAo+IHMtPnNhbXBsZXIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJihYRmFkZVBhcmFtZXRlcnMpeyBwcm9ncmVzcyB9LAo+IHNpemVvZihYRmFkZVBh cmFtZXRlcnMpKSk7Cj4gKwo+ICsgICAgcmV0dXJuIGZmX2ZpbHRlcl9mcmFtZShvdXRsaW5rLCBv dXRwdXQpOwo+ICsKPiArZmFpbDoKPiArICAgIGF2X2ZyYW1lX2ZyZWUoJm91dHB1dCk7Cj4gKyAg ICByZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNvbmZpZ19wcm9wc19vdXRwdXQo QVZGaWx0ZXJMaW5rICpvdXRsaW5rKQo+ICt7Cj4gKyAgICBpbnQgZXJyOwo+ICsgICAgQVZGaWx0 ZXJDb250ZXh0ICphdmN0eCA9IG91dGxpbmstPnNyYzsKPiArICAgIFhGYWRlVnVsa2FuQ29udGV4 dCAqcyA9IGF2Y3R4LT5wcml2Owo+ICsgICAgQVZGaWx0ZXJMaW5rICppbmxpbmswID0gYXZjdHgt PmlucHV0c1tJTl9BXTsKPiArICAgIEFWRmlsdGVyTGluayAqaW5saW5rMSA9IGF2Y3R4LT5pbnB1 dHNbSU5fQl07Cj4gKwo+ICsgICAgaWYgKGlubGluazAtPncgIT0gaW5saW5rMS0+dyB8fCBpbmxp bmswLT5oICE9IGlubGluazEtPmgpIHsKPiArICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19F UlJPUiwgIkZpcnN0IGlucHV0IGxpbmsgJXMgcGFyYW1ldGVycyAiCj4gKyAgICAgICAgICAgICAg ICIoc2l6ZSAlZHglZCkgZG8gbm90IG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nICIKPiArICAgICAg ICAgICAgICAgInNlY29uZCBpbnB1dCBsaW5rICVzIHBhcmFtZXRlcnMgKHNpemUgJWR4JWQpXG4i LAo+ICsgICAgICAgICAgICAgICBhdmN0eC0+aW5wdXRfcGFkc1tJTl9BXS5uYW1lLCBpbmxpbmsw LT53LCBpbmxpbmswLT5oLAo+ICsgICAgICAgICAgICAgICBhdmN0eC0+aW5wdXRfcGFkc1tJTl9C XS5uYW1lLCBpbmxpbmsxLT53LCBpbmxpbmsxLT5oKTsKPiArICAgICAgICByZXR1cm4gQVZFUlJP UihFSU5WQUwpOwo+ICsgICAgfQo+ICsKPiArICAgIGlmIChpbmxpbmswLT50aW1lX2Jhc2UubnVt ICE9IGlubGluazEtPnRpbWVfYmFzZS5udW0gfHwKPiArICAgICAgICBpbmxpbmswLT50aW1lX2Jh c2UuZGVuICE9IGlubGluazEtPnRpbWVfYmFzZS5kZW4pIHsKPiArICAgICAgICBhdl9sb2coYXZj dHgsIEFWX0xPR19FUlJPUiwgIkZpcnN0IGlucHV0IGxpbmsgJXMgdGltZWJhc2UgIgo+ICsgICAg ICAgICAgICAgICAiKCVkLyVkKSBkbyBub3QgbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgIgo+ICsg ICAgICAgICAgICAgICAic2Vjb25kIGlucHV0IGxpbmsgJXMgdGltZWJhc2UgKCVkLyVkKVxuIiwK PiArICAgICAgICAgICAgICAgYXZjdHgtPmlucHV0X3BhZHNbMF0ubmFtZSwgaW5saW5rMC0+dGlt ZV9iYXNlLm51bSwKPiBpbmxpbmswLT50aW1lX2Jhc2UuZGVuLAo+ICsgICAgICAgICAgICAgICBh dmN0eC0+aW5wdXRfcGFkc1sxXS5uYW1lLCBpbmxpbmsxLT50aW1lX2Jhc2UubnVtLAo+IGlubGlu azEtPnRpbWVfYmFzZS5kZW4pOwo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4g KyAgICB9Cj4gKwo+ICsgICAgcy0+Zmlyc3RfcHRzID0gcy0+bGFzdF9wdHMgPSBzLT5wdHMgPSBB Vl9OT1BUU19WQUxVRTsKPiArCj4gKyAgICBvdXRsaW5rLT50aW1lX2Jhc2UgPSBpbmxpbmswLT50 aW1lX2Jhc2U7Cj4gKyAgICBvdXRsaW5rLT5zYW1wbGVfYXNwZWN0X3JhdGlvID0gaW5saW5rMC0+ c2FtcGxlX2FzcGVjdF9yYXRpbzsKPiArICAgIG91dGxpbmstPmZyYW1lX3JhdGUgPSBpbmxpbmsw LT5mcmFtZV9yYXRlOwo+ICsKPiArICAgIGlmIChzLT5kdXJhdGlvbikKPiArICAgICAgICBzLT5k dXJhdGlvbl9wdHMgPSBhdl9yZXNjYWxlX3Eocy0+ZHVyYXRpb24sIEFWX1RJTUVfQkFTRV9RLAo+ IG91dGxpbmstPnRpbWVfYmFzZSk7Cj4gKyAgICBpZiAocy0+b2Zmc2V0KQo+ICsgICAgICAgIHMt Pm9mZnNldF9wdHMgPSBhdl9yZXNjYWxlX3Eocy0+b2Zmc2V0LCBBVl9USU1FX0JBU0VfUSwKPiBv dXRsaW5rLT50aW1lX2Jhc2UpOwo+ICsKPiArICAgIFJFVChmZl92a19maWx0ZXJfY29uZmlnX291 dHB1dChvdXRsaW5rKSk7Cj4gKwo+ICtmYWlsOgo+ICsgICAgcmV0dXJuIGVycjsKPiArfQo+ICsK PiArc3RhdGljIGludCBhY3RpdmF0ZShBVkZpbHRlckNvbnRleHQgKmF2Y3R4KQo+ICt7Cj4gKyAg ICBYRmFkZVZ1bGthbkNvbnRleHQgKnMgPSBhdmN0eC0+cHJpdjsKPiArICAgIEFWRmlsdGVyTGlu ayAqb3V0bGluayA9IGF2Y3R4LT5vdXRwdXRzWzBdOwo+ICsgICAgQVZGcmFtZSAqaW4gPSBOVUxM Owo+ICsgICAgaW50IHJldCA9IDAsIHN0YXR1czsKPiArICAgIGludDY0X3QgcHRzOwo+ICsKPiAr ICAgIEZGX0ZJTFRFUl9GT1JXQVJEX1NUQVRVU19CQUNLX0FMTChvdXRsaW5rLCBhdmN0eCk7Cj4g Kwo+ICsgICAgaWYgKHMtPnhmYWRlX2lzX292ZXIpIHsKPiArICAgICAgICByZXQgPSBmZl9pbmxp bmtfY29uc3VtZV9mcmFtZShhdmN0eC0+aW5wdXRzWzFdLCAmaW4pOwo+ICsgICAgICAgIGlmIChy ZXQgPCAwKSB7Cj4gKyAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICAgfSBlbHNlIGlm IChyZXQgPiAwKSB7Cj4gKyAgICAgICAgICAgIGluLT5wdHMgPSAoaW4tPnB0cyAtIHMtPmxhc3Rf cHRzKSArIHMtPnB0czsKPiArICAgICAgICAgICAgcmV0dXJuIGZmX2ZpbHRlcl9mcmFtZShvdXRs aW5rLCBpbik7Cj4gKyAgICAgICAgfSBlbHNlIGlmIChmZl9pbmxpbmtfYWNrbm93bGVkZ2Vfc3Rh dHVzKGF2Y3R4LT5pbnB1dHNbMV0sCj4gJnN0YXR1cywgJnB0cykpIHsKPiArICAgICAgICAgICAg ZmZfb3V0bGlua19zZXRfc3RhdHVzKG91dGxpbmssIHN0YXR1cywgcy0+cHRzKTsKPiArICAgICAg ICAgICAgcmV0dXJuIDA7Cj4gKyAgICAgICAgfSBlbHNlIGlmICghcmV0KSB7Cj4gKyAgICAgICAg ICAgIGlmIChmZl9vdXRsaW5rX2ZyYW1lX3dhbnRlZChvdXRsaW5rKSkgewo+ICsgICAgICAgICAg ICAgICAgZmZfaW5saW5rX3JlcXVlc3RfZnJhbWUoYXZjdHgtPmlucHV0c1sxXSk7Cj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gMDsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0KPiArICAg IH0KPiArCj4gKyAgICBpZiAoZmZfaW5saW5rX3F1ZXVlZF9mcmFtZXMoYXZjdHgtPmlucHV0c1sw XSkgPiAwKSB7Cj4gKyAgICAgICAgcy0+eGZbMF0gPSBmZl9pbmxpbmtfcGVla19mcmFtZShhdmN0 eC0+aW5wdXRzWzBdLCAwKTsKPiArICAgICAgICBpZiAocy0+eGZbMF0pIHsKPiArICAgICAgICAg ICAgaWYgKHMtPmZpcnN0X3B0cyA9PSBBVl9OT1BUU19WQUxVRSkgewo+ICsgICAgICAgICAgICAg ICAgcy0+Zmlyc3RfcHRzID0gcy0+eGZbMF0tPnB0czsKPiArICAgICAgICAgICAgfQo+ICsgICAg ICAgICAgICBzLT5wdHMgPSBzLT54ZlswXS0+cHRzOwo+ICsgICAgICAgICAgICBpZiAocy0+Zmly c3RfcHRzICsgcy0+b2Zmc2V0X3B0cyA+IHMtPnhmWzBdLT5wdHMpIHsKPiArICAgICAgICAgICAg ICAgIHMtPnhmWzBdID0gTlVMTDsKPiArICAgICAgICAgICAgICAgIHMtPm5lZWRfc2Vjb25kID0g MDsKPiArICAgICAgICAgICAgICAgIGZmX2lubGlua19jb25zdW1lX2ZyYW1lKGF2Y3R4LT5pbnB1 dHNbMF0sICZpbik7Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gZmZfZmlsdGVyX2ZyYW1lKG91 dGxpbmssIGluKTsKPiArICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgcy0+bmVlZF9z ZWNvbmQgPSAxOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICBpZiAocy0+eGZbMF0g JiYgZmZfaW5saW5rX3F1ZXVlZF9mcmFtZXMoYXZjdHgtPmlucHV0c1sxXSkgPiAwKSB7Cj4gKyAg ICAgICAgZmZfaW5saW5rX2NvbnN1bWVfZnJhbWUoYXZjdHgtPmlucHV0c1swXSwgJnMtPnhmWzBd KTsKPiArICAgICAgICBmZl9pbmxpbmtfY29uc3VtZV9mcmFtZShhdmN0eC0+aW5wdXRzWzFdLCAm cy0+eGZbMV0pOwo+ICsKPiArICAgICAgICBzLT5sYXN0X3B0cyA9IHMtPnhmWzFdLT5wdHM7Cj4g KyAgICAgICAgcy0+cHRzID0gcy0+eGZbMF0tPnB0czsKPiArICAgICAgICBpZiAocy0+eGZbMF0t PnB0cyAtIChzLT5maXJzdF9wdHMgKyBzLT5vZmZzZXRfcHRzKSA+Cj4gcy0+ZHVyYXRpb25fcHRz KQo+ICsgICAgICAgICAgICBzLT54ZmFkZV9pc19vdmVyID0gMTsKPiArICAgICAgICByZXQgPSB4 ZmFkZV9mcmFtZShhdmN0eCwgcy0+eGZbMF0sIHMtPnhmWzFdKTsKPiArICAgICAgICBhdl9mcmFt ZV9mcmVlKCZzLT54ZlswXSk7Cj4gKyAgICAgICAgYXZfZnJhbWVfZnJlZSgmcy0+eGZbMV0pOwo+ ICsgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKGZmX2lubGlua19x dWV1ZWRfZnJhbWVzKGF2Y3R4LT5pbnB1dHNbMF0pID4gMCAmJgo+ICsgICAgICAgIGZmX2lubGlu a19xdWV1ZWRfZnJhbWVzKGF2Y3R4LT5pbnB1dHNbMV0pID4gMCkgewo+ICsgICAgICAgIGZmX2Zp bHRlcl9zZXRfcmVhZHkoYXZjdHgsIDEwMCk7Cj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICB9 Cj4gKwo+ICsgICAgaWYgKGZmX291dGxpbmtfZnJhbWVfd2FudGVkKG91dGxpbmspKSB7Cj4gKyAg ICAgICAgaWYgKCFzLT5lb2ZbMF0gJiYgZmZfb3V0bGlua19nZXRfc3RhdHVzKGF2Y3R4LT5pbnB1 dHNbMF0pKSB7Cj4KClRoaXMgaXMgbm90IGNvcnJlY3QsIHllcyBJJ20gYXdhcmUgZmlsdGVycyBo YXZlIGl0LCBidXQgaXQgc2hvdWxkIG5vdCBiZQppbnRyb2R1Y2VkIGFnYWluLgpUbyBnZXQgRU9G IHN0YXR1cyBvZiBpbmxpbmsgb25seSB1c2UgYWNrIGNhbGwgb25seS4KV2lsbCBmaXggdmZfeGZh ZGUqLmMgaW4gbWFzdGVyIGlmIHRpbWUgcGVybWl0cy4KCgo+ICsgICAgICAgICAgICBzLT5lb2Zb MF0gPSAxOwo+ICsgICAgICAgICAgICBzLT54ZmFkZV9pc19vdmVyID0gMTsKPiArICAgICAgICB9 Cj4gKyAgICAgICAgaWYgKCFzLT5lb2ZbMV0gJiYgZmZfb3V0bGlua19nZXRfc3RhdHVzKGF2Y3R4 LT5pbnB1dHNbMV0pKSB7Cj4gKyAgICAgICAgICAgIHMtPmVvZlsxXSA9IDE7Cj4gKyAgICAgICAg fQo+ICsgICAgICAgIGlmICghcy0+ZW9mWzBdICYmICFzLT54ZlswXSkKPiArICAgICAgICAgICAg ZmZfaW5saW5rX3JlcXVlc3RfZnJhbWUoYXZjdHgtPmlucHV0c1swXSk7Cj4gKyAgICAgICAgaWYg KCFzLT5lb2ZbMV0gJiYgKHMtPm5lZWRfc2Vjb25kIHx8IHMtPmVvZlswXSkpCj4gKyAgICAgICAg ICAgIGZmX2lubGlua19yZXF1ZXN0X2ZyYW1lKGF2Y3R4LT5pbnB1dHNbMV0pOwo+ICsgICAgICAg IGlmIChzLT5lb2ZbMF0gJiYgcy0+ZW9mWzFdICYmICgKPiArICAgICAgICAgICAgZmZfaW5saW5r X3F1ZXVlZF9mcmFtZXMoYXZjdHgtPmlucHV0c1swXSkgPD0gMCB8fAo+ICsgICAgICAgICAgICBm Zl9pbmxpbmtfcXVldWVkX2ZyYW1lcyhhdmN0eC0+aW5wdXRzWzFdKSA8PSAwKSkKPiArICAgICAg ICAgICAgZmZfb3V0bGlua19zZXRfc3RhdHVzKG91dGxpbmssIEFWRVJST1JfRU9GLCBBVl9OT1BU U19WQUxVRSk7Cj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJu IEZGRVJST1JfTk9UX1JFQURZOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYXZfY29sZCB2b2lkIHVuaW5p dChBVkZpbHRlckNvbnRleHQgKmF2Y3R4KQo+ICt7Cj4gKyAgICBYRmFkZVZ1bGthbkNvbnRleHQg KnMgPSBhdmN0eC0+cHJpdjsKPiArICAgIEZGVnVsa2FuQ29udGV4dCAqdmtjdHggPSAmcy0+dmtj dHg7Cj4gKyAgICBGRlZ1bGthbkZ1bmN0aW9ucyAqdmsgPSAmdmtjdHgtPnZrZm47Cj4gKwo+ICsg ICAgZmZfdmtfZXhlY19wb29sX2ZyZWUodmtjdHgsICZzLT5lKTsKPiArICAgIGZmX3ZrX3BpcGVs aW5lX2ZyZWUodmtjdHgsICZzLT5wbCk7Cj4gKyAgICBmZl92a19zaGFkZXJfZnJlZSh2a2N0eCwg JnMtPnNoZCk7Cj4gKwo+ICsgICAgaWYgKHMtPnNhbXBsZXIpCj4gKyAgICAgICAgdmstPkRlc3Ry b3lTYW1wbGVyKHZrY3R4LT5od2N0eC0+YWN0X2Rldiwgcy0+c2FtcGxlciwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgdmtjdHgtPmh3Y3R4LT5hbGxvYyk7Cj4gKwo+ICsgICAgZmZfdmtf dW5pbml0KCZzLT52a2N0eCk7Cj4gKwo+ICsgICAgcy0+aW5pdGlhbGl6ZWQgPSAwOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgQVZGcmFtZSAqZ2V0X3ZpZGVvX2J1ZmZlcihBVkZpbHRlckxpbmsgKmlubGlu aywgaW50IHcsIGludCBoKQo+ICt7Cj4gKyAgICBYRmFkZVZ1bGthbkNvbnRleHQgKnMgPSBpbmxp bmstPmRzdC0+cHJpdjsKPiArCj4gKyAgICByZXR1cm4gcy0+eGZhZGVfaXNfb3ZlciB8fCAhcy0+ bmVlZF9zZWNvbmQgPwo+ICsgICAgICAgIGZmX251bGxfZ2V0X3ZpZGVvX2J1ZmZlciAgIChpbmxp bmssIHcsIGgpIDoKPiArICAgICAgICBmZl9kZWZhdWx0X2dldF92aWRlb19idWZmZXIoaW5saW5r LCB3LCBoKTsKPiArfQo+ICsKPiArI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoWEZhZGVWdWxr YW5Db250ZXh0LCB4KQo+ICsjZGVmaW5lIEZMQUdTIChBVl9PUFRfRkxBR19GSUxURVJJTkdfUEFS QU0gfCBBVl9PUFRfRkxBR19WSURFT19QQVJBTSkKPiArCj4gK3N0YXRpYyBjb25zdCBBVk9wdGlv biB4ZmFkZV92dWxrYW5fb3B0aW9uc1tdID0gewo+ICsgICAgeyAidHJhbnNpdGlvbiIsICJzZXQg Y3Jvc3MgZmFkZSB0cmFuc2l0aW9uIiwgT0ZGU0VUKHRyYW5zaXRpb24pLAo+IEFWX09QVF9UWVBF X0lOVCwgey5pNjQ9RkFERX0sIDAsIE5CX1RSQU5TSVRJT05TLTEsIEZMQUdTLCAidHJhbnNpdGlv biIgfSwKPiArICAgICAgICB7ICJmYWRlIiwgICAgICAiZmFkZSB0cmFuc2l0aW9uIiwgMCwgQVZf T1BUX1RZUEVfQ09OU1QsCj4gey5pNjQ9RkFERX0sIDAsIDAsIEZMQUdTLCAidHJhbnNpdGlvbiIg fSwKPiArICAgICAgICB7ICJ3aXBlbGVmdCIsICAid2lwZSBsZWZ0IHRyYW5zaXRpb24iLCAwLCBB Vl9PUFRfVFlQRV9DT05TVCwKPiB7Lmk2ND1XSVBFTEVGVH0sIDAsIDAsIEZMQUdTLCAidHJhbnNp dGlvbiIgfSwKPiArICAgIHsgImR1cmF0aW9uIiwgInNldCBjcm9zcyBmYWRlIGR1cmF0aW9uIiwg T0ZGU0VUKGR1cmF0aW9uKSwKPiBBVl9PUFRfVFlQRV9EVVJBVElPTiwgey5pNjQ9MTAwMDAwMH0s IDAsIDYwMDAwMDAwLCBGTEFHUyB9LAo+ICsgICAgeyAib2Zmc2V0IiwgICAic2V0IGNyb3NzIGZh ZGUgc3RhcnQgcmVsYXRpdmUgdG8gZmlyc3QgaW5wdXQgc3RyZWFtIiwKPiBPRkZTRVQob2Zmc2V0 KSwgQVZfT1BUX1RZUEVfRFVSQVRJT04sIHsuaTY0PTB9LCBJTlQ2NF9NSU4sIElOVDY0X01BWCwg RkxBR1MKPiB9LAo+ICsgICAgeyBOVUxMIH0KPiArfTsKPiArCj4gK0FWRklMVEVSX0RFRklORV9D TEFTUyh4ZmFkZV92dWxrYW4pOwo+ICsKPiArc3RhdGljIGNvbnN0IEFWRmlsdGVyUGFkIHhmYWRl X3Z1bGthbl9pbnB1dHNbXSA9IHsKPiArICAgIHsKPiArICAgICAgICAubmFtZSAgICAgICAgICAg ICA9ICJtYWluIiwKPiArICAgICAgICAudHlwZSAgICAgICAgICAgICA9IEFWTUVESUFfVFlQRV9W SURFTywKPiArICAgICAgICAuZ2V0X2J1ZmZlci52aWRlbyA9IGdldF92aWRlb19idWZmZXIsCj4g KyAgICAgICAgLmNvbmZpZ19wcm9wcyAgICAgPSAmZmZfdmtfZmlsdGVyX2NvbmZpZ19pbnB1dCwK PiArICAgIH0sCj4gKyAgICB7Cj4gKyAgICAgICAgLm5hbWUgICAgICAgICAgICAgPSAieGZhZGUi LAo+ICsgICAgICAgIC50eXBlICAgICAgICAgICAgID0gQVZNRURJQV9UWVBFX1ZJREVPLAo+ICsg ICAgICAgIC5nZXRfYnVmZmVyLnZpZGVvID0gZ2V0X3ZpZGVvX2J1ZmZlciwKPiArICAgICAgICAu Y29uZmlnX3Byb3BzICAgICA9ICZmZl92a19maWx0ZXJfY29uZmlnX2lucHV0LAo+ICsgICAgfSwK PiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBBVkZpbHRlclBhZCB4ZmFkZV92dWxrYW5fb3V0cHV0 c1tdID0gewo+ICsgICAgewo+ICsgICAgICAgIC5uYW1lICAgICAgICAgID0gImRlZmF1bHQiLAo+ ICsgICAgICAgIC50eXBlICAgICAgICAgID0gQVZNRURJQV9UWVBFX1ZJREVPLAo+ICsgICAgICAg IC5jb25maWdfcHJvcHMgID0gJmNvbmZpZ19wcm9wc19vdXRwdXQsCj4gKyAgICB9LAo+ICt9Owo+ ICsKPiArY29uc3QgQVZGaWx0ZXIgZmZfdmZfeGZhZGVfdnVsa2FuID0gewo+ICsgICAgLm5hbWUg ICAgICAgICAgICA9ICJ4ZmFkZV92dWxrYW4iLAo+ICsgICAgLmRlc2NyaXB0aW9uICAgICA9IE5V TExfSUZfQ09ORklHX1NNQUxMKCJDcm9zcyBmYWRlIG9uZSB2aWRlbyB3aXRoCj4gYW5vdGhlciB2 aWRlby4iKSwKPiArICAgIC5wcml2X3NpemUgICAgICAgPSBzaXplb2YoWEZhZGVWdWxrYW5Db250 ZXh0KSwKPiArICAgIC5pbml0ICAgICAgICAgICAgPSAmZmZfdmtfZmlsdGVyX2luaXQsCj4gKyAg ICAudW5pbml0ICAgICAgICAgID0gJnVuaW5pdCwKPiArICAgIC5hY3RpdmF0ZSAgICAgICAgPSAm YWN0aXZhdGUsCj4gKyAgICBGSUxURVJfSU5QVVRTKHhmYWRlX3Z1bGthbl9pbnB1dHMpLAo+ICsg ICAgRklMVEVSX09VVFBVVFMoeGZhZGVfdnVsa2FuX291dHB1dHMpLAo+ICsgICAgRklMVEVSX1NJ TkdMRV9QSVhGTVQoQVZfUElYX0ZNVF9WVUxLQU4pLAo+ICsgICAgLnByaXZfY2xhc3MgICAgICA9 ICZ4ZmFkZV92dWxrYW5fY2xhc3MsCj4gKyAgICAuZmxhZ3NfaW50ZXJuYWwgID0gRkZfRklMVEVS X0ZMQUdfSFdGUkFNRV9BV0FSRSwKPiArICAgIC5mbGFncyAgICAgICAgICAgPSBBVkZJTFRFUl9G TEFHX0hXREVWSUNFLAo+ICt9Owo+IC0tCj4gMi4zNy4wIChBcHBsZSBHaXQtMTM2KQo+Cj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBmZm1wZWctZGV2 ZWwgbWFpbGluZyBsaXN0Cj4gZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKPiBodHRwczovL2ZmbXBl Zy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKPgo+IFRvIHVuc3Vic2NyaWJlLCB2 aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5v cmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCj4KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWct ZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1w ZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1w ZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=