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 839B442B4F for ; Sat, 25 Jun 2022 09:58:23 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5B02368B7CC; Sat, 25 Jun 2022 12:58:10 +0300 (EEST) Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E429168B7C7 for ; Sat, 25 Jun 2022 12:58:02 +0300 (EEST) Received: by mail-pf1-f181.google.com with SMTP id x138so1957940pfc.3 for ; Sat, 25 Jun 2022 02:58:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:in-reply-to:references:from:date:subject:fcc :content-transfer-encoding:mime-version:to:cc; bh=2b9n6ewOB7vUkKmrjuC8CDqEM9N1PYXubuWm6+Z8nzc=; b=OOfLgyPMT3J7fjHvoZJp9tLEYubUfzHdahwQyLF5VLo7eedbUHbUjLyZD8W3hS25EQ 5Xuhye4nHpqWkCgGDfBCAq8fjwCz4XryEz5r5eaDLKw4+Z4l6wU457HVBoSrXskriJAk uldBOAb/lCXBM7ed6EO2/78FTQERdoLXgaruSqcPJQdQ+jljp3ntxQaXdWx2pF46Alb5 0tnG+8zthTDbHVVcTd0X3m0WvrTI5cljIvCnx2F6ECD2BkUAqQMPM4AGPiwhDubJOAkU 9PqXeMSSatXA6NIw9C8+ZuQW9a44DyxN1k8zOLg/PClt08moV5On5WYNtyLqMUMdz4IH tXjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:in-reply-to:references:from:date :subject:fcc:content-transfer-encoding:mime-version:to:cc; bh=2b9n6ewOB7vUkKmrjuC8CDqEM9N1PYXubuWm6+Z8nzc=; b=MGTKBqdVEsgYBgsyO/Y//LJhEKOwh9jpt5q5h3mb40MayPDyuO5JPHhbrZniz0hjfB 0c8OpWGrsC2PlICgW0vUUzUAG6GwEVyQ17xdXm5Z4A/jdklfaVKfMM3i3wmHkfNE8x+Q q6KLId2mYh+WuzkjzQQ/CKUBBt7rwO9Zplow4Y58IEYXQT6St9tU2ClNUVW/9lpZUva/ dGU/WAJYCeFx5knwSBcvqKTVxLHvB3Z0xhJW7+JgwIbAbgxcE34jTbVGR3foe4kaIxnq ew8dZrFUwgQumf+B8F50GInOgTwkLmdWGtBwBYvYuvUgmr6OiE2Wp24eJ5uTHC6SKk+6 nd/Q== X-Gm-Message-State: AJIora/J1e58QGq66QXJ8+PL+sFwcP5nGlQlO5WBgDE5KrTbDTgZO1j/ ZpIv2rbELN2/6Cy3dacp0LdTqCnkXqFYqQ== X-Google-Smtp-Source: AGRyM1vN6K6IhW6ICdYk5VopZwT/you8JuQwfL6165tTJZpSbejpW+PaZ74a5egF5a8VTme80RM+ig== X-Received: by 2002:a63:3dc3:0:b0:40c:9e0c:3587 with SMTP id k186-20020a633dc3000000b0040c9e0c3587mr3031418pga.468.1656151079911; Sat, 25 Jun 2022 02:57:59 -0700 (PDT) Received: from [127.0.0.1] (master.gitmailbox.com. [34.83.118.50]) by smtp.gmail.com with ESMTPSA id o14-20020a17090a4e8e00b001e2bd411079sm5381205pjh.20.2022.06.25.02.57.58 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 25 Jun 2022 02:57:59 -0700 (PDT) Message-Id: In-Reply-To: References: From: ffmpegagent Date: Sat, 25 Jun 2022 09:57:32 +0000 Fcc: Sent MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH v5 00/25] Subtitle Filtering 2022 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: Michael Niedermayer , softworkz , Andriy Gelman , Andreas Rheinhardt 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: ClN1YnRpdGxlIEZpbHRlcmluZyAyMDIyCj09PT09PT09PT09PT09PT09PT09PT09CgpUaGlzIGlz IGEgc3Vic3RhbnRpYWwgdXBkYXRlIHRvIHRoZSBlYXJsaWVyIHN1YnRpdGxlIGZpbHRlcmluZyBw YXRjaCBzZXJpZXMuCkEgcHJpbWFyeSBnb2FsIGhhcyBiZWVuIHRvIGFkZHJlc3Mgb3RoZXJzJyBj b25jZXJucyBhcyBtdWNoIGFzIHBvc3NpYmxlIG9uCm9uZSBzaWRlIGFuZCB0byBwcm92aWRlIG1v cmUgY2xhcml0eSBhbmQgY29udHJvbCBvdmVyIHRoZSB3YXkgdGhpbmdzIGFyZQp3b3JraW5nLiBD bGFyaXR5IGlzIGlzIHNwZWNpZmljYWxseSBpbXBvcnRhbnQgdG8gYWxsb3cgZm9yIGEgYmV0dGVy CnVuZGVyc3RhbmRpbmcgb2YgdGhlIG5lZWQgZm9yIGEgc3VidGl0bGUgc3RhcnQgcHRzIHZhbHVl IHRoYXQgY2FuIGJlCmRpZmZlcmVudCBmcm9tIHRoZSBmcmFtZSdzIHB0cyB2YWx1ZS4gVGhpcyBp cyBkb25lIGJ5IHJlZmFjdG9yaW5nIHRoZQpzdWJ0aXRsZSB0aW1pbmcgZmllbGRzIGluIEFWRnJh bWUsIGFkZGluZyBhIGZyYW1lIGZpZWxkIHRvIGluZGljYXRlIHJlcGVhdGVkCnN1YnRpdGxlIGZy YW1lcywgYW5kIGZpbmFsbHkgdGhlIGZ1bGwgcmVtb3ZhbCBvZiB0aGUgaGVhcnRiZWF0CmZ1bmN0 aW9uYWxpdHksIHJlcGxhY2VkIGJ5IGEgbmV3ICdzdWJmZWVkJyBmaWx0ZXIgdGhhdCBwcm92aWRl cyBkaWZmZXJlbnQKbW9kZXMgZm9yIGFyYml0cmF0aW5nIHN1YnRpdGxlIGZyYW1lcyBpbiBhIGZp bHRlciBncmFwaC4gRmluYWxseSwgZWFjaApzdWJ0aXRsZSBmaWx0ZXIncyBkb2N1bWVudGF0aW9u IGhhcyBiZWVuIGFtZW5kZWQgYnkgYSBzZWN0aW9uIGRlc2NyaWJpbmcgdGhlCmZpbHRlcidzIHRp bWVsaW5lIGJlaGF2aW9yIChpbiB2MyB1cGRhdGUpLgoKClN1YnRpdGxlIEZpbHRlcmluZyBEZW1v cwo9PT09PT09PT09PT09PT09PT09PT09PT0KCkkgcHVibGlzaGVkIGEgZGVtb25zdHJhdGlvbiBv ZiBzdWJ0aXRsZSBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVzIHdpdGggT0NSLAp0ZXh0IGFuZCBiaXRt YXAgc3VidGl0bGUgbWFuaXB1bGF0aW9uIGludm9sdmVkOiBEZW1vIDE6IFRleHQtTWFuaXB1bGF0 aW9uCndpdGggQml0bWFwIFN1YnRpdGxlcwpbaHR0cHM6Ly9naXRodWIuY29tL3NvZnR3b3Jrei9T dWJ0aXRsZUZpbHRlcmluZ0RlbW9zL3RyZWUvbWFzdGVyL0RlbW8xXQoKCnY1IC0gQ29udmVyc2lv biB0byBHcmFwaGljIFN1YnRpdGxlcywgYW5kIG90aGVyIGVuaGFuY2VtZW50cwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiAqIEkn bSBnbGFkIHRvIGFubm91bmNlIHRoYXQgVHJhaWFuIChAdGNvemEpIGhhcyBqb2luZWQgdGhlIHBy b2plY3QgYW5kCiAgIGNvbnRyaWJ1dGVkIGEgbmV3ICd0ZXh0MmdyYXBoaWNzdWInIGZpbHRlciB0 byBjb252ZXJ0IHRleHQgc3VidGl0bGVzIHRvCiAgIGdyYXBoaWMgc3VidGl0bGVzLCB3aGljaCBj YW4gaW4gdHVybiBiZSBlbmNvZGVkIGFzIGR2ZCwgZHZiIG9yIHgtc3VicwogICAoYW5kIGFueSBv dGhlciBlbmNvZGVyIGZvciBncmFwaGljIHN1YnMgdGhhdCBtaWdodCBiZSBhZGRlZCBpbiB0aGUK ICAgZnV0dXJlKS4gVGhpcyBmaWx0ZXIgY2xvc2VzIHRoZSBsYXN0IG9wZW4gImdhcCIgaW4gc3Vi dGl0bGUgcHJvY2Vzc2luZy4KICogc3RyaXBzdHlsZXMgZmlsdGVyOiBub3cgYWxsb3dzIHZlcnkg ZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciB3aGljaCBBU1MKICAgc3R5bGUgY29kZXMgc2hvdWxk IGJlIHByZXNlcnZlZCBvciBzdHJpcHBlZAogKiBzdHJpcHN0eWxlczogZG8gbm90IGRyb3AgZGlh bG9nIG1hcmdpbiB2YWx1ZXMKICogc3ViZmVlZCBmaWx0ZXI6IGVsaW1pbmF0ZXMgZHVwbGljYXRl IGZyYW1lcyB3aXRoIGR1cGxpY2F0ZSBzdGFydCB0aW1lcwogICB3aGVuICdmaXhfb3ZlcmxhcCcg aXMgc3BlY2lmaWVkCiAqIHRleHRtb2Q6IGRvIG5vdCBkcm9wIGVmZmVjdCB2YWx1ZXMKICogZ3Jh cGhpY3N1YjJ0ZXh0OiByZWR1Y2UgZm9udCBzaXplIGppdHRlcgogKiBhc3Nfc3BsaXQ6IGFkZCBm dW5jdGlvbiB0byBzZWxlY3RpdmVseSBwcmVzZXJ2ZSBlbGVtZW50cyB3aGVuIHNwbGl0dGluZwog KiBhZGQgc3RyaW0sIHNudWxsIGFuZCBzc2luayBhbmQgZnVydGhlciB1bmlmeSBzdWJ0aXRsZSBm cmFtZSBoYW5kbGluZyB3aXRoCiAgIGF1ZGlvIGFuZCB2aWRlbwogKiBmZm1wZWdfZmlsdGVyOiBn ZXQgc2ltcGxlIGZpbHRlciBub3RhdGlvbiB3b3JraW5nIGZvciBzdWJ0aXRsZXMKCgp2NCAtIFF1 YWxpdHkgSW1wcm92ZW1lbnRzCj09PT09PT09PT09PT09PT09PT09PT09PT0KCiAqIGZpbmFsbHkg YW4gdXBkYXRlZCB2ZXJzaW9uCiAqIGluY2x1ZGVzIG1hbnkgaW1wcm92ZW1lbnRzIGZyb20gaW50 ZXJuYWwgdGVzdGluZwogKiBhbGwgRkFURSB0ZXN0cyBwYXNzZWQKICogYWxsIGV4YW1wbGUgY29t bWFuZHMgZnJvbSB0aGUgZG9jcyB2ZXJpZmllZCB0byB3b3JrCiAqIGNhbid0IGxpc3QgYWxsIHRo ZSBkZXRhaWwgY2hhbmdlcy4uCiAqIEkgaGF2ZSBsZWZ0IG91dCB0aGUgZXh0cmEgY29tbWl0cyB3 aGljaCBjYW4gYmUgaGFuZGxlZCBzZXBhcmF0ZWx5LCBqdXN0CiAgIGluIGNhc2Ugc29tZWJvZHkg d29uZGVycyB3aHkgdGhlc2UgYXJlIG1pc3Npbmc6CiAgICogYXZjb2RlYy93ZWJ2dHRlbmM6IERv bid0IGVuY29kZSBkcmF3aW5nIGNvZGVzIGFuZCBlbXB0eSBsaW5lcwogICAqIGF2Y29kZWMvd2Vi dnR0ZW5jOiBjb252ZXJ0IGhhcmQtc3BhY2UgdGFncyB0byDCoAogICAqIGF2dXRpbC9hc3Nfc3Bs aXQ6IEFkZCBwYXJzaW5nIG9mIGhhcmQtc3BhY2UgdGFncyAoXGgpCiAgICogYXZ1dGlsL2Fzc19z cGxpdDogVHJlYXQgYWxsIGNvbnRlbnQgaW4gY3VybHkgYnJhY2VzIGFzIGhpZGRlbgogICAqIGF2 dXRpbC9hc3Nfc3BsaXQ6IEZpeCBhc3MgcGFyc2luZyBvZiBzdHlsZSBjb2RlcyB3aXRoIGNvbW1l bnRzCgoKdjMgLSBSZWJhc2UKPT09PT09PT09PT0KCmR1ZSB0byBtZXJnZSBjb25mbGljdHMgLSBh cG9sb2dpZXMuCgoKQ2hhbmdlcyBpbiB2Mgo9PT09PT09PT09PT09CgogKiBhZGRlZCAuZ2l0YXR0 cmlidXRlcyBmaWxlIHRvIGVuZm9yY2UgYmluYXJ5IGRpZmZzIGZvciB0aGUgdGVzdCByZWZzIHRo YXQKICAgY2Fubm90IGJlIGFwcGxpZWQgd2hlbiBiZWluZyBzZW50IHZpYSBlLW1haWwKICogcGVy Zm9ybSBmaWx0ZXIgZ3JhcGggcmUtaW5pdCBkdWUgdG8gc3VidGl0bGUgImZyYW1lIHNpemUiIGNo YW5nZSBvbmx5CiAgIHdoZW4gdGhlIHNpemUgd2FzIHVua25vd24gYmVmb3JlIGFuZCBub3Qgc2V0 IHZpYSAtY2FudmFzX3NpemUKICogb3ZlcmxheXRleHRzdWJzOiBNYWtlIHN1cmUgdG8gcmVxdWVz dCBmcmFtZXMgb24gdGhlIHN1YnRpdGxlIGlucHV0CiAqIGF2ZmlsdGVyL3NwbGl0Y2M6IFN0YXJ0 IHBhcnNpbmcgY2MgZGF0YSBvbiBrZXkgZnJhbWVzIG9ubHkKICogYXZjb2RlYy93ZWJ2dHRlbmM6 IERvbid0IGVuY29kZSBhc3MgZHJhd2luZyBjb2RlcyBhbmQgZW1wdHkgbGluZXMKICogc3RyaXBz dHlsZXM6IGZpeCBtZW0gbGVhawogKiBnczJ0OiBpbXByb3ZlIGNvbG9yIGRldGVjdGlvbgogKiBn czJ0OiBlbXB0eSBmcmFtZXMgbXVzdCBub3QgYmUgc2tpcHBlZAogKiBzdWJmZWVkOiBmaXggbmFt ZQogKiB0ZXh0bW9kOiBwcmVzZXJ2ZSBtYXJnaW5zCiAqIGFkZGVkIC5naXRhdHRyaWJ1dGVzIGZp bGUgdG8gZW5mb3JjZSBiaW5hcnkgZGlmZnMgZm9yIHRoZSB0ZXN0IHJlZnMgdGhhdAogICBjYW5u b3QgYmUgYXBwbGllZCB3aGVuIGJlaW5nIHNlbnQgdmlhIGUtbWFpbAogKiBwZXJmb3JtIGZpbHRl ciBncmFwaCByZS1pbml0IGR1ZSB0byBzdWJ0aXRsZSAiZnJhbWUgc2l6ZSIgY2hhbmdlIG9ubHkK ICAgd2hlbiB0aGUgc2l6ZSB3YXMgdW5rbm93biBiZWZvcmUgYW5kIG5vdCBzZXQgdmlhIC1jYW52 YXNfc2l6ZQogKiBhdmNvZGVjL2R2YnN1YmRlYzogRml4IGNvbmRpdGlvbnMgZm9yIGZhbGxiYWNr IHRvIGRlZmF1bHQgcmVzb2x1dGlvbgogKiBNYWRlIGNoYW5nZXMgc3VnZ2VzdGVkIGJ5IEFuZHJl YXMKICogRml4ZWQgZmFpbGluZyBjb21tYW5kIGxpbmUgcmVwb3J0ZWQgYnkgTWljaGFlbAoKQ2hh bmdlcyBmcm9tIHByZXZpb3VzIHZlcnNpb24gdjI0OgoKCkFWRnJhbWUKPT09PT09PQoKICogUmVt b3ZlZCBzdWJfc3RhcnRfdGltZSBUaGUgc3RhcnQgdGltZSBpcyBub3cgYWRkZWQgdG8gdGhlIHN1 YnRpdGxlCiAgIHN0YXJ0X3B0cyBkdXJpbmcgZGVjb2RpbmcgVGhlIHN1Yl9lbmRfdGltZSBmaWVs ZCBpcyBhZGp1c3RlZCBhY2NvcmRpbmdseQogKiBSZW5hbWVkIHN1Yl9lbmRfdGltZSB0byBkdXJh dGlvbiB3aGljaCBpdCBpcyBlZmZlY3RpdmVseSBhZnRlciByZW1vdmluZwogICB0aGUgc3RhcnRf dGltZQogKiBBZGRlZCBhIHN1Yi1zdHJ1Y3QgJ3N1YnRpdGxlX3RpbWluZycgdG8gYXYgZnJhbWUg Q29udGFpbnMgc3VidGl0bGVfcHRzCiAgIHJlbmFtZWQgdG8gJ3N1YnRpdGxlX3RpbWluZy5zdGFy dF9wdHMnIGFuZCAnc3VidGl0bGVfdGltaW5nLmR1cmF0aW9uJwogKiBDaGFuZ2UgYm90aCBmaWVs ZHMgdG8gKGZpeGVkKSB0aW1lX2Jhc2UgQVZfVElNRUJBU0UKICogYWRkIHJlcGVhdF9zdWIgZmll bGQgcHJvdmlkZXMgYSBjbGVhciBpbmRpY2F0aW9uIHdoZXRoZXIgYSBzdWJ0aXRsZSBmcmFtZQog ICBpcyBhbiBhY3R1YWwgc3VidGl0bGUgZXZlbnQgb3IgYSByZXBlYXRlZCBzdWJ0aXRsZSBmcmFt ZSBpbiBhIGZpbHRlcgogICBncmFwaAoKCkhlYXJ0YmVhdCBSZW1vdmFsCj09PT09PT09PT09PT09 PT09CgogKiBjb21wbGV0ZWx5IHJlbW92ZWQgdGhlIGVhcmxpZXIgaGVhcnRiZWF0IGltcGxlbWVu dGF0aW9uCiAqIGZpbHRlcmluZyBhcmJpdHJhdGlvbiBpcyBub3cgaW1wbGVtZW50ZWQgaW4gYSBu ZXcgZmlsdGVyOiAnc3ViZmVlZCcKICogc3ViZmVlZCB3aWxsIGJlIGF1dG8taW5zZXJ0ZWQgZm9y IGNvbXBhdGlibGl0eSB3aXRoIHN1YjJ2aWRlbyBjb21tYW5kCiAgIGxpbmVzCiAqIHRoZSBuZXcg YmVoYXZpb3IgaXMgbm90IGV4YWN0bHkgaWRlbnRpY2FsIHRvIHRoZSBlYXJsaWVyIGJlaGF2aW9y LCBidXQgaXQKICAgYmFzaWNhbGx5IGFsbG93cyB0byBhY2hpZXZlIHRoZSBzYW1lIHJlc3VsdHMK ICogdGhlcmUncyBhIHNtYWxsIHJlbWFpbmRlciwgbm93IG5hbWVkIHN1YnRpdGxlIGtpY2tvZmYg d2hpY2ggc2VydmVzIHRvIGdldAogICB0aGluZ3MgKGluIHRoZSBmaWx0ZXIgZ3JhcGgpIGdvaW5n IHJpZ2h0IGZyb20gdGhlIHN0YXJ0CgoKTmV3ICdzdWJmZWVkJyBGaWx0ZXIKPT09PT09PT09PT09 PT09PT09PT0KCiAqIGEgdmVyc2F0aWxlIGZpbHRlciBmb3Igc29sdmluZyBhbGwga2luZHMgb2Yg cHJvYmxlbXMgd2l0aCBzdWJ0aWxlIGZyYW1lCiAgIGZsb3cgaW4gZmlsdGVyIGdyYXBocwogKiBD YW4gYmUgaW5zZXJ0ZWQgYXQgYW55IHBvc2l0aW9uIGluIGEgZ3JhcGgKICogQXV0by1pbnNlcnRl ZCBmb3Igc3ViMnZpZGVvIGNvbW1hbmQgbGluZXMgKGluIHJlcGVhdC1tb2RlKQogKiBBbGxvd3Mg ZHVyYXRpb24gZml4dXAgZGVsYXkgaW5wdXQgZnJhbWVzIHdpdGggdW5rbm93biBkdXJhdGlvbiBh bmQgaW5mZXIKICAgZHVyYXRpb24gZnJvbSBzdGFydCBvZiBzdWJzZXF1ZW50IGZyYW1lCiAqIFBy b3ZpZGVzIG11bHRpcGxlIG1vZGVzIG9mIG9wZXJhdGlvbjoKICAgKiByZXBlYXQgbW9kZSAoZGVm YXVsdCkgUXVldWVzIGlucHV0IGZyYW1lcyBPdXRwdXRzIGZyYW1lcyBhdCBhIGZpeGVkCiAgICAg KGNvbmZpZ3VyYWJsZSkgcmF0ZSBFaXRoZXIgc2VuZHMgYSBtYXRjaGluZyBpbnB1dCBmcmFtZSAo cmVwZWF0ZWRseSkgb3IKICAgICBlbXB0eSBmcmFtZXMgb3RoZXJ3aXNlCiAgICogc2NhdHRlciBt b2RlIHNpbWlsYXIgdG8gcmVwZWF0IG1vZGUsIGJ1dCBzcGxpdHMgaW5wdXQgZnJhbWVzIGJ5CiAg ICAgZHVyYXRpb24gaW50byBzbWFsbCBzZWdtZW50cyB3aXRoIHNhbWUgY29udGVudAogICAqIGZv cndhcmQgbW9kZSBObyBmaXhlZCBvdXRwdXQgcmF0ZSBVc2VmdWwgaW4gY29tYmluYXRpb24gd2l0 aCBkdXJhdGlvbgogICAgIGZpeHVwIG9yIG92ZXJsYXAgZml4dXAKCgpmZm1wZWcgVG9vbCBDaGFu Z2VzCj09PT09PT09PT09PT09PT09PT0KCiAqIGRlbGF5IHN1YnRpdGxlIG91dHB1dCBzdHJlYW0g aW5pdGlhbGl6YXRpb24gKGxpa2UgZm9yIGF1ZGlvIGFuZCB2aWRlbykKICAgVGhpcyBpcyBuZWVk ZWQgZm9yIGV4YW1wbGUgd2hlbiBhIGZvcm1hdCBoZWFkZXIgZGVwZW5kcyBvbiBoYXZpbmcKICAg cmVjZWl2ZWQgYW4gaW5pdGlhbCBmcmFtZSB0byBkZXJpdmUgY2VydGFpbiBoZWFkZXIgdmFsdWVz IGZyb20KICogZGVjb2Rpbmc6IHNldCBzdWJ0aXRsZSBmcmFtZSBzaXplIGZyb20gZGVjb2Rpbmcg Y29udGV4dAogKiByZS1pbml0IGdyYXBoIHdoZW4gc3VidGl0bGUgc2l6ZSBjaGFuZ2VzCiAqIGFs d2F5cyBpbnNlcnQgc3Vic2NhbGUgZmlsdGVyIGZvciBzdWIydmlkZW8gY29tbWFuZCBsaW5lcyAo dG8gZW5zdXJlCiAgIGNvcnJlY3Qgc2NhbGluZykKCgpTdWJ0aXRsZSBFbmNvZGluZwo9PT09PT09 PT09PT09PT09PQoKICogaWdub3JlIHJlcGVhdGVkIGZyYW1lcyBmb3IgZW5jb2RpbmcgYmFzZWQg b24gcmVwZWF0X3N1YiBmaWVsZCBpbiBBVkZyYW1lCiAqIHN1cHBvcnQgbXVsdGktYXJlYSBlbmNv ZGluZyBmb3IgdGV4dCBzdWJ0aXRsZXMgU3VidGl0bGUgT0NSIGNhbiBjcmVhdGUKICAgbXVsdGlw bGUgYXJlYXMgYXQgZGlmZmVyZW50IHBvc2l0aW9ucy4gUHJldmlvdXNseSwgdGhlIHRleHRzIHdl cmUgYWx3YXlzCiAgIHNxdWFzaGVkIGludG8gYSBzaW5nbGUgYXJlYSAoJ3N1YnRpdGxlIHJlY3Qn KSwgd2hpY2ggd2FzIG5vdCBpZGVhbC4KICAgTXVsdGlwbGUgdGV4dCBhcmVhcyBhcmUgbm93IGdl bmVyYWxseSBzdXBwb3J0ZWQ6CiAgICogQVNTIEVuY29kZXIgQ2hhbmdlZCB0byB1c2UgdGhlICdy ZWNlaXZlX3BhY2tldCcgZW5jb2RpbmcgQVBJIEEgc2luZ2xlCiAgICAgZnJhbWUgd2l0aCBtdWx0 aXBsZSB0ZXh0IGFyZWFzIHdpbGwgY3JlYXRlIG11bHRpcGxlIHBhY2tldHMgbm93CiAgICogQWxs IG90aGVyIHRleHQgc3VidGl0bGUgZW5jb2RlcnMgQSBuZXdsaW5lIGlzIGluc2VydGVkIGJldHdl ZW4gdGhlIHRleHQKICAgICBmcm9tIG11bHRpcGxlIGFyZWFzCgoKZ3JhcGhpY3N1YjJ0ZXh0IChP Q1IpCj09PT09PT09PT09PT09PT09PT09PQoKICogZW5oYW5jZWQgcHJlcHJvY2Vzc2luZwogICAq IHVzaW5nIGVsYmcgYWxnb3JpdGhtIGZvciBjb2xvciBxdWFudGl6YXRpb24KICAgKiBkZXRlY3Rp b24gYW5kIHJlbW92YWwgb2YgdGV4dCBvdXRsaW5lcwogICAqIG1hcC1iYXNlZCBpZGVudGlmaWNh dGlvbiBvZiBjb2xvcnMgcGVyIHdvcmQgKHRleHQsIG91dGxpbmUsIGJhY2tncm91bmQpCiAqIGFk ZCBvcHRpb24gZm9yIGR1cmF0aW9uIGZpeHVwCiAqIGFkZCBvcHRpb24gdG8gZHVtcCBwcmVwcm9j ZXNzaW5nIGJpdG1hcHMKICogUmVjb2duaXplIGZvcm1hdHRpbmcgYW5kIGFwcGx5IGFzIEFTUyBp bmxpbmUgc3R5bGVzCiAgICogcGVyIHdvcmQoISkKICAgKiBwYXJhZ3JhcGggYWxpZ25tZW50CiAg ICogcG9zaXRpb25pbmcKICAgKiBmb250IG5hbWVzCiAgICogZm9udCBzaXplCiAgICogZm9udCBz dHlsZSAoaXRhbGljLCB1bmRlcmxpbmUsIGJvbGQpCiAgICogdGV4dCBjb2xvciwgb3V0bGluZSBj b2xvcgoKCk90aGVyIEZpbHRlciBDaGFuZ2VzCj09PT09PT09PT09PT09PT09PT09CgogKiBhbGw6 IE1ha2Ugc3VyZSB0byBmb3J3YXJkIGFsbCBsaW5rIHByb3BlcnRpZXMgKHRpbWUgYmFzZSwgZnJh bWUgcmF0ZSwgdywKICAgaCkgd2hlcmUgYXBwcm9wcmlhdGUKICogb3ZlcmxheXRleHRzdWJzOiBy ZXF1ZXN0IGZyYW1lcyBvbiB0aGUgc3VidGl0bGUgaW5wdXQKICogb3ZlcmxheXRleHRzdWJzOiBk aXNhYmxlIHJlYWQtb3JkZXIgY2hlY2tpbmcKICogb3ZlcmxheXRleHRzdWJzOiBpbXByb3ZlIGlt cGxlbWVudGF0aW9uIG9mIHJlbmRlcl9sYXRlc3Rfb25seQogKiBvdmVybGF5dGV4dHN1YnM6IGVu c3VyZSBlcXVhbCBpbi9vdXQgdmlkZW8gZm9ybWF0cwogKiBzcGxpdGNjOiBkZXJpdmUgZnJhbWVy YXRlIGZyb20gcmVhbHRpbWVfbGF0ZW5jeQogKiBncmFwaGljc3ViMnZpZGVvOiBpbXBsZW1lbnQg Y2FjaGluZyBvZiBjb252ZXJ0ZWQgZnJhbWVzCiAqIGdyYXBoaWNzdWIydmlkZW86IHVzZSAxeDEg b3V0cHV0IGZyYW1lIHNpemUgYXMgbG9uZyBhcyBzdWJ0aXRsZSBzaXplIGlzCiAgIHVua25vd24g KDB4MCkKClBsdXMgYSBkb3plbiBvZiB0aGluZ3MgSSBmb3Jnb3QuLgoKc29mdHdvcmt6ICgyNCk6 CiAgYXZjb2RlYyxhdnV0aWw6IE1vdmUgZW51bSBBVlN1YnRpdGxlVHlwZSB0byBhdnV0aWwsIGFk ZCBuZXcgYW5kCiAgICBkZXByZWNhdGUgb2xkIHZhbHVlcwogIGF2dXRpbC9mcmFtZTogUHJlcGFy ZSBBVkZyYW1lIGZvciBzdWJ0aXRsZSBoYW5kbGluZwogIGF2Y29kZWMvc3VidGl0bGVzOiBJbnRy b2R1Y2UgbmV3IGZyYW1lLWJhc2VkIHN1YnRpdGxlIGRlY29kaW5nIEFQSQogIGF2Y29kZWMvbGli enZiaTogc2V0IHN1YnRpdGxlIHR5cGUKICBhdmZpbHRlci9zdWJ0aXRsZXM6IFVwZGF0ZSB2Zl9z dWJ0aXRsZXMgdG8gdXNlIG5ldyBkZWNvZGluZyBhcGkKICBhdmNvZGVjLGF2dXRpbDogTW92ZSBh c3MgaGVscGVyIGZ1bmN0aW9ucyB0byBhdnV0aWwgYXMgYXZwcml2XyBhbmQKICAgIGV4dGVuZCBh c3MgZGlhbG9nIHBhcnNpbmcKICBhdmNvZGVjL3N1YnRpdGxlczogUmVwbGFjZSBkZXByZWNhdGVk IGVudW0gdmFsdWVzCiAgZmZ0b29scy9wbGF5LHByb2JlOiBBZGp1c3QgZm9yIHN1YnRpdGxlIGNo YW5nZXMKICBhdmZpbHRlci9zdWJ0aXRsZXM6IEFkZCBzdWJ0aXRsZXMuYyBmb3Igc3VidGl0bGUg ZnJhbWUgYWxsb2NhdGlvbgogIGF2ZmlsdGVyL2F2ZmlsdGVyOiBIYW5kbGUgc3VidGl0bGUgZnJh bWVzCiAgYXZmaWx0ZXIvYXZmaWx0ZXI6IEZpeCBoYXJkY29kZWQgaW5wdXQgaW5kZXgKICBhdmZp bHRlci9zYnVmZmVyOiBBZGQgc2J1ZmZlcnNyYyBhbmQgc2J1ZmZlcnNpbmsgZmlsdGVycwogIGF2 ZmlsdGVyL292ZXJsYXlncmFwaGljc3ViczogQWRkIG92ZXJsYXlncmFwaGljc3VicyBhbmQKICAg IGdyYXBoaWNzdWIydmlkZW8gZmlsdGVycwogIGF2ZmlsdGVyL292ZXJsYXl0ZXh0c3ViczogQWRk IG92ZXJsYXl0ZXh0c3VicyBhbmQgdGV4dHN1YnMydmlkZW8KICAgIGZpbHRlcnMKICBhdmZpbHRl ci90ZXh0bW9kOiBBZGQgdGV4dG1vZCwgY2Vuc29yIGFuZCBzaG93X3NwZWFrZXIgZmlsdGVycwog IGF2ZmlsdGVyL3N0cmlwc3R5bGVzOiBBZGQgc3RyaXBzdHlsZXMgZmlsdGVyCiAgYXZmaWx0ZXIv c3BsaXRjYzogQWRkIHNwbGl0Y2MgZmlsdGVyIGZvciBjbG9zZWQgY2FwdGlvbiBoYW5kbGluZwog IGF2ZmlsdGVyL2dyYXBoaWNzdWIydGV4dDogQWRkIG5ldyBncmFwaGljc3ViMnRleHQgZmlsdGVy IChPQ1IpCiAgYXZmaWx0ZXIvc3Vic2NhbGU6IEFkZCBmaWx0ZXIgZm9yIHNjYWxpbmcgYW5kL29y IHJlLWFycmFuZ2luZwogICAgZ3JhcGhpY2FsIHN1YnRpdGxlcwogIGF2ZmlsdGVyL3N1YmZlZWQ6 IGFkZCBzdWJ0aXRsZSBmZWVkIGZpbHRlcgogIGF2ZmlsdGVyL3NudWxsLHN0cmltOiBBZGQgc251 bGwgYW5kIHN0cmltIGZpbHRlcnMKICBhdmNvZGVjL3N1YnRpdGxlczogTWlncmF0ZSBzdWJ0aXRs ZSBlbmNvZGVycyB0byBmcmFtZS1iYXNlZCBBUEkKICBmZnRvb2xzL2ZmbXBlZzogSW50cm9kdWNl IHN1YnRpdGxlIGZpbHRlcmluZyBhbmQgbmV3IGZyYW1lLWJhc2VkCiAgICBzdWJ0aXRsZSBlbmNv ZGluZwogIGF2Y29kZWMvZHZic3ViZGVjOiBGaXggY29uZGl0aW9ucyBmb3IgZmFsbGJhY2sgdG8g ZGVmYXVsdCByZXNvbHV0aW9uCgp0Y296YSAoMSk6CiAgYXZmaWx0ZXIvdGV4dDJncmFwaGljc3Vi OiBBZGRlZCB0ZXh0MmdyYXBoaWNzdWIgc3VidGl0bGUgZmlsdGVyCgogY29uZmlndXJlICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICstCiBkb2MvZmlsdGVycy50ZXhpICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICA4MDcgKysrKysrKysrKysrKysKIGZmdG9vbHMvZmZt cGVnLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYxMyArKysrKy0tLS0tCiBmZnRvb2xz L2ZmbXBlZy5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKy0KIGZmdG9vbHMvZmZt cGVnX2ZpbHRlci5jICAgICAgICAgICAgICAgICAgIHwgIDI3MCArKystLQogZmZ0b29scy9mZm1w ZWdfaHcuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBmZnRvb2xzL2ZmbXBlZ19v cHQuYyAgICAgICAgICAgICAgICAgICAgICB8ICAgMjggKy0KIGZmdG9vbHMvZmZwbGF5LmMgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDEwMiArLQogZmZ0b29scy9mZnByb2JlLmMgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDQ3ICstCiBsaWJhdmNvZGVjL01ha2VmaWxlICAgICAgICAg ICAgICAgICAgICAgICB8ICAgNTYgKy0KIGxpYmF2Y29kZWMvYXNzLmggICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDE1MSArLS0KIGxpYmF2Y29kZWMvYXNzX3NwbGl0LmggICAgICAgICAgICAg ICAgICAgIHwgIDE5MSAtLS0tCiBsaWJhdmNvZGVjL2Fzc2RlYy5jICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDQgKy0KIGxpYmF2Y29kZWMvYXNzZW5jLmMgICAgICAgICAgICAgICAgICAgICAg IHwgIDE5MSArKystCiBsaWJhdmNvZGVjL2F2Y29kZWMuYyAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDggKwogbGliYXZjb2RlYy9hdmNvZGVjLmggICAgICAgICAgICAgICAgICAgICAgfCAgIDM0 ICstCiBsaWJhdmNvZGVjL2NjYXB0aW9uX2RlYy5jICAgICAgICAgICAgICAgICB8ICAgMjAgKy0K IGxpYmF2Y29kZWMvY29kZWNfaW50ZXJuYWwuaCAgICAgICAgICAgICAgIHwgICAxMiAtCiBsaWJh dmNvZGVjL2RlY29kZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgNjAgKy0KIGxpYmF2Y29k ZWMvZHZic3ViZGVjLmMgICAgICAgICAgICAgICAgICAgIHwgICA1MyArLQogbGliYXZjb2RlYy9k dmJzdWJlbmMuYyAgICAgICAgICAgICAgICAgICAgfCAgIDk2ICstCiBsaWJhdmNvZGVjL2R2ZHN1 YmRlYy5jICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvZHZkc3ViZW5j LmMgICAgICAgICAgICAgICAgICAgIHwgIDEwMiArLQogbGliYXZjb2RlYy9lbmNvZGUuYyAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDYxICstCiBsaWJhdmNvZGVjL2ludGVybmFsLmggICAgICAg ICAgICAgICAgICAgICB8ICAgMTYgKwogbGliYXZjb2RlYy9qYWNvc3ViZGVjLmMgICAgICAgICAg ICAgICAgICAgfCAgICAyICstCiBsaWJhdmNvZGVjL2xpYmFyaWJiMjQuYyAgICAgICAgICAgICAg ICAgICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvbGlienZiaS10ZWxldGV4dGRlYy5jICAgICAgICAg IHwgICAxNyArLQogbGliYXZjb2RlYy9taWNyb2R2ZGRlYy5jICAgICAgICAgICAgICAgICAgfCAg ICA3ICstCiBsaWJhdmNvZGVjL21vdnRleHRkZWMuYyAgICAgICAgICAgICAgICAgICB8ICAgIDMg Ky0KIGxpYmF2Y29kZWMvbW92dGV4dGVuYy5jICAgICAgICAgICAgICAgICAgIHwgIDEyNiArKy0K IGxpYmF2Y29kZWMvbXBsMmRlYy5jICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogbGli YXZjb2RlYy9wZ3NzdWJkZWMuYyAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBsaWJhdmNv ZGVjL3JlYWx0ZXh0ZGVjLmMgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMv c2FtaWRlYy5jICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogbGliYXZjb2RlYy9zcnRk ZWMuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBsaWJhdmNvZGVjL3NydGVuYy5j ICAgICAgICAgICAgICAgICAgICAgICB8ICAxMTYgKy0KIGxpYmF2Y29kZWMvc3Vidmlld2VyZGVj LmMgICAgICAgICAgICAgICAgIHwgICAgMiArLQogbGliYXZjb2RlYy90ZXN0cy9hdmNvZGVjLmMg ICAgICAgICAgICAgICAgfCAgICA1ICstCiBsaWJhdmNvZGVjL3RleHRkZWMuYyAgICAgICAgICAg ICAgICAgICAgICB8ICAgIDQgKy0KIGxpYmF2Y29kZWMvdHRtbGVuYy5jICAgICAgICAgICAgICAg ICAgICAgIHwgIDExNCArLQogbGliYXZjb2RlYy91dGlscy5jICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMTg1ICsrLQogbGliYXZjb2RlYy93ZWJ2dHRkZWMuYyAgICAgICAgICAgICAgICAgICAg fCAgICAyICstCiBsaWJhdmNvZGVjL3dlYnZ0dGVuYy5jICAgICAgICAgICAgICAgICAgICB8ICAg OTQgKy0KIGxpYmF2Y29kZWMveHN1YmRlYy5jICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiAr LQogbGliYXZjb2RlYy94c3ViZW5jLmMgICAgICAgICAgICAgICAgICAgICAgfCAgIDg4ICstCiBs aWJhdmZpbHRlci9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKwogbGliYXZm aWx0ZXIvYWxsZmlsdGVycy5jICAgICAgICAgICAgICAgICAgfCAgIDE5ICsKIGxpYmF2ZmlsdGVy L2F2ZmlsdGVyLmMgICAgICAgICAgICAgICAgICAgIHwgICAzNCArLQogbGliYXZmaWx0ZXIvYXZm aWx0ZXIuaCAgICAgICAgICAgICAgICAgICAgfCAgIDExICsKIGxpYmF2ZmlsdGVyL2F2ZmlsdGVy Z3JhcGguYyAgICAgICAgICAgICAgIHwgICAgNSArCiBsaWJhdmZpbHRlci9idWZmZXJzaW5rLmMg ICAgICAgICAgICAgICAgICB8ICAgNTQgKwogbGliYXZmaWx0ZXIvYnVmZmVyc2luay5oICAgICAg ICAgICAgICAgICAgfCAgICA3ICsKIGxpYmF2ZmlsdGVyL2J1ZmZlcnNyYy5jICAgICAgICAgICAg ICAgICAgIHwgICA3MiArKwogbGliYXZmaWx0ZXIvYnVmZmVyc3JjLmggICAgICAgICAgICAgICAg ICAgfCAgICAxICsKIGxpYmF2ZmlsdGVyL2Zvcm1hdHMuYyAgICAgICAgICAgICAgICAgICAgIHwg ICAxNiArCiBsaWJhdmZpbHRlci9mb3JtYXRzLmggICAgICAgICAgICAgICAgICAgICB8ICAgIDMg KwogbGliYXZmaWx0ZXIvaW50ZXJuYWwuaCAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICstCiBs aWJhdmZpbHRlci9zZl9ncmFwaGljc3ViMnRleHQuYyAgICAgICAgICB8IDExMzcgKysrKysrKysr KysrKysrKysrKwogbGliYXZmaWx0ZXIvc2Zfc251bGwuYyAgICAgICAgICAgICAgICAgICAgfCAg IDUwICsKIGxpYmF2ZmlsdGVyL3NmX3NwbGl0Y2MuYyAgICAgICAgICAgICAgICAgIHwgIDM5NSAr KysrKysrCiBsaWJhdmZpbHRlci9zZl9zdHJpcHN0eWxlcy5jICAgICAgICAgICAgICB8ICAyMzcg KysrKwogbGliYXZmaWx0ZXIvc2Zfc3ViZmVlZC5jICAgICAgICAgICAgICAgICAgfCAgNDEyICsr KysrKysKIGxpYmF2ZmlsdGVyL3NmX3N1YnNjYWxlLmMgICAgICAgICAgICAgICAgIHwgIDg4NCAr KysrKysrKysrKysrKysKIGxpYmF2ZmlsdGVyL3NmX3RleHQyZ3JhcGhpY3N1Yi5jICAgICAgICAg IHwgIDYzMCArKysrKysrKysrKwogbGliYXZmaWx0ZXIvc2ZfdGV4dG1vZC5jICAgICAgICAgICAg ICAgICAgfCAgNzEwICsrKysrKysrKysrKwogbGliYXZmaWx0ZXIvc3VidGl0bGVzLmMgICAgICAg ICAgICAgICAgICAgfCAgIDYzICsrCiBsaWJhdmZpbHRlci9zdWJ0aXRsZXMuaCAgICAgICAgICAg ICAgICAgICB8ICAgNDQgKwogbGliYXZmaWx0ZXIvdHJpbS5jICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDQ2ICstCiBsaWJhdmZpbHRlci92Zl9vdmVybGF5Z3JhcGhpY3N1YnMuYyAgICAgICB8 ICA3NjUgKysrKysrKysrKysrKwogbGliYXZmaWx0ZXIvdmZfb3ZlcmxheXRleHRzdWJzLmMgICAg ICAgICAgfCAgNjgwICsrKysrKysrKysrCiBsaWJhdmZpbHRlci92Zl9zdWJ0aXRsZXMuYyAgICAg ICAgICAgICAgICB8ICAgNjcgKy0KIGxpYmF2dXRpbC9NYWtlZmlsZSAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgNCArCiB7bGliYXZjb2RlYyA9PiBsaWJhdnV0aWx9L2Fzcy5jICAgICAgICAg ICB8ICAxMTUgKy0KIGxpYmF2dXRpbC9hc3NfaW50ZXJuYWwuaCAgICAgICAgICAgICAgICAgIHwg IDEzNSArKysKIHtsaWJhdmNvZGVjID0+IGxpYmF2dXRpbH0vYXNzX3NwbGl0LmMgICAgIHwgIDE3 OSArKy0KIGxpYmF2dXRpbC9hc3Nfc3BsaXRfaW50ZXJuYWwuaCAgICAgICAgICAgIHwgIDI1NCAr KysrKwogbGliYXZ1dGlsL2ZyYW1lLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjA2ICsr Ky0KIGxpYmF2dXRpbC9mcmFtZS5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA4NSArLQog bGliYXZ1dGlsL3N1YmZtdC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ1ICsKIGxpYmF2 dXRpbC9zdWJmbXQuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDExNSArKwogbGliYXZ1dGls L3ZlcnNpb24uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHRlc3RzL3JlZi9mYXRl L2ZpbHRlci1vdmVybGF5LWR2ZHN1Yi0yMzk3IHwgIDE4MiArLS0KIHRlc3RzL3JlZi9mYXRlL3N1 Yi1kdmIgICAgICAgICAgICAgICAgICAgIHwgIDE2MiArLS0KIHRlc3RzL3JlZi9mYXRlL3N1Yi1z Y2MgICAgICAgICAgICAgICAgICAgIHwgICAgMSAtCiB0ZXN0cy9yZWYvZmF0ZS9zdWIydmlkZW8g ICAgICAgICAgICAgICAgICB8IDEwOTEgKysrKysrKysrKysrKysrKystCiB0ZXN0cy9yZWYvZmF0 ZS9zdWIydmlkZW9fYmFzaWMgICAgICAgICAgICB8IDEyMzggKysrKysrKysrKysrKysrKysrKy0t CiB0ZXN0cy9yZWYvZmF0ZS9zdWIydmlkZW9fdGltZV9saW1pdGVkICAgICB8ICAgNzggKy0KIDg4 IGZpbGVzIGNoYW5nZWQsIDEyMzk4IGluc2VydGlvbnMoKyksIDE2MDQgZGVsZXRpb25zKC0pCiBk ZWxldGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9hc3Nfc3BsaXQuaAogY3JlYXRlIG1vZGUgMTAw NjQ0IGxpYmF2ZmlsdGVyL3NmX2dyYXBoaWNzdWIydGV4dC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg bGliYXZmaWx0ZXIvc2Zfc251bGwuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2ZmlsdGVyL3Nm X3NwbGl0Y2MuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2ZmlsdGVyL3NmX3N0cmlwc3R5bGVz LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci9zZl9zdWJmZWVkLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBsaWJhdmZpbHRlci9zZl9zdWJzY2FsZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg bGliYXZmaWx0ZXIvc2ZfdGV4dDJncmFwaGljc3ViLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJh dmZpbHRlci9zZl90ZXh0bW9kLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci9zdWJ0 aXRsZXMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2ZmlsdGVyL3N1YnRpdGxlcy5oCiBjcmVh dGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0ZXIvdmZfb3ZlcmxheWdyYXBoaWNzdWJzLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci92Zl9vdmVybGF5dGV4dHN1YnMuYwogcmVuYW1lIHts aWJhdmNvZGVjID0+IGxpYmF2dXRpbH0vYXNzLmMgKDU5JSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBs aWJhdnV0aWwvYXNzX2ludGVybmFsLmgKIHJlbmFtZSB7bGliYXZjb2RlYyA9PiBsaWJhdnV0aWx9 L2Fzc19zcGxpdC5jICg3MSUpCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZ1dGlsL2Fzc19zcGxp dF9pbnRlcm5hbC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZ1dGlsL3N1YmZtdC5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgbGliYXZ1dGlsL3N1YmZtdC5oCgoKYmFzZS1jb21taXQ6IDZhODI0MTJi ZjMzMTA4MTExZWIzZjYzMDc2ZmQ1YTUxMzQ5YWUxMTQKUHVibGlzaGVkLUFzOiBodHRwczovL2dp dGh1Yi5jb20vZmZzdGFnaW5nL0ZGbXBlZy9yZWxlYXNlcy90YWcvcHItZmZzdGFnaW5nLTE4JTJG c29mdHdvcmt6JTJGc3VibWl0X3N1YmZpbHRlcmluZy12NQpGZXRjaC1JdC1WaWE6IGdpdCBmZXRj aCBodHRwczovL2dpdGh1Yi5jb20vZmZzdGFnaW5nL0ZGbXBlZyBwci1mZnN0YWdpbmctMTgvc29m dHdvcmt6L3N1Ym1pdF9zdWJmaWx0ZXJpbmctdjUKUHVsbC1SZXF1ZXN0OiBodHRwczovL2dpdGh1 Yi5jb20vZmZzdGFnaW5nL0ZGbXBlZy9wdWxsLzE4CgpSYW5nZS1kaWZmIHZzIHY0OgoKICAxOiAg MmYzYmExNzFmNSA9ICAxOiAgYWEzMmI5MDQ4ZiBhdmNvZGVjLGF2dXRpbDogTW92ZSBlbnVtIEFW U3VidGl0bGVUeXBlIHRvIGF2dXRpbCwgYWRkIG5ldyBhbmQgZGVwcmVjYXRlIG9sZCB2YWx1ZXMK ICAyOiAgZmYxMDFmOGE3NiAhICAyOiAgZDVhYjlkMTkxOSBhdnV0aWwvZnJhbWU6IFByZXBhcmUg QVZGcmFtZSBmb3Igc3VidGl0bGUgaGFuZGxpbmcKICAgICBAQCBsaWJhdnV0aWwvZnJhbWUuYzog RkZfRU5BQkxFX0RFUFJFQ0FUSU9OX1dBUk5JTkdTCiAgICAgICsgICAgY2FzZSBBVk1FRElBX1RZ UEVfVklERU86CiAgICAgICAgICAgICAgIHJldHVybiBmcmFtZV9jb3B5X3ZpZGVvKGRzdCwgc3Jj KTsKICAgICAgLSAgICBlbHNlIGlmIChkc3QtPm5iX3NhbXBsZXMgPiAwICYmCiAgICAgLS0gICAg ICAgICAgICAgKGF2X2NoYW5uZWxfbGF5b3V0X2NoZWNrKCZkc3QtPmNoX2xheW91dCkKICAgICAt LSNpZiBGRl9BUElfT0xEX0NIQU5ORUxfTEFZT1VUCiAgICAgLS0gICAgICAgICAgICAgIHx8IGRz dC0+Y2hhbm5lbF9sYXlvdXQgfHwgZHN0LT5jaGFubmVscwogICAgIC0tI2VuZGlmCiAgICAgLS0g ICAgICAgICAgICApKQogICAgICArICAgIGNhc2UgQVZNRURJQV9UWVBFX0FVRElPOgogICAgIC0g ICAgICAgICByZXR1cm4gZnJhbWVfY29weV9hdWRpbyhkc3QsIHNyYyk7CiAgICAgKysgICAgICAg IGlmIChkc3QtPm5iX3NhbXBsZXMgPiAwICYmCiAgICAgKyAgICAgICAgICAgICAgKGF2X2NoYW5u ZWxfbGF5b3V0X2NoZWNrKCZkc3QtPmNoX2xheW91dCkKICAgICArICNpZiBGRl9BUElfT0xEX0NI QU5ORUxfTEFZT1VUCiAgICAgKyAgICAgICAgICAgICAgIHx8IGRzdC0+Y2hhbm5lbHMgPiAwCiAg ICAgKyAjZW5kaWYKICAgICArICAgICAgICAgICAgICkpCiAgICAgKy0gICAgICAgIHJldHVybiBm cmFtZV9jb3B5X2F1ZGlvKGRzdCwgc3JjKTsKICAgICAgLUZGX0VOQUJMRV9ERVBSRUNBVElPTl9X QVJOSU5HUwogICAgIC0tCiAgICAgLS0gICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAgICAr KyAgICAgICAgICAgIHJldHVybiBmcmFtZV9jb3B5X2F1ZGlvKGRzdCwgc3JjKTsKICAgICArKyAg ICAgICAgYnJlYWs7CiAgICAgICsgICAgY2FzZSBBVk1FRElBX1RZUEVfU1VCVElUTEU6CiAgICAg ICsgICAgICAgIHJldHVybiBmcmFtZV9jb3B5X3N1YnRpdGxlcyhkc3QsIHNyYywgMSk7CiAgICAg LSsgICAgZGVmYXVsdDoKICAgICAtKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAg ICAgKyAgICB9CiAgICAgLSB9CiAgICAgICAKICAgICAtIHZvaWQgYXZfZnJhbWVfcmVtb3ZlX3Np ZGVfZGF0YShBVkZyYW1lICpmcmFtZSwgZW51bSBBVkZyYW1lU2lkZURhdGFUeXBlIHR5cGUpCiAg ICAgKyAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAgICArIH0KICAgICAgCiAgICAgICAj IyBsaWJhdnV0aWwvZnJhbWUuaCAjIwogICAgICBAQAogIDM6ICBiODkzNWQ1ZTY4ID0gIDM6ICAw YTY4NWE2YjE5IGF2Y29kZWMvc3VidGl0bGVzOiBJbnRyb2R1Y2UgbmV3IGZyYW1lLWJhc2VkIHN1 YnRpdGxlIGRlY29kaW5nIEFQSQogIDQ6ICA0YjQ0NzMyZTA3ID0gIDQ6ICAwYjY5YjFjZTE5IGF2 Y29kZWMvbGlienZiaTogc2V0IHN1YnRpdGxlIHR5cGUKICA1OiAgOGZhYTdhNDA0MyA9ICA1OiAg MGMyMDkxZTU3YyBhdmZpbHRlci9zdWJ0aXRsZXM6IFVwZGF0ZSB2Zl9zdWJ0aXRsZXMgdG8gdXNl IG5ldyBkZWNvZGluZyBhcGkKICA2OiAgMTY2NDAyNmQ3YyAhICA2OiAgNDkwM2NkZDFjZCBhdmNv ZGVjLGF2dXRpbDogTW92ZSBhc3MgaGVscGVyIGZ1bmN0aW9ucyB0byBhdnV0aWwgYXMgYXZwcml2 XyBhbmQgZXh0ZW5kIGFzcyBkaWFsb2cgcGFyc2luZwogICAgIEBAIENvbW1pdCBtZXNzYWdlCiAg ICAgIAogICAgICAgICAgLSBoYXJkX3NwYWNlIGNhbGxiYWNrIChmb3IgdXBjb21pbmcgZml4KQog ICAgICAgICAgLSBleHRlbnNpYmxlIGNhbGxiYWNrIChmb3IgZnV0dXJlIGV4dGVuc2lvbikKICAg ICArICAgIC0gbmV3IEFQSSB3aGljaCBhbGxvd3MgdGFnIGZpbHRlcmluZwogICAgICAKICAgICAg ICAgIFNpZ25lZC1vZmYtYnk6IHNvZnR3b3JreiA8c29mdHdvcmt6QGhvdG1haWwuY29tPgogICAg ICAKICAgICBAQCBsaWJhdmNvZGVjL2Fzcy5oCiAgICAgIC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKmxpbmVicmVha3MsIGludCBrZWVwX2Fzc19tYXJrdXApOwogICAg ICAgI2VuZGlmIC8qIEFWQ09ERUNfQVNTX0ggKi8KICAgICAgCiAgICAgKyAjIyBsaWJhdmNvZGVj L2Fzc19zcGxpdC5oIChkZWxldGVkKSAjIwogICAgICtAQAogICAgICstLyoKICAgICArLSAqIFNT QS9BU1Mgc3BsaXRpbmcgZnVuY3Rpb25zCiAgICAgKy0gKiBDb3B5cmlnaHQgKGMpIDIwMTAgIEF1 cmVsaWVuIEphY29icyA8YXVyZWxAZ251YWdlLm9yZz4KICAgICArLSAqCiAgICAgKy0gKiBUaGlz IGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCiAgICAgKy0gKgogICAgICstICogRkZtcGVnIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgICstICogbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwog ICAgICstICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyCiAgICAgKy0gKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICAgICArLSAqCiAgICAgKy0gKiBGRm1w ZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAg ICArLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCiAgICAgKy0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogICAgICstICogTGVzc2VyIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICAgICArLSAqCiAgICAgKy0gKiBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCiAgICAgKy0gKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlCiAgICAgKy0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCiAgICAgKy0g Ki8KICAgICArLQogICAgICstI2lmbmRlZiBBVkNPREVDX0FTU19TUExJVF9ICiAgICAgKy0jZGVm aW5lIEFWQ09ERUNfQVNTX1NQTElUX0gKICAgICArLQogICAgICstLyoqCiAgICAgKy0gKiBmaWVs ZHMgZXh0cmFjdGVkIGZyb20gdGhlIFtTY3JpcHQgSW5mb10gc2VjdGlvbgogICAgICstICovCiAg ICAgKy10eXBlZGVmIHN0cnVjdCB7CiAgICAgKy0gICAgY2hhciAqc2NyaXB0X3R5cGU7ICAgIC8q KjwgU1NBIHNjcmlwdCBmb3JtYXQgdmVyc2lvbiAoZWcuIHY0LjAwKSAqLwogICAgICstICAgIGNo YXIgKmNvbGxpc2lvbnM7ICAgICAvKio8IGhvdyBzdWJ0aXRsZXMgYXJlIG1vdmVkIHRvIHByZXZl bnQgY29sbGlzaW9ucyAqLwogICAgICstICAgIGludCAgIHBsYXlfcmVzX3g7ICAgICAvKio8IHZp ZGVvIHdpZHRoIHRoYXQgQVNTIGNvb3JkcyBhcmUgcmVmZXJyaW5nIHRvICovCiAgICAgKy0gICAg aW50ICAgcGxheV9yZXNfeTsgICAgIC8qKjwgdmlkZW8gaGVpZ2h0IHRoYXQgQVNTIGNvb3JkcyBh cmUgcmVmZXJyaW5nIHRvICovCiAgICAgKy0gICAgZmxvYXQgdGltZXI7ICAgICAgICAgIC8qKjwg dGltZSBtdWx0aXBsaWVyIHRvIGFwcGx5IHRvIFNTQSBjbG9jayAoaW4gJSkgKi8KICAgICArLX0g QVNTU2NyaXB0SW5mbzsKICAgICArLQogICAgICstLyoqCiAgICAgKy0gKiBmaWVsZHMgZXh0cmFj dGVkIGZyb20gdGhlIFtWNCgrKSBTdHlsZXNdIHNlY3Rpb24KICAgICArLSAqLwogICAgICstdHlw ZWRlZiBzdHJ1Y3QgewogICAgICstICAgIGNoYXIgKm5hbWU7ICAgICAgICAgICAvKio8IG5hbWUg b2YgdGhlIHR5bGUgKGNhc2Ugc2Vuc2l0aXZlKSAqLwogICAgICstICAgIGNoYXIgKmZvbnRfbmFt ZTsgICAgICAvKio8IGZvbnQgZmFjZSAoY2FzZSBzZW5zaXRpdmUpICovCiAgICAgKy0gICAgaW50 ICAgZm9udF9zaXplOyAgICAgIC8qKjwgZm9udCBoZWlnaHQgKi8KICAgICArLSAgICBpbnQgICBw cmltYXJ5X2NvbG9yOyAgLyoqPCBjb2xvciB0aGF0IGEgc3VidGl0bGUgd2lsbCBub3JtYWxseSBh cHBlYXIgaW4gKi8KICAgICArLSAgICBpbnQgICBzZWNvbmRhcnlfY29sb3I7CiAgICAgKy0gICAg aW50ICAgb3V0bGluZV9jb2xvcjsgIC8qKjwgY29sb3IgZm9yIG91dGxpbmUgaW4gQVNTLCBjYWxs ZWQgdGVydGlhcnkgaW4gU1NBICovCiAgICAgKy0gICAgaW50ICAgYmFja19jb2xvcjsgICAgIC8q KjwgY29sb3Igb2YgdGhlIHN1YnRpdGxlIG91dGxpbmUgb3Igc2hhZG93ICovCiAgICAgKy0gICAg aW50ICAgYm9sZDsgICAgICAgICAgIC8qKjwgd2hldGhlciB0ZXh0IGlzIGJvbGQgKDEpIG9yIG5v dCAoMCkgKi8KICAgICArLSAgICBpbnQgICBpdGFsaWM7ICAgICAgICAgLyoqPCB3aGV0aGVyIHRl eHQgaXMgaXRhbGljICgxKSBvciBub3QgKDApICovCiAgICAgKy0gICAgaW50ICAgdW5kZXJsaW5l OyAgICAgIC8qKjwgd2hldGhlciB0ZXh0IGlzIHVuZGVybGluZWQgKDEpIG9yIG5vdCAoMCkgKi8K ICAgICArLSAgICBpbnQgICBzdHJpa2VvdXQ7CiAgICAgKy0gICAgZmxvYXQgc2NhbGV4OwogICAg ICstICAgIGZsb2F0IHNjYWxleTsKICAgICArLSAgICBmbG9hdCBzcGFjaW5nOwogICAgICstICAg IGZsb2F0IGFuZ2xlOwogICAgICstICAgIGludCAgIGJvcmRlcl9zdHlsZTsKICAgICArLSAgICBm bG9hdCBvdXRsaW5lOwogICAgICstICAgIGZsb2F0IHNoYWRvdzsKICAgICArLSAgICBpbnQgICBh bGlnbm1lbnQ7ICAgICAgLyoqPCBwb3NpdGlvbiBvZiB0aGUgdGV4dCAobGVmdCwgY2VudGVyLCB0 b3AuLi4pLAogICAgICstICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYWZ0 ZXIgdGhlIGxheW91dCBvZiB0aGUgbnVtcGFkCiAgICAgKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKDEtMyBzdWIsIDQtNiBtaWQsIDctOSB0b3ApICovCiAgICAgKy0gICAgaW50ICAg bWFyZ2luX2w7CiAgICAgKy0gICAgaW50ICAgbWFyZ2luX3I7CiAgICAgKy0gICAgaW50ICAgbWFy Z2luX3Y7CiAgICAgKy0gICAgaW50ICAgYWxwaGFfbGV2ZWw7CiAgICAgKy0gICAgaW50ICAgZW5j b2Rpbmc7CiAgICAgKy19IEFTU1N0eWxlOwogICAgICstCiAgICAgKy0vKioKICAgICArLSAqIGZp ZWxkcyBleHRyYWN0ZWQgZnJvbSB0aGUgW0V2ZW50c10gc2VjdGlvbgogICAgICstICovCiAgICAg Ky10eXBlZGVmIHN0cnVjdCB7CiAgICAgKy0gICAgaW50ICAgcmVhZG9yZGVyOwogICAgICstICAg IGludCAgIGxheWVyOyAgICAvKio8IGhpZ2hlciBudW1iZXJlZCBsYXllcnMgYXJlIGRyYXduIG92 ZXIgbG93ZXIgbnVtYmVyZWQgKi8KICAgICArLSAgICBpbnQgICBzdGFydDsgICAgLyoqPCBzdGFy dCB0aW1lIG9mIHRoZSBkaWFsb2cgaW4gY2VudGlzZWNvbmRzICovCiAgICAgKy0gICAgaW50ICAg ZW5kOyAgICAgIC8qKjwgZW5kIHRpbWUgb2YgdGhlIGRpYWxvZyBpbiBjZW50aXNlY29uZHMgKi8K ICAgICArLSAgICBjaGFyICpzdHlsZTsgICAgLyoqPCBuYW1lIG9mIHRoZSBBU1NTdHlsZSB0byB1 c2Ugd2l0aCB0aGlzIGRpYWxvZyAqLwogICAgICstICAgIGNoYXIgKm5hbWU7CiAgICAgKy0gICAg aW50ICAgbWFyZ2luX2w7CiAgICAgKy0gICAgaW50ICAgbWFyZ2luX3I7CiAgICAgKy0gICAgaW50 ICAgbWFyZ2luX3Y7CiAgICAgKy0gICAgY2hhciAqZWZmZWN0OwogICAgICstICAgIGNoYXIgKnRl eHQ7ICAgICAvKio8IGFjdHVhbCB0ZXh0IHdoaWNoIHdpbGwgYmUgZGlzcGxheWVkIGFzIGEgc3Vi dGl0bGUsCiAgICAgKy0gICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGluY2x1ZGUgc3R5bGUg b3ZlcnJpZGUgY29udHJvbCBjb2RlcyAoc2VlCiAgICAgKy0gICAgICAgICAgICAgICAgICAgICAg ICAgZmZfYXNzX3NwbGl0X292ZXJyaWRlX2NvZGVzKCkpICovCiAgICAgKy19IEFTU0RpYWxvZzsK ICAgICArLQogICAgICstLyoqCiAgICAgKy0gKiBzdHJ1Y3R1cmUgY29udGFpbmluZyB0aGUgd2hv bGUgc3BsaXQgQVNTIGRhdGEKICAgICArLSAqLwogICAgICstdHlwZWRlZiBzdHJ1Y3QgewogICAg ICstICAgIEFTU1NjcmlwdEluZm8gc2NyaXB0X2luZm87ICAgLyoqPCBnZW5lcmFsIGluZm9ybWF0 aW9uIGFib3V0IHRoZSBTU0Egc2NyaXB0Ki8KICAgICArLSAgICBBU1NTdHlsZSAgICAgKnN0eWxl czsgICAgICAgIC8qKjwgYXJyYXkgb2Ygc3BsaXQgb3V0IHN0eWxlcyAqLwogICAgICstICAgIGlu dCAgICAgICAgICAgc3R5bGVzX2NvdW50OyAgLyoqPCBudW1iZXIgb2YgQVNTU3R5bGUgaW4gdGhl IHN0eWxlcyBhcnJheSAqLwogICAgICstICAgIEFTU0RpYWxvZyAgICAqZGlhbG9nczsgICAgICAg LyoqPCBhcnJheSBvZiBzcGxpdCBvdXQgZGlhbG9ncyAqLwogICAgICstICAgIGludCAgICAgICAg ICAgZGlhbG9nc19jb3VudDsgLyoqPCBudW1iZXIgb2YgQVNTRGlhbG9nIGluIHRoZSBkaWFsb2dz IGFycmF5Ki8KICAgICArLX0gQVNTOwogICAgICstCiAgICAgKy0vKioKICAgICArLSAqIFRoaXMg c3RydWN0IGNhbiBiZSBjYXN0ZWQgdG8gQVNTIHRvIGFjY2VzcyB0byB0aGUgc3BsaXQgZGF0YS4K ICAgICArLSAqLwogICAgICstdHlwZWRlZiBzdHJ1Y3QgQVNTU3BsaXRDb250ZXh0IEFTU1NwbGl0 Q29udGV4dDsKICAgICArLQogICAgICstLyoqCiAgICAgKy0gKiBTcGxpdCBhIGZ1bGwgQVNTIGZp bGUgb3IgYSBBU1MgaGVhZGVyIGZyb20gYSBzdHJpbmcgYnVmZmVyIGFuZCBzdG9yZQogICAgICst ICogdGhlIHNwbGl0IHN0cnVjdHVyZSBpbiBhIG5ld2x5IGFsbG9jYXRlZCBjb250ZXh0LgogICAg ICstICoKICAgICArLSAqIEBwYXJhbSBidWYgU3RyaW5nIGNvbnRhaW5pbmcgdGhlIEFTUyBmb3Jt YXR0ZWQgZGF0YS4KICAgICArLSAqIEByZXR1cm4gTmV3bHkgYWxsb2NhdGVkIHN0cnVjdCBjb250 YWluaW5nIHNwbGl0IGRhdGEuCiAgICAgKy0gKi8KICAgICArLUFTU1NwbGl0Q29udGV4dCAqZmZf YXNzX3NwbGl0KGNvbnN0IGNoYXIgKmJ1Zik7CiAgICAgKy0KICAgICArLS8qKgogICAgICstICog RnJlZSBhIGRpYWxvZ3VlIG9idGFpbmVkIGZyb20gZmZfYXNzX3NwbGl0X2RpYWxvZygpLgogICAg ICstICovCiAgICAgKy12b2lkIGZmX2Fzc19mcmVlX2RpYWxvZyhBU1NEaWFsb2cgKipkaWFsb2dw KTsKICAgICArLQogICAgICstLyoqCiAgICAgKy0gKiBTcGxpdCBvbmUgQVNTIERpYWxvZ3VlIGxp bmUgZnJvbSBhIHN0cmluZyBidWZmZXIuCiAgICAgKy0gKgogICAgICstICogQHBhcmFtIGN0eCBD b250ZXh0IHByZXZpb3VzbHkgaW5pdGlhbGl6ZWQgYnkgZmZfYXNzX3NwbGl0KCkuCiAgICAgKy0g KiBAcGFyYW0gYnVmIFN0cmluZyBjb250YWluaW5nIHRoZSBBU1MgIkRpYWxvZ3VlIiBsaW5lLgog ICAgICstICogQHJldHVybiBQb2ludGVyIHRvIHRoZSBzcGxpdCBBU1NEaWFsb2cuIE11c3QgYmUg ZnJlZWQgd2l0aCBmZl9hc3NfZnJlZV9kaWFsb2coKQogICAgICstICovCiAgICAgKy1BU1NEaWFs b2cgKmZmX2Fzc19zcGxpdF9kaWFsb2coQVNTU3BsaXRDb250ZXh0ICpjdHgsIGNvbnN0IGNoYXIg KmJ1Zik7CiAgICAgKy0KICAgICArLS8qKgogICAgICstICogRnJlZSBhbGwgdGhlIG1lbW9yeSBh bGxvY2F0ZWQgZm9yIGFuIEFTU1NwbGl0Q29udGV4dC4KICAgICArLSAqCiAgICAgKy0gKiBAcGFy YW0gY3R4IENvbnRleHQgcHJldmlvdXNseSBpbml0aWFsaXplZCBieSBmZl9hc3Nfc3BsaXQoKS4K ICAgICArLSAqLwogICAgICstdm9pZCBmZl9hc3Nfc3BsaXRfZnJlZShBU1NTcGxpdENvbnRleHQg KmN0eCk7CiAgICAgKy0KICAgICArLQogICAgICstLyoqCiAgICAgKy0gKiBTZXQgb2YgY2FsbGJh Y2sgZnVuY3Rpb25zIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBvdmVycmlkZSBjb2RlcyB0aGF0IGNh bgogICAgICstICogYmUgZW5jb3VudGVyZWQgaW4gYSAiRGlhbG9ndWUiIFRleHQgZmllbGQuCiAg ICAgKy0gKi8KICAgICArLXR5cGVkZWYgc3RydWN0IHsKICAgICArLSAgICAvKioKICAgICArLSAg ICAgKiBAZGVmZ3JvdXAgYXNzX3N0eWxlcyAgICBBU1Mgc3R5bGVzCiAgICAgKy0gICAgICogQHsK ICAgICArLSAgICAgKi8KICAgICArLSAgICB2b2lkICgqdGV4dCkodm9pZCAqcHJpdiwgY29uc3Qg Y2hhciAqdGV4dCwgaW50IGxlbik7CiAgICAgKy0gICAgdm9pZCAoKm5ld19saW5lKSh2b2lkICpw cml2LCBpbnQgZm9yY2VkKTsKICAgICArLSAgICB2b2lkICgqc3R5bGUpKHZvaWQgKnByaXYsIGNo YXIgc3R5bGUsIGludCBjbG9zZSk7CiAgICAgKy0gICAgdm9pZCAoKmNvbG9yKSh2b2lkICpwcml2 LCB1bnNpZ25lZCBpbnQgLyogY29sb3IgKi8sIHVuc2lnbmVkIGludCBjb2xvcl9pZCk7CiAgICAg Ky0gICAgdm9pZCAoKmFscGhhKSh2b2lkICpwcml2LCBpbnQgYWxwaGEsIGludCBhbHBoYV9pZCk7 CiAgICAgKy0gICAgdm9pZCAoKmZvbnRfbmFtZSkodm9pZCAqcHJpdiwgY29uc3QgY2hhciAqbmFt ZSk7CiAgICAgKy0gICAgdm9pZCAoKmZvbnRfc2l6ZSkodm9pZCAqcHJpdiwgaW50IHNpemUpOwog ICAgICstICAgIHZvaWQgKCphbGlnbm1lbnQpKHZvaWQgKnByaXYsIGludCBhbGlnbm1lbnQpOwog ICAgICstICAgIHZvaWQgKCpjYW5jZWxfb3ZlcnJpZGVzKSh2b2lkICpwcml2LCBjb25zdCBjaGFy ICpzdHlsZSk7CiAgICAgKy0gICAgLyoqIEB9ICovCiAgICAgKy0KICAgICArLSAgICAvKioKICAg ICArLSAgICAgKiBAZGVmZ3JvdXAgYXNzX2Z1bmN0aW9ucyAgICBBU1MgZnVuY3Rpb25zCiAgICAg Ky0gICAgICogQHsKICAgICArLSAgICAgKi8KICAgICArLSAgICB2b2lkICgqbW92ZSkodm9pZCAq cHJpdiwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyLCBpbnQgdDEsIGludCB0Mik7CiAg ICAgKy0gICAgdm9pZCAoKm9yaWdpbikodm9pZCAqcHJpdiwgaW50IHgsIGludCB5KTsKICAgICAr LSAgICAvKiogQH0gKi8KICAgICArLQogICAgICstICAgIC8qKgogICAgICstICAgICAqIEBkZWZn cm91cCBhc3NfZW5kICAgIGVuZCBvZiBEaWFsb2d1ZSBFdmVudAogICAgICstICAgICAqIEB7CiAg ICAgKy0gICAgICovCiAgICAgKy0gICAgdm9pZCAoKmVuZCkodm9pZCAqcHJpdik7CiAgICAgKy0g ICAgLyoqIEB9ICovCiAgICAgKy19IEFTU0NvZGVzQ2FsbGJhY2tzOwogICAgICstCiAgICAgKy0v KioKICAgICArLSAqIFNwbGl0IG92ZXJyaWRlIGNvZGVzIG91dCBvZiBhIEFTUyAiRGlhbG9ndWUi IFRleHQgZmllbGQuCiAgICAgKy0gKgogICAgICstICogQHBhcmFtIGNhbGxiYWNrcyBTZXQgb2Yg Y2FsbGJhY2sgZnVuY3Rpb25zIGNhbGxlZCBmb3IgZWFjaCBvdmVycmlkZSBjb2RlCiAgICAgKy0g KiAgICAgICAgICAgICAgICAgIGVuY291bnRlcmVkLgogICAgICstICogQHBhcmFtIHByaXYgT3Bh cXVlIHBvaW50ZXIgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbnMuCiAgICAgKy0gKiBA cGFyYW0gYnVmIFRoZSBBU1MgIkRpYWxvZ3VlIiBUZXh0IGZpZWxkIHRvIHNwbGl0LgogICAgICst ICogQHJldHVybiA+PSAwIG9uIHN1Y2Nlc3Mgb3RoZXJ3aXNlIGFuIGVycm9yIGNvZGUgPDAKICAg ICArLSAqLwogICAgICstaW50IGZmX2Fzc19zcGxpdF9vdmVycmlkZV9jb2Rlcyhjb25zdCBBU1ND b2Rlc0NhbGxiYWNrcyAqY2FsbGJhY2tzLCB2b2lkICpwcml2LAogICAgICstICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpidWYpOwogICAgICstCiAgICAgKy0vKioK ICAgICArLSAqIEZpbmQgYW4gQVNTU3R5bGUgc3RydWN0dXJlIGJ5IGl0cyBuYW1lLgogICAgICst ICoKICAgICArLSAqIEBwYXJhbSBjdHggQ29udGV4dCBwcmV2aW91c2x5IGluaXRpYWxpemVkIGJ5 IGZmX2Fzc19zcGxpdCgpLgogICAgICstICogQHBhcmFtIHN0eWxlIG5hbWUgb2YgdGhlIHN0eWxl IHRvIHNlYXJjaCBmb3IuCiAgICAgKy0gKiBAcmV0dXJuIHRoZSBBU1NTdHlsZSBjb3JyZXNwb25k aW5nIHRvIHN0eWxlLCBvciBOVUxMIGlmIHN0eWxlIGNhbid0IGJlIGZvdW5kCiAgICAgKy0gKi8K ICAgICArLUFTU1N0eWxlICpmZl9hc3Nfc3R5bGVfZ2V0KEFTU1NwbGl0Q29udGV4dCAqY3R4LCBj b25zdCBjaGFyICpzdHlsZSk7CiAgICAgKy0KICAgICArLSNlbmRpZiAvKiBBVkNPREVDX0FTU19T UExJVF9IICovCiAgICAgKwogICAgICAgIyMgbGliYXZjb2RlYy9hc3NkZWMuYyAjIwogICAgICBA QAogICAgICAgI2luY2x1ZGUgPHN0cmluZy5oPgogICAgIEBAIGxpYmF2dXRpbC9hc3MuYzogY2hh ciAqZmZfYXNzX2dldF9kaWFsb2coaW50IHJlYWRvcmRlciwgaW50IGxheWVyLCBjb25zdCBjaGFy ICpzCiAgICAgIC0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNwZWFrZXIpCiAgICAg ICtjaGFyICphdnByaXZfYXNzX2dldF9kaWFsb2dfZXgoaW50IHJlYWRvcmRlciwgaW50IGxheWVy LCBjb25zdCBjaGFyICpzdHlsZSwKICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKnNwZWFrZXIsIGludCBtYXJnaW5fbCwgaW50IG1hcmdpbl9yLAogICAgIC0rICAgICAg ICAgICAgICAgICAgICAgICAgaW50IG1hcmdpbl92LCBjb25zdCBjaGFyICp0ZXh0KQogICAgICsr ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1hcmdpbl92LCBjb25zdCBjaGFyICplZmZlY3Qs IGNvbnN0IGNoYXIgKnRleHQpCiAgICAgICB7CiAgICAgIC0gICAgcmV0dXJuIGZmX2Fzc19hZGRf cmVjdDIoc3ViLCBkaWFsb2csIHJlYWRvcmRlciwgbGF5ZXIsIHN0eWxlLCBzcGVha2VyLCBOVUxM KTsKICAgICAgLX0KICAgICBAQCBsaWJhdnV0aWwvYXNzLmM6IGNoYXIgKmZmX2Fzc19nZXRfZGlh bG9nKGludCByZWFkb3JkZXIsIGludCBsYXllciwgY29uc3QgY2hhciAqcwogICAgICAtICAgIEZG QVNTRGVjb2RlckNvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOwogICAgICAtICAgIGlmICgh KGF2Y3R4LT5mbGFnczIgJiBBVl9DT0RFQ19GTEFHMl9ST19GTFVTSF9OT09QKSkKICAgICAgLSAg ICAgICAgcy0+cmVhZG9yZGVyID0gMDsKICAgICAtKyAgICByZXR1cm4gYXZfYXNwcmludGYoIiVk LCVkLCVzLCVzLCVkLCVkLCVkLCwlcyIsCiAgICAgKysgICAgcmV0dXJuIGF2X2FzcHJpbnRmKCIl ZCwlZCwlcywlcywlZCwlZCwlZCwlcywlcyIsCiAgICAgICsgICAgICAgICAgICAgICAgICAgICAg IHJlYWRvcmRlciwgbGF5ZXIsIHN0eWxlID8gc3R5bGUgOiAiRGVmYXVsdCIsCiAgICAgICsgICAg ICAgICAgICAgICAgICAgICAgIHNwZWFrZXIgPyBzcGVha2VyIDogIiIsIG1hcmdpbl9sLCBtYXJn aW5fciwKICAgICAtKyAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luX3YsIHRleHQpOwogICAg ICsrICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5fdiwgZWZmZWN0ID8gZWZmZWN0IDogIiIs IHRleHQpOwogICAgICAgfQogICAgICAgCiAgICAgIC12b2lkIGZmX2Fzc19icHJpbnRfdGV4dF9l dmVudChBVkJQcmludCAqYnVmLCBjb25zdCBjaGFyICpwLCBpbnQgc2l6ZSwKICAgICBAQCBsaWJh dnV0aWwvYXNzX2ludGVybmFsLmggKG5ldykKICAgICAgKyAqLwogICAgICArY2hhciAqYXZwcml2 X2Fzc19nZXRfZGlhbG9nX2V4KGludCByZWFkb3JkZXIsIGludCBsYXllciwgY29uc3QgY2hhciAq c3R5bGUsCiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcGVha2Vy LCBpbnQgbWFyZ2luX2wsIGludCBtYXJnaW5fciwKICAgICAtKyAgICAgICAgICAgICAgICAgICAg ICAgIGludCBtYXJnaW5fdiwgY29uc3QgY2hhciAqdGV4dCk7CiAgICAgKysgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgbWFyZ2luX3YsIGNvbnN0IGNoYXIgKmVmZmVjdCwgY29uc3QgY2hhciAq dGV4dCk7CiAgICAgICsKICAgICAgKy8qKgogICAgICArICogRXNjYXBlIGEgdGV4dCBzdWJ0aXRs ZSB1c2luZyBBU1Mgc3ludGF4IGludG8gYW4gQVZCUHJpbnQgYnVmZmVyLgogICAgIEBAIGxpYmF2 dXRpbC9hc3Nfc3BsaXQuYzogQVNTRGlhbG9nICpmZl9hc3Nfc3BsaXRfZGlhbG9nKEFTU1NwbGl0 Q29udGV4dCAqY3R4LCBjb25zCiAgICAgICAgICAgaWYgKGN0eCkgewogICAgICAgICAgICAgICBp bnQgaTsKICAgICAgQEAgbGliYXZ1dGlsL2Fzc19zcGxpdC5jOiB2b2lkIGZmX2Fzc19zcGxpdF9m cmVlKEFTU1NwbGl0Q29udGV4dCAqY3R4KQogICAgICsgICAgIH0KICAgICAgIH0KICAgICAgIAog ICAgICsrc3RhdGljIGludCBhc3NfcmVtb3ZlX2VtcHR5X2JyYWNlcyhBVkJQcmludCogYnVmZmVy KQogICAgICsrewogICAgICsrICAgIGNoYXIqIHRtcDsKICAgICArKyAgICBpbnQgcmV0ID0gMCwg biA9IDA7CiAgICAgICAKICAgICAgLWludCBmZl9hc3Nfc3BsaXRfb3ZlcnJpZGVfY29kZXMoY29u c3QgQVNTQ29kZXNDYWxsYmFja3MgKmNhbGxiYWNrcywgdm9pZCAqcHJpdiwKICAgICAtK2ludCBh dnByaXZfYXNzX3NwbGl0X292ZXJyaWRlX2NvZGVzKGNvbnN0IEFTU0NvZGVzQ2FsbGJhY2tzICpj YWxsYmFja3MsIHZvaWQgKnByaXYsCiAgICAgLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKmJ1ZikKICAgICArLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqYnVmKQogICAgICsrICAgIGlmIChidWZmZXIgPT0gTlVMTCB8fCBidWZm ZXItPmxlbiA9PSAwIHx8ICFhdl9icHJpbnRfaXNfY29tcGxldGUoYnVmZmVyKSkKICAgICArKyAg ICAgICAgcmV0dXJuIDA7CiAgICAgKysKICAgICArKyAgICByZXQgPSBhdl9icHJpbnRfZmluYWxp emUoYnVmZmVyLCAmdG1wKTsKICAgICArKyAgICBpZiAocmV0KQogICAgICsrICAgICAgICByZXR1 cm4gcmV0OwogICAgICsrCiAgICAgKysgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1ZmZl ci0+bGVuOyBpKyspIHsKICAgICArKyAgICAgICAgaWYgKHRtcFtpXSA9PSAneycgJiYgdG1wW2kr MV0gPT0gJ30nKQogICAgICsrICAgICAgICAgICAgaSsrOwogICAgICsrICAgICAgICBlbHNlCiAg ICAgKysgICAgICAgICAgICB0bXBbbisrXSA9IHRtcFtpXTsKICAgICArKyAgICB9CiAgICAgKysK ICAgICArKyAgICB0bXBbbisrXSA9ICdcMCc7CiAgICAgKysKICAgICArKyAgICBhdl9icHJpbnRf aW5pdChidWZmZXIsIG4sIG4pOwogICAgICsrICAgIGF2X2JwcmludF9hcHBlbmRfZGF0YShidWZm ZXIsIHRtcCwgbiAtIDEpOwogICAgICsrICAgIGF2X2ZyZWUodG1wKTsKICAgICArKwogICAgICsr ICAgIHJldHVybiByZXQ7CiAgICAgKyt9CiAgICAgKysKICAgICArK3N0YXRpYyB2b2lkIGFzc193 cml0ZV9maWx0ZXJlZF9saW5lKEFWQlByaW50KiBidWZmZXIsIGNvbnN0IGNoYXIgKmJ1ZiwgaW50 IGxlbiwgZW51bSBBU1NTcGxpdENvbXBvbmVudHMga2VlcF9mbGFncywgZW51bSBBU1NTcGxpdENv bXBvbmVudHMgc3BsaXRfY29tcG9uZW50KQogICAgICsrewogICAgICsrICAgIGlmIChidWZmZXIg PT0gTlVMTCB8fCBidWYgPT0gTlVMTCB8fCBsZW4gPT0gMCkKICAgICArKyAgICAgICAgcmV0dXJu OwogICAgICsrCiAgICAgKysgICAgaWYgKHNwbGl0X2NvbXBvbmVudCAhPSBBU1NfU1BMSVRfQU5Z ICYmICEoa2VlcF9mbGFncyAmIHNwbGl0X2NvbXBvbmVudCkpCiAgICAgKysgICAgICAgIHJldHVy bjsKICAgICArKwogICAgICsrCiAgICAgKysgICAgYXZfYnByaW50X2FwcGVuZF9kYXRhKGJ1ZmZl ciwgYnVmLCBsZW4gLSAxKTsKICAgICArK30KICAgICArKwogICAgICsraW50IGF2cHJpdl9hc3Nf ZmlsdGVyX292ZXJyaWRlX2NvZGVzKGNvbnN0IEFTU0NvZGVzQ2FsbGJhY2tzICpjYWxsYmFja3Ms IHZvaWQgKnByaXYsIGNvbnN0IGNoYXIgKmJ1ZiwgQVZCUHJpbnQqIG91dGJ1ZmZlciwgZW51bSBB U1NTcGxpdENvbXBvbmVudHMga2VlcF9mbGFncykKICAgICAgIHsKICAgICAgICAgICBjb25zdCBj aGFyICp0ZXh0ID0gTlVMTDsKICAgICAtQEAgbGliYXZ1dGlsL2Fzc19zcGxpdC5jOiBpbnQgZmZf YXNzX3NwbGl0X292ZXJyaWRlX2NvZGVzKGNvbnN0IEFTU0NvZGVzQ2FsbGJhY2tzICpjYWxsYmFj a3MsIHZvaWQgKnByaXYsCiAgICAgKyAgICAgY2hhciBuZXdfbGluZVsyXTsKICAgICArLSAgICBp bnQgdGV4dF9sZW4gPSAwOwogICAgICsrICAgIGludCB0ZXh0X2xlbiA9IDAsIHJldCA9IDA7CiAg ICAgKyAKICAgICArICAgICB3aGlsZSAoYnVmICYmICpidWYpIHsKICAgICArLSAgICAgICAgaWYg KHRleHQgJiYgY2FsbGJhY2tzLT50ZXh0ICYmCiAgICAgKy0gICAgICAgICAgICAoc3NjYW5mKGJ1 ZiwgIlxcJTFbbk5dIiwgbmV3X2xpbmUpID09IDEgfHwKICAgICArLSAgICAgICAgICAgICAhc3Ry bmNtcChidWYsICJ7XFwiLCAyKSkpIHsKICAgICArLSAgICAgICAgICAgIGNhbGxiYWNrcy0+dGV4 dChwcml2LCB0ZXh0LCB0ZXh0X2xlbik7CiAgICAgKysKICAgICArKyAgICAgICAgaWYgKHRleHQg JiYgKHNzY2FuZihidWYsICJcXCUxW25OXSIsIG5ld19saW5lKSA9PSAxIHx8ICFzdHJuY21wKGJ1 ZiwgIntcXCIsIDIpKSkgewogICAgICsrICAgICAgICAgICAgYXNzX3dyaXRlX2ZpbHRlcmVkX2xp bmUob3V0YnVmZmVyLCB0ZXh0LCB0ZXh0X2xlbiArIDEsIGtlZXBfZmxhZ3MsIEFTU19TUExJVF9U RVhUIHwgQVNTX1NQTElUX1RFWFQyKTsKICAgICArKwogICAgICsrICAgICAgICAgICAgaWYgKGNh bGxiYWNrcy0+dGV4dCkKICAgICArKyAgICAgICAgICAgICAgICBjYWxsYmFja3MtPnRleHQocHJp diwgdGV4dCwgdGV4dF9sZW4pOwogICAgICsgICAgICAgICAgICAgdGV4dCA9IE5VTEw7CiAgICAg KyAgICAgICAgIH0KICAgICArKwogICAgICsgICAgICAgICBpZiAoc3NjYW5mKGJ1ZiwgIlxcJTFb bk5dIiwgbmV3X2xpbmUpID09IDEpIHsKICAgICArICAgICAgICAgICAgIGlmIChjYWxsYmFja3Mt Pm5ld19saW5lKQogICAgICsgICAgICAgICAgICAgICAgIGNhbGxiYWNrcy0+bmV3X2xpbmUocHJp diwgbmV3X2xpbmVbMF0gPT0gJ04nKTsKICAgICArKyAgICAgICAgICAgIGFzc193cml0ZV9maWx0 ZXJlZF9saW5lKG91dGJ1ZmZlciwgYnVmLCAzLCBrZWVwX2ZsYWdzLCBBU1NfU1BMSVRfQU5ZKTsK ICAgICArICAgICAgICAgICAgIGJ1ZiArPSAyOwogICAgICsgICAgICAgICB9IGVsc2UgaWYgKCFz dHJuY21wKGJ1ZiwgIntcXCIsIDIpKSB7CiAgICAgKysgICAgICAgICAgICBhc3Nfd3JpdGVfZmls dGVyZWRfbGluZShvdXRidWZmZXIsIGJ1ZiwgMiwga2VlcF9mbGFncywgQVNTX1NQTElUX0FOWSk7 CiAgICAgKyAgICAgICAgICAgICBidWYrKzsKICAgICAgICAgICAgICAgICAgIHdoaWxlICgqYnVm ID09ICdcXCcpIHsKICAgICAtICAgICAgICAgICAgICAgICBjaGFyIHN0eWxlWzJdLCBjWzJdLCBz ZXBbMl0sIGNfbnVtWzJdID0gIjAiLCB0bXBbMTI4XSA9IHswfTsKICAgICArLSAgICAgICAgICAg ICAgICBjaGFyIHN0eWxlWzJdLCBjWzJdLCBzZXBbMl0sIGNfbnVtWzJdID0gIjAiLCB0bXBbMTI4 XSA9IHswfTsKICAgICArKyAgICAgICAgICAgICAgICBjaGFyIHN0eWxlWzRdLCBjWzJdLCBheGlz WzNdLCBzZXBbM10sIGNfbnVtWzJdID0gIjAiLCB0bXBbMTI4XSA9IHswfTsKICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgY29sb3IgPSAweEZGRkZGRkZGOwogICAgICAtICAgICAg ICAgICAgICAgIGludCBsZW4sIHNpemUgPSAtMSwgYW4gPSAtMSwgYWxwaGEgPSAtMTsKICAgICAg LSAgICAgICAgICAgICAgICBpbnQgeDEsIHkxLCB4MiwgeTIsIHQxID0gLTEsIHQyID0gLTE7CiAg ICAgICsgICAgICAgICAgICAgICAgaW50IGxlbiwgc2l6ZSA9IC0xLCBhbiA9IC0xLCBhbHBoYSA9 IC0xLCBzY2FsZSA9IDA7CiAgICAgLSsgICAgICAgICAgICAgICAgaW50IHgxLCB5MSwgeDIsIHky LCB0MSA9IC0xLCB0MiA9IC0xLCBhY2NlbCA9IDE7CiAgICAgKysgICAgICAgICAgICAgICAgZmxv YXQgZjEgPSAxOwogICAgICsrICAgICAgICAgICAgICAgIGludCB4MSwgeTEsIHgyLCB5MiwgeDMs IHQxID0gLTEsIHQyID0gLTEsIHQzID0gLTEsIHQ0ID0gLTEsIGFjY2VsID0gMTsKICAgICAgICAg ICAgICAgICAgICAgICBpZiAoc3NjYW5mKGJ1ZiwgIlxcJTFbYmlzdV0lMVswMVxcfV0lbiIsIHN0 eWxlLCBjLCAmbGVuKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsb3Nl ID0gY1swXSA9PSAnMCcgPyAxIDogY1swXSA9PSAnMScgPyAwIDogLTE7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxlbiArPSBjbG9zZSAhPSAtMTsKICAgICAtQEAgbGliYXZ1dGlsL2Fzc19z cGxpdC5jOiBpbnQgZmZfYXNzX3NwbGl0X292ZXJyaWRlX2NvZGVzKGNvbnN0IEFTU0NvZGVzQ2Fs bGJhY2tzICpjYWxsYmFja3MsIHZvaWQgKnByaXYsCiAgICAgKysgICAgICAgICAgICAgICAgICAg IHN3aXRjaCAoY1swXSkgewogICAgICsrICAgICAgICAgICAgICAgICAgICBjYXNlICdiJzoKICAg ICArKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc193cml0ZV9maWx0ZXJlZF9saW5lKG91dGJ1 ZmZlciwgYnVmLCBsZW4sIGtlZXBfZmxhZ3MsIEFTU19TUExJVF9GT05UX0JPTEQpOwogICAgICsr ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgKysgICAgICAgICAgICAgICAgICAg IGNhc2UgJ3UnOgogICAgICsrICAgICAgICAgICAgICAgICAgICAgICAgYXNzX3dyaXRlX2ZpbHRl cmVkX2xpbmUob3V0YnVmZmVyLCBidWYsIGxlbiwga2VlcF9mbGFncywgQVNTX1NQTElUX0ZPTlRf VU5ERVJMSU5FKTsKICAgICArKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICsr ICAgICAgICAgICAgICAgICAgICBjYXNlICdpJzoKICAgICArKyAgICAgICAgICAgICAgICAgICAg ICAgIGFzc193cml0ZV9maWx0ZXJlZF9saW5lKG91dGJ1ZmZlciwgYnVmLCBsZW4sIGtlZXBfZmxh Z3MsIEFTU19TUExJVF9GT05UX0lUQUxJQyk7CiAgICAgKysgICAgICAgICAgICAgICAgICAgICAg ICBicmVhazsKICAgICArKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnYSc6CiAgICAgKysgICAg ICAgICAgICAgICAgICAgICAgICBhc3Nfd3JpdGVfZmlsdGVyZWRfbGluZShvdXRidWZmZXIsIGJ1 ZiwgbGVuLCBrZWVwX2ZsYWdzLCBBU1NfU1BMSVRfRk9OVF9TVFJJS0VPVVQpOwogICAgICsrICAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgKysgICAgICAgICAgICAgICAgICAgIH0K ICAgICArICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrcy0+c3R5bGUpCiAgICAgKyAg ICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3MtPnN0eWxlKHByaXYsIHN0eWxlWzBdLCBj bG9zZSk7CiAgICAgKyAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzc2NhbmYoYnVmLCAiXFxj JTFbXFx9XSVuIiwgc2VwLCAmbGVuKSA+IDAgfHwKICAgICArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNzY2FuZihidWYsICJcXGMmSCVYJiUxW1xcfV0lbiIsICZjb2xvciwgc2VwLCAmbGVu KSA+IDEgfHwKICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzY2FuZihidWYsICJc XCUxWzEyMzRdYyUxW1xcfV0lbiIsIGNfbnVtLCBzZXAsICZsZW4pID4gMSB8fAogICAgICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3NjYW5mKGJ1ZiwgIlxcJTFbMTIzNF1jJkglWCYlMVtc XH1dJW4iLCBjX251bSwgJmNvbG9yLCBzZXAsICZsZW4pID4gMikgewogICAgICsrICAgICAgICAg ICAgICAgICAgICBhc3Nfd3JpdGVfZmlsdGVyZWRfbGluZShvdXRidWZmZXIsIGJ1ZiwgbGVuLCBr ZWVwX2ZsYWdzLCBBU1NfU1BMSVRfQ09MT1IpOwogICAgICsgICAgICAgICAgICAgICAgICAgICBp ZiAoY2FsbGJhY2tzLT5jb2xvcikKICAgICArICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxi YWNrcy0+Y29sb3IocHJpdiwgY29sb3IsIGNfbnVtWzBdIC0gJzAnKTsKICAgICArICAgICAgICAg ICAgICAgICB9IGVsc2UgaWYgKHNzY2FuZihidWYsICJcXGFscGhhJTFbXFx9XSVuIiwgc2VwLCAm bGVuKSA+IDAgfHwKICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzY2FuZihidWYs ICJcXGFscGhhJkglMlgmJTFbXFx9XSVuIiwgJmFscGhhLCBzZXAsICZsZW4pID4gMSB8fAogICAg ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NjYW5mKGJ1ZiwgIlxcJTFbMTIzNF1hJTFb XFx9XSVuIiwgY19udW0sIHNlcCwgJmxlbikgPiAxIHx8CiAgICAgKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzc2NhbmYoYnVmLCAiXFwlMVsxMjM0XWEmSCUyWCYlMVtcXH1dJW4iLCBjX251 bSwgJmFscGhhLCBzZXAsICZsZW4pID4gMikgewogICAgICsrICAgICAgICAgICAgICAgICAgICBh c3Nfd3JpdGVfZmlsdGVyZWRfbGluZShvdXRidWZmZXIsIGJ1ZiwgbGVuLCBrZWVwX2ZsYWdzLCBB U1NfU1BMSVRfQUxQSEEpOwogICAgICsgICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2tz LT5hbHBoYSkKICAgICArICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrcy0+YWxwaGEo cHJpdiwgYWxwaGEsIGNfbnVtWzBdIC0gJzAnKTsKICAgICArICAgICAgICAgICAgICAgICB9IGVs c2UgaWYgKHNzY2FuZihidWYsICJcXGZuJTFbXFx9XSVuIiwgc2VwLCAmbGVuKSA+IDAgfHwKICAg ICArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzY2FuZihidWYsICJcXGZuJTEyN1teXFx9 XSUxW1xcfV0lbiIsIHRtcCwgc2VwLCAmbGVuKSA+IDEpIHsKICAgICArKyAgICAgICAgICAgICAg ICAgICAgYXNzX3dyaXRlX2ZpbHRlcmVkX2xpbmUob3V0YnVmZmVyLCBidWYsIGxlbiwga2VlcF9m bGFncywgQVNTX1NQTElUX0ZPTlRfTkFNRSk7CiAgICAgKyAgICAgICAgICAgICAgICAgICAgIGlm IChjYWxsYmFja3MtPmZvbnRfbmFtZSkKICAgICArICAgICAgICAgICAgICAgICAgICAgICAgIGNh bGxiYWNrcy0+Zm9udF9uYW1lKHByaXYsIHRtcFswXSA/IHRtcCA6IE5VTEwpOwogICAgICsgICAg ICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3NjYW5mKGJ1ZiwgIlxcZnMlMVtcXH1dJW4iLCBzZXAs ICZsZW4pID4gMCB8fAogICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NjYW5mKGJ1 ZiwgIlxcZnMldSUxW1xcfV0lbiIsICZzaXplLCBzZXAsICZsZW4pID4gMSkgewogICAgICsrICAg ICAgICAgICAgICAgICAgICBhc3Nfd3JpdGVfZmlsdGVyZWRfbGluZShvdXRidWZmZXIsIGJ1Ziwg bGVuLCBrZWVwX2ZsYWdzLCBBU1NfU1BMSVRfRk9OVF9TSVpFKTsKICAgICArICAgICAgICAgICAg ICAgICAgICAgaWYgKGNhbGxiYWNrcy0+Zm9udF9zaXplKQogICAgICsgICAgICAgICAgICAgICAg ICAgICAgICAgY2FsbGJhY2tzLT5mb250X3NpemUocHJpdiwgc2l6ZSk7CiAgICAgKysgICAgICAg ICAgICAgICAgfSBlbHNlIGlmIChzc2NhbmYoYnVmLCAiXFxmc2N4JTFbXFx9XSVuIiwgc2VwLCAm bGVuKSA+IDAgfHwKICAgICArKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzY2FuZihidWYs ICJcXGZzY3glZiUxW1xcfV0lbiIsICZmMSwgc2VwLCAmbGVuKSA+IDEpIHsKICAgICArKyAgICAg ICAgICAgICAgICAgICAgYXNzX3dyaXRlX2ZpbHRlcmVkX2xpbmUob3V0YnVmZmVyLCBidWYsIGxl biwga2VlcF9mbGFncywgQVNTX1NQTElUX0ZPTlRfU0NBTEUpOwogICAgICsrICAgICAgICAgICAg ICAgIH0gZWxzZSBpZiAoc3NjYW5mKGJ1ZiwgIlxcZnNjeSUxW1xcfV0lbiIsIHNlcCwgJmxlbikg PiAwIHx8CiAgICAgKysgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2NhbmYoYnVmLCAiXFxm c2N5JWYlMVtcXH1dJW4iLCAmZjEsIHNlcCwgJmxlbikgPiAxKSB7CiAgICAgKysgICAgICAgICAg ICAgICAgICAgIGFzc193cml0ZV9maWx0ZXJlZF9saW5lKG91dGJ1ZmZlciwgYnVmLCBsZW4sIGtl ZXBfZmxhZ3MsIEFTU19TUExJVF9GT05UX1NDQUxFKTsKICAgICArKyAgICAgICAgICAgICAgICB9 IGVsc2UgaWYgKHNzY2FuZihidWYsICJcXGZzcCUxW1xcfV0lbiIsIHNlcCwgJmxlbikgPiAwIHx8 CiAgICAgKysgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2NhbmYoYnVmLCAiXFxmc3AldSUx W1xcfV0lbiIsICZzaXplLCBzZXAsICZsZW4pID4gMSkgewogICAgICsrICAgICAgICAgICAgICAg ICAgICBhc3Nfd3JpdGVfZmlsdGVyZWRfbGluZShvdXRidWZmZXIsIGJ1ZiwgbGVuLCBrZWVwX2Zs YWdzLCBBU1NfU1BMSVRfRk9OVF9TUEFDSU5HKTsKICAgICArKyAgICAgICAgICAgICAgICB9IGVs c2UgaWYgKHNzY2FuZihidWYsICJcXGZlJTFbXFx9XSVuIiwgc2VwLCAmbGVuKSA+IDAgfHwKICAg ICArKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzY2FuZihidWYsICJcXGZlJXUlMVtcXH1d JW4iLCAmc2l6ZSwgc2VwLCAmbGVuKSA+IDEpIHsKICAgICArKyAgICAgICAgICAgICAgICAgICAg YXNzX3dyaXRlX2ZpbHRlcmVkX2xpbmUob3V0YnVmZmVyLCBidWYsIGxlbiwga2VlcF9mbGFncywg QVNTX1NQTElUX0ZPTlRfQ0hBUlNFVCk7CiAgICAgKysgICAgICAgICAgICAgICAgfSBlbHNlIGlm IChzc2NhbmYoYnVmLCAiXFxib3JkJTFbXFx9XSVuIiwgc2VwLCAmbGVuKSA+IDAgfHwKICAgICAr KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzY2FuZihidWYsICJcXGJvcmQldSUxW1xcfV0l biIsICZzaXplLCBzZXAsICZsZW4pID4gMSkgewogICAgICsrICAgICAgICAgICAgICAgICAgICBh c3Nfd3JpdGVfZmlsdGVyZWRfbGluZShvdXRidWZmZXIsIGJ1ZiwgbGVuLCBrZWVwX2ZsYWdzLCBB U1NfU1BMSVRfVEVYVF9CT1JERVIpOwogICAgICsrICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo c3NjYW5mKGJ1ZiwgIlxcc2hhZCUxW1xcfV0lbiIsIHNlcCwgJmxlbikgPiAwIHx8CiAgICAgKysg ICAgICAgICAgICAgICAgICAgICAgICAgICBzc2NhbmYoYnVmLCAiXFxzaGFkJXUlMVtcXH1dJW4i LCAmc2l6ZSwgc2VwLCAmbGVuKSA+IDEpIHsKICAgICArKyAgICAgICAgICAgICAgICAgICAgYXNz X3dyaXRlX2ZpbHRlcmVkX2xpbmUob3V0YnVmZmVyLCBidWYsIGxlbiwga2VlcF9mbGFncywgQVNT X1NQTElUX1RFWFRfU0hBRE9XKTsKICAgICArKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNz Y2FuZihidWYsICJcXGZyJTFbXFx9XSVuIiwgc2VwLCAmbGVuKSA+IDAgfHwKICAgICArKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNzY2FuZihidWYsICJcXGZyJXUlMVtcXH1dJW4iLCAmeDEs IHNlcCwgJmxlbikgPiAxIHx8CiAgICAgKysgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2Nh bmYoYnVmLCAiXFxmciUxW3h5el0lMVtcXH1dJW4iLCBheGlzLCBzZXAsICZsZW4pID4gMSB8fAog ICAgICsrICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NjYW5mKGJ1ZiwgIlxcZnIlMVt4eXpd JXUlMVtcXH1dJW4iLCBheGlzLCAmc2l6ZSwgc2VwLCAmbGVuKSA+IDIpIHsKICAgICArKyAgICAg ICAgICAgICAgICAgICAgYXNzX3dyaXRlX2ZpbHRlcmVkX2xpbmUob3V0YnVmZmVyLCBidWYsIGxl biwga2VlcF9mbGFncywgQVNTX1NQTElUX1RFWFRfUk9UQVRFKTsKICAgICArKyAgICAgICAgICAg ICAgICB9IGVsc2UgaWYgKHNzY2FuZihidWYsICJcXGJsdXIlMVtcXH1dJW4iLCBzZXAsICZsZW4p ID4gMCB8fAogICAgICsrICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NjYW5mKGJ1ZiwgIlxc Ymx1ciV1JTFbXFx9XSVuIiwgJnNpemUsIHNlcCwgJmxlbikgPiAxKSB7CiAgICAgKysgICAgICAg ICAgICAgICAgICAgIGFzc193cml0ZV9maWx0ZXJlZF9saW5lKG91dGJ1ZmZlciwgYnVmLCBsZW4s IGtlZXBfZmxhZ3MsIEFTU19TUExJVF9URVhUX0JMVVIpOwogICAgICsrICAgICAgICAgICAgICAg IH0gZWxzZSBpZiAoc3NjYW5mKGJ1ZiwgIlxcYmUlMVtcXH1dJW4iLCBzZXAsICZsZW4pID4gMCB8 fAogICAgICsrICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NjYW5mKGJ1ZiwgIlxcYmUldSUx W1xcfV0lbiIsICZzaXplLCBzZXAsICZsZW4pID4gMSkgewogICAgICsrICAgICAgICAgICAgICAg ICAgICBhc3Nfd3JpdGVfZmlsdGVyZWRfbGluZShvdXRidWZmZXIsIGJ1ZiwgbGVuLCBrZWVwX2Zs YWdzLCBBU1NfU1BMSVRfVEVYVF9CTFVSKTsKICAgICArKyAgICAgICAgICAgICAgICB9IGVsc2Ug aWYgKHNzY2FuZihidWYsICJcXHElMVtcXH1dJW4iLCBzZXAsICZsZW4pID4gMCB8fAogICAgICsr ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NjYW5mKGJ1ZiwgIlxccSV1JTFbXFx9XSVuIiwg JnNpemUsIHNlcCwgJmxlbikgPiAxKSB7CiAgICAgKysgICAgICAgICAgICAgICAgICAgIGFzc193 cml0ZV9maWx0ZXJlZF9saW5lKG91dGJ1ZmZlciwgYnVmLCBsZW4sIGtlZXBfZmxhZ3MsIEFTU19T UExJVF9URVhUX1dSQVApOwogICAgICsgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3NjYW5m KGJ1ZiwgIlxcYSUxW1xcfV0lbiIsIHNlcCwgJmxlbikgPiAwIHx8CiAgICAgKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzc2NhbmYoYnVmLCAiXFxhJTJ1JTFbXFx9XSVuIiwgJmFuLCBzZXAs ICZsZW4pID4gMSB8fAogICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NjYW5mKGJ1 ZiwgIlxcYW4lMVtcXH1dJW4iLCBzZXAsICZsZW4pID4gMCB8fAogICAgICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3NjYW5mKGJ1ZiwgIlxcYW4lMXUlMVtcXH1dJW4iLCAmYW4sIHNlcCwg JmxlbikgPiAxKSB7CiAgICAgKyAgICAgICAgICAgICAgICAgICAgIGlmIChhbiAhPSAtMSAmJiBi dWZbMl0gIT0gJ24nKQogICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgYW4gPSAoYW4mMykg KyAoYW4mNCA/IDYgOiBhbiY4ID8gMyA6IDApOwogICAgICsrICAgICAgICAgICAgICAgICAgICBh c3Nfd3JpdGVfZmlsdGVyZWRfbGluZShvdXRidWZmZXIsIGJ1ZiwgbGVuLCBrZWVwX2ZsYWdzLCBB U1NfU1BMSVRfVEVYVF9BTElHTk1FTlQpOwogICAgICsgICAgICAgICAgICAgICAgICAgICBpZiAo Y2FsbGJhY2tzLT5hbGlnbm1lbnQpCiAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICBjYWxs YmFja3MtPmFsaWdubWVudChwcml2LCBhbik7CiAgICAgKyAgICAgICAgICAgICAgICAgfSBlbHNl IGlmIChzc2NhbmYoYnVmLCAiXFxyJTFbXFx9XSVuIiwgc2VwLCAmbGVuKSA+IDAgfHwKICAgICAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzY2FuZihidWYsICJcXHIlMTI3W15cXH1dJTFb XFx9XSVuIiwgdG1wLCBzZXAsICZsZW4pID4gMSkgewogICAgICsrICAgICAgICAgICAgICAgICAg ICBhc3Nfd3JpdGVfZmlsdGVyZWRfbGluZShvdXRidWZmZXIsIGJ1ZiwgbGVuLCBrZWVwX2ZsYWdz LCBBU1NfU1BMSVRfQ0FOQ0VMTElORyk7CiAgICAgKyAgICAgICAgICAgICAgICAgICAgIGlmIChj YWxsYmFja3MtPmNhbmNlbF9vdmVycmlkZXMpCiAgICAgKyAgICAgICAgICAgICAgICAgICAgICAg ICBjYWxsYmFja3MtPmNhbmNlbF9vdmVycmlkZXMocHJpdiwgdG1wKTsKICAgICArICAgICAgICAg ICAgICAgICB9IGVsc2UgaWYgKHNzY2FuZihidWYsICJcXG1vdmUoJWQsJWQsJWQsJWQpJTFbXFx9 XSVuIiwgJngxLCAmeTEsICZ4MiwgJnkyLCBzZXAsICZsZW4pID4gNCB8fAogICAgICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3NjYW5mKGJ1ZiwgIlxcbW92ZSglZCwlZCwlZCwlZCwlZCwl ZCklMVtcXH1dJW4iLCAmeDEsICZ5MSwgJngyLCAmeTIsICZ0MSwgJnQyLCBzZXAsICZsZW4pID4g NikgewogICAgICsrICAgICAgICAgICAgICAgICAgICBhc3Nfd3JpdGVfZmlsdGVyZWRfbGluZShv dXRidWZmZXIsIGJ1ZiwgbGVuLCBrZWVwX2ZsYWdzLCBBU1NfU1BMSVRfTU9WRSk7CiAgICAgKyAg ICAgICAgICAgICAgICAgICAgIGlmIChjYWxsYmFja3MtPm1vdmUpCiAgICAgKyAgICAgICAgICAg ICAgICAgICAgICAgICBjYWxsYmFja3MtPm1vdmUocHJpdiwgeDEsIHkxLCB4MiwgeTIsIHQxLCB0 Mik7CiAgICAgKyAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzc2NhbmYoYnVmLCAiXFxwb3Mo JWQsJWQpJTFbXFx9XSVuIiwgJngxLCAmeTEsIHNlcCwgJmxlbikgPiAyKSB7CiAgICAgKysgICAg ICAgICAgICAgICAgICAgIGFzc193cml0ZV9maWx0ZXJlZF9saW5lKG91dGJ1ZmZlciwgYnVmLCBs ZW4sIGtlZXBfZmxhZ3MsIEFTU19TUExJVF9QT1MpOwogICAgICsgICAgICAgICAgICAgICAgICAg ICBpZiAoY2FsbGJhY2tzLT5tb3ZlKQogICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgY2Fs bGJhY2tzLT5tb3ZlKHByaXYsIHgxLCB5MSwgeDEsIHkxLCAtMSwgLTEpOwogICAgICAgICAgICAg ICAgICAgICAgIH0gZWxzZSBpZiAoc3NjYW5mKGJ1ZiwgIlxcb3JnKCVkLCVkKSUxW1xcfV0lbiIs ICZ4MSwgJnkxLCBzZXAsICZsZW4pID4gMikgewogICAgICsrICAgICAgICAgICAgICAgICAgICBh c3Nfd3JpdGVfZmlsdGVyZWRfbGluZShvdXRidWZmZXIsIGJ1ZiwgbGVuLCBrZWVwX2ZsYWdzLCBB U1NfU1BMSVRfT1JJR0lOKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNr cy0+b3JpZ2luKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzLT5vcmln aW4ocHJpdiwgeDEsIHkxKTsKICAgICAtKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNzY2Fu ZihidWYsICJcXHQoJWQsJWQsJTFbXFx9XSVuIiwgJnQxLCAmdDIsIHNlcCwgJmxlbikgPiAyIHx8 CiAgICAgKysgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzc2NhbmYoYnVmLCAiXFx0KCUxW1xc fV0lbiIsIHNlcCwgJmxlbikgPiAwIHx8CiAgICAgKysgICAgICAgICAgICAgICAgICAgICAgICAg ICBzc2NhbmYoYnVmLCAiXFx0KCVkLCVkLCUxW1xcfV0lbiIsICZ0MSwgJnQyLCBzZXAsICZsZW4p ID4gMiB8fAogICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NjYW5mKGJ1ZiwgIlxc dCglZCwlZCwlZCwlMVtcXH1dJW4iLCAmdDEsICZ0MiwgJmFjY2VsLCBzZXAsICZsZW4pID4gMykg ewogICAgICsrCiAgICAgKysgICAgICAgICAgICAgICAgICAgIGxlbiA9IHN0cmNzcG4oYnVmLCAi KSIpICsgMjsKICAgICArKwogICAgICsrICAgICAgICAgICAgICAgICAgICBhc3Nfd3JpdGVfZmls dGVyZWRfbGluZShvdXRidWZmZXIsIGJ1ZiwgbGVuLCBrZWVwX2ZsYWdzLCBBU1NfU1BMSVRfQU5J TUFURSk7CiAgICAgICsgICAgICAgICAgICAgICAgICAgIGlmIChjYWxsYmFja3MtPmFuaW1hdGUp CiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3MtPmFuaW1hdGUocHJpdiwg dDEsIHQyLCBhY2NlbCwgdG1wKTsKICAgICArKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNz Y2FuZihidWYsICJcXGZhZGUoJWQsJWQsJWQsJWQsJWQsJWQsJWQpJTFbXFx9XSVuIiwgJngxLCAm eDIsICZ4MywgJnQxLCAmdDIsICZ0MywgJnQ0LCBzZXAsICZsZW4pID4gNykgewogICAgICsrICAg ICAgICAgICAgICAgICAgICBhc3Nfd3JpdGVfZmlsdGVyZWRfbGluZShvdXRidWZmZXIsIGJ1Ziwg bGVuLCBrZWVwX2ZsYWdzLCBBU1NfU1BMSVRfRkFERSk7CiAgICAgKysgICAgICAgICAgICAgICAg fSBlbHNlIGlmIChzc2NhbmYoYnVmLCAiXFxmYWQoJWQsJWQpJTFbXFx9XSVuIiwgJnQxLCAmdDIs IHNlcCwgJmxlbikgPiAyKSB7CiAgICAgKysgICAgICAgICAgICAgICAgICAgIGFzc193cml0ZV9m aWx0ZXJlZF9saW5lKG91dGJ1ZmZlciwgYnVmLCBsZW4sIGtlZXBfZmxhZ3MsIEFTU19TUExJVF9G QURFKTsKICAgICArKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNzY2FuZihidWYsICJcXGNs aXAoJWQsJWQsJWQsJWQpJTFbXFx9XSVuIiwgJngxLCAmeTEsICZ4MiwgJnkyLCBzZXAsICZsZW4p ID4gNCkgewogICAgICsrICAgICAgICAgICAgICAgICAgICBhc3Nfd3JpdGVfZmlsdGVyZWRfbGlu ZShvdXRidWZmZXIsIGJ1ZiwgbGVuLCBrZWVwX2ZsYWdzLCBBU1NfU1BMSVRfQ0xJUCk7CiAgICAg ICsgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzc2NhbmYoYnVmLCAiXFxwJTFbXFx9XSVuIiwg c2VwLCAmbGVuKSA+IDAgfHwKICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzY2Fu ZihidWYsICJcXHAldSUxW1xcfV0lbiIsICZzY2FsZSwgc2VwLCAmbGVuKSA+IDEpIHsKICAgICAr KyAgICAgICAgICAgICAgICAgICAgYXNzX3dyaXRlX2ZpbHRlcmVkX2xpbmUob3V0YnVmZmVyLCBi dWYsIGxlbiwga2VlcF9mbGFncywgQVNTX1NQTElUX0RSQVcpOwogICAgICArICAgICAgICAgICAg ICAgICAgICBpZiAoY2FsbGJhY2tzLT5kcmF3aW5nX21vZGUpCiAgICAgICsgICAgICAgICAgICAg ICAgICAgICAgICBjYWxsYmFja3MtPmRyYXdpbmdfbW9kZShwcml2LCBzY2FsZSk7CiAgICAgICAg ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAtICAgICAgICAgICAgICAgICAgICAgbGVuID0g c3RyY3NwbihidWYrMSwgIlxcfSIpICsgMjsgIC8qIHNraXAgdW5rbm93biBjb2RlICovCiAgICAg LSAgICAgICAgICAgICAgICAgfQogICAgICstICAgICAgICAgICAgICAgICAgICBsZW4gPSBzdHJj c3BuKGJ1ZisxLCAiXFx9IikgKyAyOyAgLyogc2tpcCB1bmtub3duIGNvZGUgKi8KICAgICArLSAg ICAgICAgICAgICAgICB9CiAgICAgKysgICAgICAgICAgICAgICAgICAgIGxlbiA9IHN0cmNzcG4o YnVmKzEsICJcXH0iKSArIDI7ICAvKiB1bmtub3duIGNvZGUgKi8KICAgICArKyAgICAgICAgICAg ICAgICAgICAgYXNzX3dyaXRlX2ZpbHRlcmVkX2xpbmUob3V0YnVmZmVyLCBidWYsIGxlbiwga2Vl cF9mbGFncywgQVNTX1NQTElUX1VOS05PV04pOwogICAgICsrICAgICAgICAgICAgIH0KICAgICAr ICAgICAgICAgICAgICAgICBidWYgKz0gbGVuIC0gMTsKICAgICArICAgICAgICAgICAgIH0KICAg ICArICAgICAgICAgICAgIGlmICgqYnVmKysgIT0gJ30nKQogICAgICsgICAgICAgICAgICAgICAg IHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwogICAgICstICAgICAgICB9IGVsc2UgewogICAg ICsrCiAgICAgKysgICAgICAgICAgICBhc3Nfd3JpdGVfZmlsdGVyZWRfbGluZShvdXRidWZmZXIs ICJ9IiwgMiwga2VlcF9mbGFncywgQVNTX1NQTElUX0FOWSk7CiAgICAgKysgICAgIH0gZWxzZSB7 CiAgICAgKyAgICAgICAgICAgICBpZiAoIXRleHQpIHsKICAgICArICAgICAgICAgICAgICAgICB0 ZXh0ID0gYnVmOwogICAgICsgICAgICAgICAgICAgICAgIHRleHRfbGVuID0gMTsKICAgICAgQEAg bGliYXZ1dGlsL2Fzc19zcGxpdC5jOiBpbnQgZmZfYXNzX3NwbGl0X292ZXJyaWRlX2NvZGVzKGNv bnN0IEFTU0NvZGVzQ2FsbGJhY2tzICpjYWxsYmFja3MsIHZvaWQgKnByaXYsCiAgICAgLSAgICAg cmV0dXJuIDA7CiAgICAgKyAgICAgICAgICAgICBidWYrKzsKICAgICArICAgICAgICAgfQogICAg ICsgICAgIH0KICAgICArKyAgICBpZiAodGV4dCkKICAgICArKyAgICAgICAgYXNzX3dyaXRlX2Zp bHRlcmVkX2xpbmUob3V0YnVmZmVyLCB0ZXh0LCB0ZXh0X2xlbiArIDEsIGtlZXBfZmxhZ3MsIEFT U19TUExJVF9URVhUIHwgQVNTX1NQTElUX1RFWFQyKTsKICAgICArICAgICBpZiAodGV4dCAmJiBj YWxsYmFja3MtPnRleHQpCiAgICAgKyAgICAgICAgIGNhbGxiYWNrcy0+dGV4dChwcml2LCB0ZXh0 LCB0ZXh0X2xlbik7CiAgICAgKyAgICAgaWYgKGNhbGxiYWNrcy0+ZW5kKQogICAgICsgICAgICAg ICBjYWxsYmFja3MtPmVuZChwcml2KTsKICAgICArLSAgICByZXR1cm4gMDsKICAgICArKwogICAg ICsrICAgIGlmIChvdXRidWZmZXIpCiAgICAgKysgICAgICAgIHJldCA9IGFzc19yZW1vdmVfZW1w dHlfYnJhY2VzKG91dGJ1ZmZlcik7CiAgICAgKysKICAgICArKyAgICByZXR1cm4gcmV0OwogICAg ICsrfQogICAgICsrCiAgICAgKysKICAgICArK2ludCBhdnByaXZfYXNzX3NwbGl0X292ZXJyaWRl X2NvZGVzKGNvbnN0IEFTU0NvZGVzQ2FsbGJhY2tzICpjYWxsYmFja3MsIHZvaWQgKnByaXYsCiAg ICAgKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZikKICAg ICArK3sKICAgICArKyAgICByZXR1cm4gYXZwcml2X2Fzc19maWx0ZXJfb3ZlcnJpZGVfY29kZXMo Y2FsbGJhY2tzLCBwcml2LCBidWYsIE5VTEwsIDApOwogICAgICAgfQogICAgICAgCiAgICAgIC1B U1NTdHlsZSAqZmZfYXNzX3N0eWxlX2dldChBU1NTcGxpdENvbnRleHQgKmN0eCwgY29uc3QgY2hh ciAqc3R5bGUpCiAgICAgQEAgbGliYXZ1dGlsL2Fzc19zcGxpdC5jOiBpbnQgZmZfYXNzX3NwbGl0 X292ZXJyaWRlX2NvZGVzKGNvbnN0IEFTU0NvZGVzQ2FsbGJhY2tzICoKICAgICAgICAgICBBU1Mg KmFzcyA9ICZjdHgtPmFzczsKICAgICAgICAgICBpbnQgaTsKICAgICAgCiAgICAgLSAjIyBsaWJh dmNvZGVjL2Fzc19zcGxpdC5oID0+IGxpYmF2dXRpbC9hc3Nfc3BsaXRfaW50ZXJuYWwuaCAjIwog ICAgICsgIyMgbGliYXZ1dGlsL2Fzc19zcGxpdF9pbnRlcm5hbC5oIChuZXcpICMjCiAgICAgIEBA CiAgICAgLSAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs b29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCiAgICAgLSAgKi8KICAgICAtIAogICAgIC0t I2lmbmRlZiBBVkNPREVDX0FTU19TUExJVF9ICiAgICAgLS0jZGVmaW5lIEFWQ09ERUNfQVNTX1NQ TElUX0gKICAgICArKy8qCiAgICAgKysgKiBTU0EvQVNTIHNwbGl0aW5nIGZ1bmN0aW9ucwogICAg ICsrICogQ29weXJpZ2h0IChjKSAyMDEwICBBdXJlbGllbiBKYWNvYnMgPGF1cmVsQGdudWFnZS5v cmc+CiAgICAgKysgKgogICAgICsrICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgogICAg ICsrICoKICAgICArKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IKICAgICArKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAgICArKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogICAgICsrICogdmVyc2lv biAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCiAgICAgKysgKgogICAgICsrICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICAgKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgICsrICogTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH TlUKICAgICArKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCiAgICAgKysgKgogICAgICsrICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogICAgICsrICogTGljZW5zZSBhbG9uZyB3 aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogICAgICsrICog Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u LCBNQSAwMjExMC0xMzAxIFVTQQogICAgICsrICovCiAgICAgKysKICAgICAgKyNpZm5kZWYgQVZV VElMX0FTU19TUExJVF9JTlRFUk5BTF9ICiAgICAgICsjZGVmaW5lIEFWVVRJTF9BU1NfU1BMSVRf SU5URVJOQUxfSAogICAgIC0gCiAgICAgLSAvKioKICAgICAtICAqIGZpZWxkcyBleHRyYWN0ZWQg ZnJvbSB0aGUgW1NjcmlwdCBJbmZvXSBzZWN0aW9uCiAgICAgLUBAIGxpYmF2dXRpbC9hc3Nfc3Bs aXRfaW50ZXJuYWwuaDogdHlwZWRlZiBzdHJ1Y3QgewogICAgIC0gICAgIGNoYXIgKmVmZmVjdDsK ICAgICAtICAgICBjaGFyICp0ZXh0OyAgICAgLyoqPCBhY3R1YWwgdGV4dCB3aGljaCB3aWxsIGJl IGRpc3BsYXllZCBhcyBhIHN1YnRpdGxlLAogICAgIC0gICAgICAgICAgICAgICAgICAgICAgICAg IGNhbiBpbmNsdWRlIHN0eWxlIG92ZXJyaWRlIGNvbnRyb2wgY29kZXMgKHNlZQogICAgIC0tICAg ICAgICAgICAgICAgICAgICAgICAgIGZmX2Fzc19zcGxpdF9vdmVycmlkZV9jb2RlcygpKSAqLwog ICAgIC0rICAgICAgICAgICAgICAgICAgICAgICAgIGF2cHJpdl9hc3Nfc3BsaXRfb3ZlcnJpZGVf Y29kZXMoKSkgKi8KICAgICAtIH0gQVNTRGlhbG9nOwogICAgIC0gCiAgICAgLSAvKioKICAgICAt QEAgbGliYXZ1dGlsL2Fzc19zcGxpdF9pbnRlcm5hbC5oOiB0eXBlZGVmIHN0cnVjdCBBU1NTcGxp dENvbnRleHQgQVNTU3BsaXRDb250ZXh0OwogICAgIC0gICogQHBhcmFtIGJ1ZiBTdHJpbmcgY29u dGFpbmluZyB0aGUgQVNTIGZvcm1hdHRlZCBkYXRhLgogICAgIC0gICogQHJldHVybiBOZXdseSBh bGxvY2F0ZWQgc3RydWN0IGNvbnRhaW5pbmcgc3BsaXQgZGF0YS4KICAgICAtICAqLwogICAgIC0t QVNTU3BsaXRDb250ZXh0ICpmZl9hc3Nfc3BsaXQoY29uc3QgY2hhciAqYnVmKTsKICAgICArKwog ICAgICsrI2luY2x1ZGUgImJwcmludC5oIgogICAgICsrCiAgICAgKytlbnVtIEFTU1NwbGl0Q29t cG9uZW50cwogICAgICsrewogICAgICsrICAgIEFTU19TUExJVF9BTlkgPSAwLAogICAgICsrICAg IEFTU19TUExJVF9URVhUICAgICAgICAgICA9ICgxIDw8IDApLAogICAgICsrICAgIEFTU19TUExJ VF9URVhUMiAgICAgICAgICA9ICgxIDw8IDEpLCAvLyBTYW1lIHNlbWFudGljcyBhcyBBU1NfU1BM SVRfVEVYVC4gVG8gd29yayBhcm91bmQgaGVscCBvdXRwdXQgZGVmYXVsdCBkaXNwbGF5LgogICAg ICsrICAgIEFTU19TUExJVF9DT0xPUiAgICAgICAgICA9ICgxIDw8IDIpLAogICAgICsrICAgIEFT U19TUExJVF9BTFBIQSAgICAgICAgICA9ICgxIDw8IDMpLAogICAgICsrICAgIEFTU19TUExJVF9G T05UX05BTUUgICAgICA9ICgxIDw8IDQpLAogICAgICsrICAgIEFTU19TUExJVF9GT05UX1NJWkUg ICAgICA9ICgxIDw8IDUpLAogICAgICsrICAgIEFTU19TUExJVF9GT05UX1NDQUxFICAgICA9ICgx IDw8IDYpLAogICAgICsrICAgIEFTU19TUExJVF9GT05UX1NQQUNJTkcgICA9ICgxIDw8IDcpLAog ICAgICsrICAgIEFTU19TUExJVF9GT05UX0NIQVJTRVQgICA9ICgxIDw8IDgpLAogICAgICsrICAg IEFTU19TUExJVF9GT05UX0JPTEQgICAgICA9ICgxIDw8IDkpLAogICAgICsrICAgIEFTU19TUExJ VF9GT05UX0lUQUxJQyAgICA9ICgxIDw8IDEwKSwKICAgICArKyAgICBBU1NfU1BMSVRfRk9OVF9V TkRFUkxJTkUgPSAoMSA8PCAxMSksCiAgICAgKysgICAgQVNTX1NQTElUX0ZPTlRfU1RSSUtFT1VU ID0gKDEgPDwgMTIpLAogICAgICsrICAgIEFTU19TUExJVF9URVhUX0JPUkRFUiAgICA9ICgxIDw8 IDEzKSwKICAgICArKyAgICBBU1NfU1BMSVRfVEVYVF9TSEFET1cgICAgPSAoMSA8PCAxNCksCiAg ICAgKysgICAgQVNTX1NQTElUX1RFWFRfUk9UQVRFICAgID0gKDEgPDwgMTUpLAogICAgICsrICAg IEFTU19TUExJVF9URVhUX0JMVVIgICAgICA9ICgxIDw8IDE2KSwKICAgICArKyAgICBBU1NfU1BM SVRfVEVYVF9XUkFQICAgICAgPSAoMSA8PCAxNyksCiAgICAgKysgICAgQVNTX1NQTElUX1RFWFRf QUxJR05NRU5UID0gKDEgPDwgMTgpLAogICAgICsrICAgIEFTU19TUExJVF9DQU5DRUxMSU5HICAg ICA9ICgxIDw8IDE5KSwKICAgICArKyAgICBBU1NfU1BMSVRfTU9WRSAgICAgICAgICAgPSAoMSA8 PCAyMCksCiAgICAgKysgICAgQVNTX1NQTElUX1BPUyAgICAgICAgICAgID0gKDEgPDwgMjEpLAog ICAgICsrICAgIEFTU19TUExJVF9PUklHSU4gICAgICAgICA9ICgxIDw8IDIyKSwKICAgICArKyAg ICBBU1NfU1BMSVRfRFJBVyAgICAgICAgICAgPSAoMSA8PCAyMyksCiAgICAgKysgICAgQVNTX1NQ TElUX0FOSU1BVEUgICAgICAgID0gKDEgPDwgMjQpLAogICAgICsrICAgIEFTU19TUExJVF9GQURF ICAgICAgICAgICA9ICgxIDw8IDI1KSwKICAgICArKyAgICBBU1NfU1BMSVRfQ0xJUCAgICAgICAg ICAgPSAoMSA8PCAyNiksCiAgICAgKysgICAgQVNTX1NQTElUX1VOS05PV04gICAgICAgID0gKDEg PDwgMjcpLAogICAgICsrCiAgICAgKysgICAgQVNTX1NQTElUX0JBU0lDID0gIEFTU19TUExJVF9U RVhUMiB8IEFTU19TUExJVF9DT0xPUiB8IEFTU19TUExJVF9BTFBIQSB8IEFTU19TUExJVF9GT05U X05BTUUgfCBBU1NfU1BMSVRfRk9OVF9TSVpFIHwgQVNTX1NQTElUX0ZPTlRfU0NBTEUgfCBBU1Nf U1BMSVRfRk9OVF9TUEFDSU5HIHwgQVNTX1NQTElUX0ZPTlRfQ0hBUlNFVCB8IEFTU19TUExJVF9G T05UX0JPTEQgfCBBU1NfU1BMSVRfRk9OVF9JVEFMSUMgfCBBU1NfU1BMSVRfRk9OVF9VTkRFUkxJ TkUgfCBBU1NfU1BMSVRfRk9OVF9TVFJJS0VPVVQgfCBBU1NfU1BMSVRfVEVYVF9CT1JERVIgfCBB U1NfU1BMSVRfVEVYVF9TSEFET1cgfCBBU1NfU1BMSVRfVEVYVF9XUkFQIHwgQVNTX1NQTElUX1RF WFRfQUxJR05NRU5UIHwgQVNTX1NQTElUX1BPUyB8IEFTU19TUExJVF9DQU5DRUxMSU5HLAogICAg ICsrICAgIEFTU19TUExJVF9BTExfS05PV04gPSAgQVNTX1NQTElUX1RFWFQyIHwgQVNTX1NQTElU X0NPTE9SIHwgQVNTX1NQTElUX0FMUEhBIHwgQVNTX1NQTElUX0ZPTlRfTkFNRSB8IEFTU19TUExJ VF9GT05UX1NJWkUgfCBBU1NfU1BMSVRfRk9OVF9TQ0FMRSB8IEFTU19TUExJVF9GT05UX1NQQUNJ TkcgfCBBU1NfU1BMSVRfRk9OVF9DSEFSU0VUIHwgQVNTX1NQTElUX0ZPTlRfQk9MRCB8IEFTU19T UExJVF9GT05UX0lUQUxJQyB8IEFTU19TUExJVF9GT05UX1VOREVSTElORSB8IEFTU19TUExJVF9G T05UX1NUUklLRU9VVCB8IEFTU19TUExJVF9URVhUX0JPUkRFUiB8IEFTU19TUExJVF9URVhUX1NI QURPVyB8IEFTU19TUExJVF9URVhUX1JPVEFURSB8IEFTU19TUExJVF9URVhUX0JMVVIgfCBBU1Nf U1BMSVRfVEVYVF9XUkFQIHwgQVNTX1NQTElUX1RFWFRfQUxJR05NRU5UIHwgQVNTX1NQTElUX0NB TkNFTExJTkcgfCBBU1NfU1BMSVRfUE9TIHwgQVNTX1NQTElUX01PVkUgfCBBU1NfU1BMSVRfT1JJ R0lOIHwgQVNTX1NQTElUX0RSQVcgfCBBU1NfU1BMSVRfQU5JTUFURSB8IEFTU19TUExJVF9GQURF IHwgQVNTX1NQTElUX0NMSVAsCiAgICAgKyt9OwogICAgICsrCiAgICAgKysgICAgLyoqCiAgICAg KysgICAgICogZmllbGRzIGV4dHJhY3RlZCBmcm9tIHRoZSBbU2NyaXB0IEluZm9dIHNlY3Rpb24K ICAgICArKyAgICAgKi8KICAgICArKyAgICB0eXBlZGVmIHN0cnVjdCB7CiAgICAgKysgICAgICBj aGFyICpzY3JpcHRfdHlwZTsgLyoqPCBTU0Egc2NyaXB0IGZvcm1hdCB2ZXJzaW9uIChlZy4gdjQu MDApICovCiAgICAgKysgIGNoYXIgKmNvbGxpc2lvbnM7ICAvKio8IGhvdyBzdWJ0aXRsZXMgYXJl IG1vdmVkIHRvIHByZXZlbnQgY29sbGlzaW9ucyAqLwogICAgICsrICBpbnQgcGxheV9yZXNfeDsg ICAgLyoqPCB2aWRlbyB3aWR0aCB0aGF0IEFTUyBjb29yZHMgYXJlIHJlZmVycmluZyB0byAqLwog ICAgICsrICBpbnQgcGxheV9yZXNfeTsgICAgLyoqPCB2aWRlbyBoZWlnaHQgdGhhdCBBU1MgY29v cmRzIGFyZSByZWZlcnJpbmcgdG8gKi8KICAgICArKyAgZmxvYXQgdGltZXI7ICAgICAgIC8qKjwg dGltZSBtdWx0aXBsaWVyIHRvIGFwcGx5IHRvIFNTQSBjbG9jayAoaW4gJSkgKi8KICAgICArK30g QVNTU2NyaXB0SW5mbzsKICAgICArKwogICAgICsrLyoqCiAgICAgKysgKiBmaWVsZHMgZXh0cmFj dGVkIGZyb20gdGhlIFtWNCgrKSBTdHlsZXNdIHNlY3Rpb24KICAgICArKyAqLwogICAgICsrdHlw ZWRlZiBzdHJ1Y3QgewogICAgICsrICBjaGFyICpuYW1lOyAgICAgICAgLyoqPCBuYW1lIG9mIHRo ZSB0eWxlIChjYXNlIHNlbnNpdGl2ZSkgKi8KICAgICArKyAgY2hhciAqZm9udF9uYW1lOyAgIC8q KjwgZm9udCBmYWNlIChjYXNlIHNlbnNpdGl2ZSkgKi8KICAgICArKyAgaW50IGZvbnRfc2l6ZTsg ICAgIC8qKjwgZm9udCBoZWlnaHQgKi8KICAgICArKyAgaW50IHByaW1hcnlfY29sb3I7IC8qKjwg Y29sb3IgdGhhdCBhIHN1YnRpdGxlIHdpbGwgbm9ybWFsbHkgYXBwZWFyIGluICovCiAgICAgKysg IGludCBzZWNvbmRhcnlfY29sb3I7CiAgICAgKysgIGludCBvdXRsaW5lX2NvbG9yOyAvKio8IGNv bG9yIGZvciBvdXRsaW5lIGluIEFTUywgY2FsbGVkIHRlcnRpYXJ5IGluIFNTQSAqLwogICAgICsr ICBpbnQgYmFja19jb2xvcjsgICAgLyoqPCBjb2xvciBvZiB0aGUgc3VidGl0bGUgb3V0bGluZSBv ciBzaGFkb3cgKi8KICAgICArKyAgaW50IGJvbGQ7ICAgICAgICAgIC8qKjwgd2hldGhlciB0ZXh0 IGlzIGJvbGQgKDEpIG9yIG5vdCAoMCkgKi8KICAgICArKyAgaW50IGl0YWxpYzsgICAgICAgIC8q Kjwgd2hldGhlciB0ZXh0IGlzIGl0YWxpYyAoMSkgb3Igbm90ICgwKSAqLwogICAgICsrICBpbnQg dW5kZXJsaW5lOyAgICAgLyoqPCB3aGV0aGVyIHRleHQgaXMgdW5kZXJsaW5lZCAoMSkgb3Igbm90 ICgwKSAqLwogICAgICsrICBpbnQgc3RyaWtlb3V0OwogICAgICsrICBmbG9hdCBzY2FsZXg7CiAg ICAgKysgIGZsb2F0IHNjYWxleTsKICAgICArKyAgZmxvYXQgc3BhY2luZzsKICAgICArKyAgZmxv YXQgYW5nbGU7CiAgICAgKysgIGludCBib3JkZXJfc3R5bGU7CiAgICAgKysgIGZsb2F0IG91dGxp bmU7CiAgICAgKysgIGZsb2F0IHNoYWRvdzsKICAgICArKyAgaW50IGFsaWdubWVudDsgLyoqPCBw b3NpdGlvbiBvZiB0aGUgdGV4dCAobGVmdCwgY2VudGVyLCB0b3AuLi4pLAogICAgICsrICAgICAg ICAgICAgICAgICAgICAgIGRlZmluZWQgYWZ0ZXIgdGhlIGxheW91dCBvZiB0aGUgbnVtcGFkCiAg ICAgKysgICAgICAgICAgICAgICAgICAgICAgKDEtMyBzdWIsIDQtNiBtaWQsIDctOSB0b3ApICov CiAgICAgKysgIGludCBtYXJnaW5fbDsKICAgICArKyAgaW50IG1hcmdpbl9yOwogICAgICsrICBp bnQgbWFyZ2luX3Y7CiAgICAgKysgIGludCBhbHBoYV9sZXZlbDsKICAgICArKyAgaW50IGVuY29k aW5nOwogICAgICsrfSBBU1NTdHlsZTsKICAgICArKwogICAgICsrLyoqCiAgICAgKysgKiBmaWVs ZHMgZXh0cmFjdGVkIGZyb20gdGhlIFtFdmVudHNdIHNlY3Rpb24KICAgICArKyAqLwogICAgICsr dHlwZWRlZiBzdHJ1Y3QgewogICAgICsrICBpbnQgcmVhZG9yZGVyOwogICAgICsrICBpbnQgbGF5 ZXI7ICAgLyoqPCBoaWdoZXIgbnVtYmVyZWQgbGF5ZXJzIGFyZSBkcmF3biBvdmVyIGxvd2VyIG51 bWJlcmVkICovCiAgICAgKysgIGludCBzdGFydDsgICAvKio8IHN0YXJ0IHRpbWUgb2YgdGhlIGRp YWxvZyBpbiBjZW50aXNlY29uZHMgKi8KICAgICArKyAgaW50IGVuZDsgICAgIC8qKjwgZW5kIHRp bWUgb2YgdGhlIGRpYWxvZyBpbiBjZW50aXNlY29uZHMgKi8KICAgICArKyAgY2hhciAqc3R5bGU7 IC8qKjwgbmFtZSBvZiB0aGUgQVNTU3R5bGUgdG8gdXNlIHdpdGggdGhpcyBkaWFsb2cgKi8KICAg ICArKyAgY2hhciAqbmFtZTsKICAgICArKyAgaW50IG1hcmdpbl9sOwogICAgICsrICBpbnQgbWFy Z2luX3I7CiAgICAgKysgIGludCBtYXJnaW5fdjsKICAgICArKyAgY2hhciAqZWZmZWN0OwogICAg ICsrICBjaGFyICp0ZXh0OyAvKio8IGFjdHVhbCB0ZXh0IHdoaWNoIHdpbGwgYmUgZGlzcGxheWVk IGFzIGEgc3VidGl0bGUsCiAgICAgKysgICAgICAgICAgICAgICAgICAgY2FuIGluY2x1ZGUgc3R5 bGUgb3ZlcnJpZGUgY29udHJvbCBjb2RlcyAoc2VlCiAgICAgKysgICAgICAgICAgICAgICAgICAg YXZwcml2X2Fzc19zcGxpdF9vdmVycmlkZV9jb2RlcygpKSAqLwogICAgICsrfSBBU1NEaWFsb2c7 CiAgICAgKysKICAgICArKy8qKgogICAgICsrICogc3RydWN0dXJlIGNvbnRhaW5pbmcgdGhlIHdo b2xlIHNwbGl0IEFTUyBkYXRhCiAgICAgKysgKi8KICAgICArK3R5cGVkZWYgc3RydWN0IHsKICAg ICArKyAgQVNTU2NyaXB0SW5mbyBzY3JpcHRfaW5mbzsgLyoqPCBnZW5lcmFsIGluZm9ybWF0aW9u IGFib3V0IHRoZSBTU0Egc2NyaXB0Ki8KICAgICArKyAgQVNTU3R5bGUgKnN0eWxlczsgICAgICAg ICAgLyoqPCBhcnJheSBvZiBzcGxpdCBvdXQgc3R5bGVzICovCiAgICAgKysgIGludCBzdHlsZXNf Y291bnQ7ICAgICAgICAgIC8qKjwgbnVtYmVyIG9mIEFTU1N0eWxlIGluIHRoZSBzdHlsZXMgYXJy YXkgKi8KICAgICArKyAgQVNTRGlhbG9nICpkaWFsb2dzOyAgICAgICAgLyoqPCBhcnJheSBvZiBz cGxpdCBvdXQgZGlhbG9ncyAqLwogICAgICsrICBpbnQgZGlhbG9nc19jb3VudDsgICAgICAgICAv Kio8IG51bWJlciBvZiBBU1NEaWFsb2cgaW4gdGhlIGRpYWxvZ3MgYXJyYXkqLwogICAgICsrfSBB U1M7CiAgICAgKysKICAgICArKy8qKgogICAgICsrICogVGhpcyBzdHJ1Y3QgY2FuIGJlIGNhc3Rl ZCB0byBBU1MgdG8gYWNjZXNzIHRvIHRoZSBzcGxpdCBkYXRhLgogICAgICsrICovCiAgICAgKyt0 eXBlZGVmIHN0cnVjdCBBU1NTcGxpdENvbnRleHQgQVNTU3BsaXRDb250ZXh0OwogICAgICsrCiAg ICAgKysvKioKICAgICArKyAqIFNwbGl0IGEgZnVsbCBBU1MgZmlsZSBvciBhIEFTUyBoZWFkZXIg ZnJvbSBhIHN0cmluZyBidWZmZXIgYW5kIHN0b3JlCiAgICAgKysgKiB0aGUgc3BsaXQgc3RydWN0 dXJlIGluIGEgbmV3bHkgYWxsb2NhdGVkIGNvbnRleHQuCiAgICAgKysgKgogICAgICsrICogQHBh cmFtIGJ1ZiBTdHJpbmcgY29udGFpbmluZyB0aGUgQVNTIGZvcm1hdHRlZCBkYXRhLgogICAgICsr ICogQHJldHVybiBOZXdseSBhbGxvY2F0ZWQgc3RydWN0IGNvbnRhaW5pbmcgc3BsaXQgZGF0YS4K ICAgICArKyAqLwogICAgICArQVNTU3BsaXRDb250ZXh0ICphdnByaXZfYXNzX3NwbGl0KGNvbnN0 IGNoYXIgKmJ1Zik7CiAgICAgLSAKICAgICAtIC8qKgogICAgIC0tICogRnJlZSBhIGRpYWxvZ3Vl IG9idGFpbmVkIGZyb20gZmZfYXNzX3NwbGl0X2RpYWxvZygpLgogICAgICsrCiAgICAgKysvKioK ICAgICAgKyAqIEZyZWUgYSBkaWFsb2d1ZSBvYnRhaW5lZCBmcm9tIGF2cHJpdl9hc3Nfc3BsaXRf ZGlhbG9nKCkuCiAgICAgLSAgKi8KICAgICAtLXZvaWQgZmZfYXNzX2ZyZWVfZGlhbG9nKEFTU0Rp YWxvZyAqKmRpYWxvZ3ApOwogICAgICsrICovCiAgICAgICt2b2lkIGF2cHJpdl9hc3NfZnJlZV9k aWFsb2coQVNTRGlhbG9nICoqZGlhbG9ncCk7CiAgICAgLSAKICAgICAtIC8qKgogICAgIC0gICog U3BsaXQgb25lIEFTUyBEaWFsb2d1ZSBsaW5lIGZyb20gYSBzdHJpbmcgYnVmZmVyLgogICAgIC1A QCBsaWJhdnV0aWwvYXNzX3NwbGl0X2ludGVybmFsLmg6IHZvaWQgZmZfYXNzX2ZyZWVfZGlhbG9n KEFTU0RpYWxvZyAqKmRpYWxvZ3ApOwogICAgIC0gICogQHBhcmFtIGJ1ZiBTdHJpbmcgY29udGFp bmluZyB0aGUgQVNTICJEaWFsb2d1ZSIgbGluZS4KICAgICAtICAqIEByZXR1cm4gUG9pbnRlciB0 byB0aGUgc3BsaXQgQVNTRGlhbG9nLiBNdXN0IGJlIGZyZWVkIHdpdGggZmZfYXNzX2ZyZWVfZGlh bG9nKCkKICAgICAtICAqLwogICAgIC0tQVNTRGlhbG9nICpmZl9hc3Nfc3BsaXRfZGlhbG9nKEFT U1NwbGl0Q29udGV4dCAqY3R4LCBjb25zdCBjaGFyICpidWYpOwogICAgICsrCiAgICAgKysvKioK ICAgICArKyAqIFNwbGl0IG9uZSBBU1MgRGlhbG9ndWUgbGluZSBmcm9tIGEgc3RyaW5nIGJ1ZmZl ci4KICAgICArKyAqCiAgICAgKysgKiBAcGFyYW0gY3R4IENvbnRleHQgcHJldmlvdXNseSBpbml0 aWFsaXplZCBieSBmZl9hc3Nfc3BsaXQoKS4KICAgICArKyAqIEBwYXJhbSBidWYgU3RyaW5nIGNv bnRhaW5pbmcgdGhlIEFTUyAiRGlhbG9ndWUiIGxpbmUuCiAgICAgKysgKiBAcmV0dXJuIFBvaW50 ZXIgdG8gdGhlIHNwbGl0IEFTU0RpYWxvZy4gTXVzdCBiZSBmcmVlZCB3aXRoCiAgICAgKysgKiBm Zl9hc3NfZnJlZV9kaWFsb2coKQogICAgICsrICovCiAgICAgICtBU1NEaWFsb2cgKmF2cHJpdl9h c3Nfc3BsaXRfZGlhbG9nKEFTU1NwbGl0Q29udGV4dCAqY3R4LCBjb25zdCBjaGFyICpidWYpOwog ICAgIC0gCiAgICAgLSAvKioKICAgICAtICAqIEZyZWUgYWxsIHRoZSBtZW1vcnkgYWxsb2NhdGVk IGZvciBhbiBBU1NTcGxpdENvbnRleHQuCiAgICAgLSAgKgogICAgIC0gICogQHBhcmFtIGN0eCBD b250ZXh0IHByZXZpb3VzbHkgaW5pdGlhbGl6ZWQgYnkgZmZfYXNzX3NwbGl0KCkuCiAgICAgLSAg Ki8KICAgICAtLXZvaWQgZmZfYXNzX3NwbGl0X2ZyZWUoQVNTU3BsaXRDb250ZXh0ICpjdHgpOwog ICAgICsrCiAgICAgKysvKioKICAgICArKyAqIEZyZWUgYWxsIHRoZSBtZW1vcnkgYWxsb2NhdGVk IGZvciBhbiBBU1NTcGxpdENvbnRleHQuCiAgICAgKysgKgogICAgICsrICogQHBhcmFtIGN0eCBD b250ZXh0IHByZXZpb3VzbHkgaW5pdGlhbGl6ZWQgYnkgZmZfYXNzX3NwbGl0KCkuCiAgICAgKysg Ki8KICAgICAgK3ZvaWQgYXZwcml2X2Fzc19zcGxpdF9mcmVlKEFTU1NwbGl0Q29udGV4dCAqY3R4 KTsKICAgICAtIAogICAgIC0gCiAgICAgLSAvKioKICAgICAtQEAgbGliYXZ1dGlsL2Fzc19zcGxp dF9pbnRlcm5hbC5oOiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgLSAgICAgICogQHsKICAgICAtICAg ICAgKi8KICAgICAtICAgICB2b2lkICgqdGV4dCkodm9pZCAqcHJpdiwgY29uc3QgY2hhciAqdGV4 dCwgaW50IGxlbik7CiAgICAgLSsgICAgdm9pZCAoKmhhcmRfc3BhY2UpKHZvaWQgKnByaXYpOwog ICAgIC0gICAgIHZvaWQgKCpuZXdfbGluZSkodm9pZCAqcHJpdiwgaW50IGZvcmNlZCk7CiAgICAg LSAgICAgdm9pZCAoKnN0eWxlKSh2b2lkICpwcml2LCBjaGFyIHN0eWxlLCBpbnQgY2xvc2UpOwog ICAgIC0gICAgIHZvaWQgKCpjb2xvcikodm9pZCAqcHJpdiwgdW5zaWduZWQgaW50IC8qIGNvbG9y ICovLCB1bnNpZ25lZCBpbnQgY29sb3JfaWQpOwogICAgIC1AQCBsaWJhdnV0aWwvYXNzX3NwbGl0 X2ludGVybmFsLmg6IHR5cGVkZWYgc3RydWN0IHsKICAgICAtICAgICAgKiBAewogICAgIC0gICAg ICAqLwogICAgIC0gICAgIHZvaWQgKCptb3ZlKSh2b2lkICpwcml2LCBpbnQgeDEsIGludCB5MSwg aW50IHgyLCBpbnQgeTIsIGludCB0MSwgaW50IHQyKTsKICAgICAtKyAgICB2b2lkICgqYW5pbWF0 ZSkodm9pZCAqcHJpdiwgaW50IHQxLCBpbnQgdDIsIGludCBhY2NlbCwgY2hhciAqc3R5bGUpOwog ICAgIC0gICAgIHZvaWQgKCpvcmlnaW4pKHZvaWQgKnByaXYsIGludCB4LCBpbnQgeSk7CiAgICAg LSsgICAgdm9pZCAoKmRyYXdpbmdfbW9kZSkodm9pZCAqcHJpdiwgaW50IHNjYWxlKTsKICAgICAt KyAgICAvKiogQH0gKi8KICAgICAgKwogICAgIC0rICAgIC8qKgogICAgIC0rICAgICAqIEBkZWZn cm91cCBhc3NfZXh0ICAgIEFTUyBleHRlbnNpYmxlIHBhcnNpbmcgY2FsbGJhY2sKICAgICAtKyAg ICAgKiBAewogICAgIC0rICAgICAqLwogICAgIC0rICAgIHZvaWQgKCpleHQpKHZvaWQgKnByaXYs IGludCBleHRfaWQsIGNvbnN0IGNoYXIgKnRleHQsIGludCBwMSwgaW50IHAyKTsKICAgICAtICAg ICAvKiogQH0gKi8KICAgICAtIAogICAgIC0gICAgIC8qKgogICAgIC1AQCBsaWJhdnV0aWwvYXNz X3NwbGl0X2ludGVybmFsLmg6IHR5cGVkZWYgc3RydWN0IHsKICAgICAtICAqIEBwYXJhbSBidWYg VGhlIEFTUyAiRGlhbG9ndWUiIFRleHQgZmllbGQgdG8gc3BsaXQuCiAgICAgLSAgKiBAcmV0dXJu ID49IDAgb24gc3VjY2VzcyBvdGhlcndpc2UgYW4gZXJyb3IgY29kZSA8MAogICAgIC0gICovCiAg ICAgLS1pbnQgZmZfYXNzX3NwbGl0X292ZXJyaWRlX2NvZGVzKGNvbnN0IEFTU0NvZGVzQ2FsbGJh Y2tzICpjYWxsYmFja3MsIHZvaWQgKnByaXYsCiAgICAgLStpbnQgYXZwcml2X2Fzc19zcGxpdF9v dmVycmlkZV9jb2Rlcyhjb25zdCBBU1NDb2Rlc0NhbGxiYWNrcyAqY2FsbGJhY2tzLCB2b2lkICpw cml2LAogICAgIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpi dWYpOwogICAgIC0gCiAgICAgLSAvKioKICAgICAtQEAgbGliYXZ1dGlsL2Fzc19zcGxpdF9pbnRl cm5hbC5oOiBpbnQgZmZfYXNzX3NwbGl0X292ZXJyaWRlX2NvZGVzKGNvbnN0IEFTU0NvZGVzQ2Fs bGJhY2tzICpjYWxsYmFja3MsIHZvaWQgKnByaXYsCiAgICAgLSAgKiBAcGFyYW0gc3R5bGUgbmFt ZSBvZiB0aGUgc3R5bGUgdG8gc2VhcmNoIGZvci4KICAgICAtICAqIEByZXR1cm4gdGhlIEFTU1N0 eWxlIGNvcnJlc3BvbmRpbmcgdG8gc3R5bGUsIG9yIE5VTEwgaWYgc3R5bGUgY2FuJ3QgYmUgZm91 bmQKICAgICAtICAqLwogICAgIC0tQVNTU3R5bGUgKmZmX2Fzc19zdHlsZV9nZXQoQVNTU3BsaXRD b250ZXh0ICpjdHgsIGNvbnN0IGNoYXIgKnN0eWxlKTsKICAgICArKy8qKgogICAgICsrICogU2V0 IG9mIGNhbGxiYWNrIGZ1bmN0aW9ucyBjb3JyZXNwb25kaW5nIHRvIGVhY2ggb3ZlcnJpZGUgY29k ZXMgdGhhdCBjYW4KICAgICArKyAqIGJlIGVuY291bnRlcmVkIGluIGEgIkRpYWxvZ3VlIiBUZXh0 IGZpZWxkLgogICAgICsrICovCiAgICAgKyt0eXBlZGVmIHN0cnVjdCB7CiAgICAgKysgIC8qKgog ICAgICsrICAgKiBAZGVmZ3JvdXAgYXNzX3N0eWxlcyAgICBBU1Mgc3R5bGVzCiAgICAgKysgICAq IEB7CiAgICAgKysgICAqLwogICAgICsrICB2b2lkICgqdGV4dCkodm9pZCAqcHJpdiwgY29uc3Qg Y2hhciAqdGV4dCwgaW50IGxlbik7CiAgICAgKysgIHZvaWQgKCpoYXJkX3NwYWNlKSh2b2lkICpw cml2KTsKICAgICArKyAgdm9pZCAoKm5ld19saW5lKSh2b2lkICpwcml2LCBpbnQgZm9yY2VkKTsK ICAgICArKyAgdm9pZCAoKnN0eWxlKSh2b2lkICpwcml2LCBjaGFyIHN0eWxlLCBpbnQgY2xvc2Up OwogICAgICsrICB2b2lkICgqY29sb3IpKHZvaWQgKnByaXYsIHVuc2lnbmVkIGludCAvKiBjb2xv ciAqLywgdW5zaWduZWQgaW50IGNvbG9yX2lkKTsKICAgICArKyAgdm9pZCAoKmFscGhhKSh2b2lk ICpwcml2LCBpbnQgYWxwaGEsIGludCBhbHBoYV9pZCk7CiAgICAgKysgIHZvaWQgKCpmb250X25h bWUpKHZvaWQgKnByaXYsIGNvbnN0IGNoYXIgKm5hbWUpOwogICAgICsrICB2b2lkICgqZm9udF9z aXplKSh2b2lkICpwcml2LCBpbnQgc2l6ZSk7CiAgICAgKysgIHZvaWQgKCphbGlnbm1lbnQpKHZv aWQgKnByaXYsIGludCBhbGlnbm1lbnQpOwogICAgICsrICB2b2lkICgqY2FuY2VsX292ZXJyaWRl cykodm9pZCAqcHJpdiwgY29uc3QgY2hhciAqc3R5bGUpOwogICAgICsrICAvKiogQH0gKi8KICAg ICArKwogICAgICsrICAvKioKICAgICArKyAgICogQGRlZmdyb3VwIGFzc19mdW5jdGlvbnMgICAg QVNTIGZ1bmN0aW9ucwogICAgICsrICAgKiBAewogICAgICsrICAgKi8KICAgICArKyAgdm9pZCAo Km1vdmUpKHZvaWQgKnByaXYsIGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MiwgaW50IHQx LCBpbnQgdDIpOwogICAgICsrICB2b2lkICgqYW5pbWF0ZSkodm9pZCAqcHJpdiwgaW50IHQxLCBp bnQgdDIsIGludCBhY2NlbCwgY2hhciAqc3R5bGUpOwogICAgICsrICB2b2lkICgqb3JpZ2luKSh2 b2lkICpwcml2LCBpbnQgeCwgaW50IHkpOwogICAgICsrICB2b2lkICgqZHJhd2luZ19tb2RlKSh2 b2lkICpwcml2LCBpbnQgc2NhbGUpOwogICAgICsrICAvKiogQH0gKi8KICAgICArKwogICAgICsr ICAvKioKICAgICArKyAgICogQGRlZmdyb3VwIGFzc19leHQgICAgQVNTIGV4dGVuc2libGUgcGFy c2luZyBjYWxsYmFjawogICAgICsrICAgKiBAewogICAgICsrICAgKi8KICAgICArKyAgdm9pZCAo KmV4dCkodm9pZCAqcHJpdiwgaW50IGV4dF9pZCwgY29uc3QgY2hhciAqdGV4dCwgaW50IHAxLCBp bnQgcDIpOwogICAgICsrICAvKiogQH0gKi8KICAgICArKwogICAgICsrICAvKioKICAgICArKyAg ICogQGRlZmdyb3VwIGFzc19lbmQgICAgZW5kIG9mIERpYWxvZ3VlIEV2ZW50CiAgICAgKysgICAq IEB7CiAgICAgKysgICAqLwogICAgICsrICB2b2lkICgqZW5kKSh2b2lkICpwcml2KTsKICAgICAr KyAgLyoqIEB9ICovCiAgICAgKyt9IEFTU0NvZGVzQ2FsbGJhY2tzOwogICAgICsrCiAgICAgKysv KioKICAgICArKyAqIFNwbGl0IG92ZXJyaWRlIGNvZGVzIG91dCBvZiBhIEFTUyAiRGlhbG9ndWUi IFRleHQgZmllbGQuCiAgICAgKysgKgogICAgICsrICogQHBhcmFtIGNhbGxiYWNrcyBTZXQgb2Yg Y2FsbGJhY2sgZnVuY3Rpb25zIGNhbGxlZCBmb3IgZWFjaCBvdmVycmlkZSBjb2RlCiAgICAgKysg KiAgICAgICAgICAgICAgICAgIGVuY291bnRlcmVkLgogICAgICsrICogQHBhcmFtIHByaXYgT3Bh cXVlIHBvaW50ZXIgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbnMuCiAgICAgKysgKiBA cGFyYW0gYnVmIFRoZSBBU1MgIkRpYWxvZ3VlIiBUZXh0IGZpZWxkIHRvIHNwbGl0LgogICAgICsr ICogQHBhcmFtIG91dGJ1ZmZlciBUaGUgb3V0cHV0IGJ1ZmZlci4KICAgICArKyAqIEBwYXJhbSBr ZWVwX2ZsYWdzIEZsYWdzIGZvciBmaWx0ZXJpbmcgYXNzIGNvZGVzLgogICAgICsrICogQHJldHVy biA+PSAwIG9uIHN1Y2Nlc3Mgb3RoZXJ3aXNlIGFuIGVycm9yIGNvZGUgPDAKICAgICArKyAqLwog ICAgICsraW50IGF2cHJpdl9hc3NfZmlsdGVyX292ZXJyaWRlX2NvZGVzKGNvbnN0IEFTU0NvZGVz Q2FsbGJhY2tzICpjYWxsYmFja3MsCiAgICAgKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdm9pZCAqcHJpdiwgY29uc3QgY2hhciAqYnVmLAogICAgICsrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEFWQlByaW50ICpvdXRidWZmZXIsIGVudW0gQVNTU3Bs aXRDb21wb25lbnRzIGtlZXBfZmxhZ3MpOwogICAgICsrCiAgICAgKysvKioKICAgICArKyAqIFNw bGl0IG92ZXJyaWRlIGNvZGVzIG91dCBvZiBhIEFTUyAiRGlhbG9ndWUiIFRleHQgZmllbGQuCiAg ICAgKysgKgogICAgICsrICogQHBhcmFtIGNhbGxiYWNrcyBTZXQgb2YgY2FsbGJhY2sgZnVuY3Rp b25zIGNhbGxlZCBmb3IgZWFjaCBvdmVycmlkZSBjb2RlCiAgICAgKysgKiAgICAgICAgICAgICAg ICAgIGVuY291bnRlcmVkLgogICAgICsrICogQHBhcmFtIHByaXYgT3BhcXVlIHBvaW50ZXIgcGFz c2VkIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbnMuCiAgICAgKysgKiBAcGFyYW0gYnVmIFRoZSBB U1MgIkRpYWxvZ3VlIiBUZXh0IGZpZWxkIHRvIHNwbGl0LgogICAgICsrICogQHJldHVybiA+PSAw IG9uIHN1Y2Nlc3Mgb3RoZXJ3aXNlIGFuIGVycm9yIGNvZGUgPDAKICAgICArKyAqLwogICAgICsr aW50IGF2cHJpdl9hc3Nfc3BsaXRfb3ZlcnJpZGVfY29kZXMoY29uc3QgQVNTQ29kZXNDYWxsYmFj a3MgKmNhbGxiYWNrcywKICAgICArKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHZvaWQgKnByaXYsIGNvbnN0IGNoYXIgKmJ1Zik7CiAgICAgKysKICAgICArKy8qKgogICAgICsr ICogRmluZCBhbiBBU1NTdHlsZSBzdHJ1Y3R1cmUgYnkgaXRzIG5hbWUuCiAgICAgKysgKgogICAg ICsrICogQHBhcmFtIGN0eCBDb250ZXh0IHByZXZpb3VzbHkgaW5pdGlhbGl6ZWQgYnkgZmZfYXNz X3NwbGl0KCkuCiAgICAgKysgKiBAcGFyYW0gc3R5bGUgbmFtZSBvZiB0aGUgc3R5bGUgdG8gc2Vh cmNoIGZvci4KICAgICArKyAqIEByZXR1cm4gdGhlIEFTU1N0eWxlIGNvcnJlc3BvbmRpbmcgdG8g c3R5bGUsIG9yIE5VTEwgaWYgc3R5bGUgY2FuJ3QgYmUgZm91bmQKICAgICArKyAqLwogICAgICAr QVNTU3R5bGUgKmF2cHJpdl9hc3Nfc3R5bGVfZ2V0KEFTU1NwbGl0Q29udGV4dCAqY3R4LCBjb25z dCBjaGFyICpzdHlsZSk7CiAgICAgLSAKICAgICAtLSNlbmRpZiAvKiBBVkNPREVDX0FTU19TUExJ VF9IICovCiAgICAgKysKICAgICAgKyNlbmRpZiAvKiBBVlVUSUxfQVNTX1NQTElUX0lOVEVSTkFM X0ggKi8KICA3OiAgMDlkOGNmNzg4MCA9ICA3OiAgOThmMTJhZDdlOSBhdmNvZGVjL3N1YnRpdGxl czogUmVwbGFjZSBkZXByZWNhdGVkIGVudW0gdmFsdWVzCiAgODogIDg5NzI5OWJmN2YgPSAgODog IDEyYzhhMzA4ZDMgZmZ0b29scy9wbGF5LHByb2JlOiBBZGp1c3QgZm9yIHN1YnRpdGxlIGNoYW5n ZXMKICA5OiAgY2E1ODBjNmQyMSA9ICA5OiAgMmU1NWRiZTE4MCBhdmZpbHRlci9zdWJ0aXRsZXM6 IEFkZCBzdWJ0aXRsZXMuYyBmb3Igc3VidGl0bGUgZnJhbWUgYWxsb2NhdGlvbgogMTA6ICAwNzgx ZTk3NGEyID0gMTA6ICBjOTMxMDQxMTAzIGF2ZmlsdGVyL2F2ZmlsdGVyOiBIYW5kbGUgc3VidGl0 bGUgZnJhbWVzCiAxMTogIGQ5ZDlmNDI1NTggPSAxMTogIDM2Y2FiNTVmZjIgYXZmaWx0ZXIvYXZm aWx0ZXI6IEZpeCBoYXJkY29kZWQgaW5wdXQgaW5kZXgKIDEyOiAgYWY2OWE0YjMyMSA9IDEyOiAg ZjQxMDcwNDc5YyBhdmZpbHRlci9zYnVmZmVyOiBBZGQgc2J1ZmZlcnNyYyBhbmQgc2J1ZmZlcnNp bmsgZmlsdGVycwogMTM6ICBmN2U1YjU5MGEyICEgMTM6ICA5YmZhYmE0YWNlIGF2ZmlsdGVyL292 ZXJsYXlncmFwaGljc3ViczogQWRkIG92ZXJsYXlncmFwaGljc3VicyBhbmQgZ3JhcGhpY3N1YjJ2 aWRlbyBmaWx0ZXJzCiAgICAgQEAgbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jOiBleHRlcm4gY29u c3QgQVZGaWx0ZXIgZmZfdmZfb3ZlcmxheV9xc3Y7CiAgICAgICBleHRlcm4gY29uc3QgQVZGaWx0 ZXIgZmZfdmZfb3dkZW5vaXNlOwogICAgICAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX3Bh ZDsKICAgICAgIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl9wYWRfb3BlbmNsOwogICAgIC1A QCBsaWJhdmZpbHRlci9hbGxmaWx0ZXJzLmM6IGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl9hdmZf c2hvd3ZvbHVtZTsKICAgICArQEAgbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jOiBleHRlcm4gY29u c3QgQVZGaWx0ZXIgZmZfYXZmX3Nob3dzcGVjdHJ1bXBpYzsKICAgICArIGV4dGVybiBjb25zdCBB VkZpbHRlciBmZl9hdmZfc2hvd3ZvbHVtZTsKICAgICAgIGV4dGVybiBjb25zdCBBVkZpbHRlciBm Zl9hdmZfc2hvd3dhdmVzOwogICAgICAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2F2Zl9zaG93 d2F2ZXNwaWM7CiAgICAgLSBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmFmX3NwZWN0cnVtc3lu dGg7CiAgICAgICtleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfc3ZmX2dyYXBoaWNzdWIydmlkZW87 CiAgICAgKyBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmFmX3NwZWN0cnVtc3ludGg7CiAgICAg ICAKICAgICAgIC8qIG11bHRpbWVkaWEgc291cmNlcyAqLwogICAgIC0gZXh0ZXJuIGNvbnN0IEFW RmlsdGVyIGZmX2F2c3JjX2F2c3luY3Rlc3Q7CiAgICAgIAogICAgICAgIyMgbGliYXZmaWx0ZXIv dmZfb3ZlcmxheWdyYXBoaWNzdWJzLmMgKG5ldykgIyMKICAgICAgQEAKIDE0OiAgNGM4MDkyMzU3 ZiAhIDE0OiAgOTE4ZmQ5YWFmNSBhdmZpbHRlci9vdmVybGF5dGV4dHN1YnM6IEFkZCBvdmVybGF5 dGV4dHN1YnMgYW5kIHRleHRzdWJzMnZpZGVvIGZpbHRlcnMKICAgICBAQCBsaWJhdmZpbHRlci9h bGxmaWx0ZXJzLmM6IGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl9vdmVybGF5X3ZhYXBpOwog ICAgICAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX293ZGVub2lzZTsKICAgICAgIGV4dGVy biBjb25zdCBBVkZpbHRlciBmZl92Zl9wYWQ7CiAgICAgICBleHRlcm4gY29uc3QgQVZGaWx0ZXIg ZmZfdmZfcGFkX29wZW5jbDsKICAgICAtQEAgbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jOiBleHRl cm4gY29uc3QgQVZGaWx0ZXIgZmZfYXZmX3Nob3d3YXZlczsKICAgICArQEAgbGliYXZmaWx0ZXIv YWxsZmlsdGVycy5jOiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfYXZmX3Nob3d2b2x1bWU7CiAg ICAgKyBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfYXZmX3Nob3d3YXZlczsKICAgICAgIGV4dGVy biBjb25zdCBBVkZpbHRlciBmZl9hdmZfc2hvd3dhdmVzcGljOwogICAgIC0gZXh0ZXJuIGNvbnN0 IEFWRmlsdGVyIGZmX3ZhZl9zcGVjdHJ1bXN5bnRoOwogICAgICAgZXh0ZXJuIGNvbnN0IEFWRmls dGVyIGZmX3N2Zl9ncmFwaGljc3ViMnZpZGVvOwogICAgICArZXh0ZXJuIGNvbnN0IEFWRmlsdGVy IGZmX3N2Zl90ZXh0c3ViMnZpZGVvOwogICAgICsgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3Zh Zl9zcGVjdHJ1bXN5bnRoOwogICAgICAgCiAgICAgICAvKiBtdWx0aW1lZGlhIHNvdXJjZXMgKi8K ICAgICAtIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl9hdnNyY19hdnN5bmN0ZXN0OwogICAgICAK ICAgICAgICMjIGxpYmF2ZmlsdGVyL3ZmX292ZXJsYXl0ZXh0c3Vicy5jIChuZXcpICMjCiAgICAg IEBACiAxNTogIDhmZGJkZjdjNWYgISAxNTogIGEzNjFhZDM1YzUgYXZmaWx0ZXIvdGV4dG1vZDog QWRkIHRleHRtb2QsIGNlbnNvciBhbmQgc2hvd19zcGVha2VyIGZpbHRlcnMKICAgICBAQCBsaWJh dmZpbHRlci9NYWtlZmlsZTogT0JKUy0kKENPTkZJR19ZVVZURVNUU1JDX0ZJTFRFUikgICAgICAg ICAgICAgKz0gdnNyY190ZXN0cwogICAgICAgT0JKUy0kKENPTkZJR19BRFJBV0dSQVBIX0ZJTFRF UikgICAgICAgICAgICAgKz0gZl9kcmF3Z3JhcGgubwogICAgICAKICAgICAgICMjIGxpYmF2Zmls dGVyL2FsbGZpbHRlcnMuYyAjIwogICAgIC1AQCBsaWJhdmZpbHRlci9hbGxmaWx0ZXJzLmM6IGV4 dGVybiBjb25zdCBBVkZpbHRlciBmZl9hdmZfc2hvd3ZvbHVtZTsKICAgICAtIGV4dGVybiBjb25z dCBBVkZpbHRlciBmZl9hdmZfc2hvd3dhdmVzOwogICAgIC0gZXh0ZXJuIGNvbnN0IEFWRmlsdGVy IGZmX2F2Zl9zaG93d2F2ZXNwaWM7CiAgICAgLSBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmFm X3NwZWN0cnVtc3ludGg7CiAgICAgK0BAIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYzogZXh0ZXJu IGNvbnN0IEFWRmlsdGVyIGZmX2F2c3JjX2F2c3luY3Rlc3Q7CiAgICAgKyBleHRlcm4gY29uc3Qg QVZGaWx0ZXIgZmZfYXZzcmNfYW1vdmllOwogICAgICsgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZm X2F2c3JjX21vdmllOwogICAgICsgCiAgICAgKysvKiBzdWJ0aXRsZSBmaWx0ZXJzICovCiAgICAg ICtleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfc2ZfY2Vuc29yOwogICAgICArZXh0ZXJuIGNvbnN0 IEFWRmlsdGVyIGZmX3NmX3Nob3dzcGVha2VyOwogICAgICArZXh0ZXJuIGNvbnN0IEFWRmlsdGVy IGZmX3NmX3RleHRtb2Q7CiAgICAgLSBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfc3ZmX2dyYXBo aWNzdWIydmlkZW87CiAgICAgLSBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfc3ZmX3RleHRzdWIy dmlkZW87CiAgICAgLSAKICAgICArKwogICAgICsgLyogdGhvc2UgZmlsdGVycyBhcmUgcGFydCBv ZiBwdWJsaWMgb3IgaW50ZXJuYWwgQVBJLAogICAgICsgICogdGhleSBhcmUgZm9ybWF0dGVkIHRv IG5vdCBiZSBmb3VuZCBieSB0aGUgZ3JlcAogICAgICsgICogYXMgdGhleSBhcmUgbWFudWFsbHkg YWRkZWQgYWdhaW4gKGR1ZSB0byB0aGVpciAnbmFtZXMnCiAgICAgIAogICAgICAgIyMgbGliYXZm aWx0ZXIvc2ZfdGV4dG1vZC5jIChuZXcpICMjCiAgICAgIEBACiAgICAgQEAgbGliYXZmaWx0ZXIv c2ZfdGV4dG1vZC5jIChuZXcpCiAgICAgICsKICAgICAgKyAgICBhdl9icHJpbnRfZmluYWxpemUo JnBidWYsICZ0ZXh0KTsKICAgICAgKwogICAgIC0rICAgIHJlc3VsdCA9IGF2cHJpdl9hc3NfZ2V0 X2RpYWxvZ19leChkaWFsb2ctPnJlYWRvcmRlciwgZGlhbG9nLT5sYXllciwgZGlhbG9nLT5zdHls ZSwgZGlhbG9nLT5uYW1lLCBkaWFsb2ctPm1hcmdpbl9sLCBkaWFsb2ctPm1hcmdpbl9yLCBkaWFs b2ctPm1hcmdpbl92LCB0ZXh0KTsKICAgICArKyAgICByZXN1bHQgPSBhdnByaXZfYXNzX2dldF9k aWFsb2dfZXgoZGlhbG9nLT5yZWFkb3JkZXIsIGRpYWxvZy0+bGF5ZXIsIGRpYWxvZy0+c3R5bGUs IGRpYWxvZy0+bmFtZSwgZGlhbG9nLT5tYXJnaW5fbCwgZGlhbG9nLT5tYXJnaW5fciwgZGlhbG9n LT5tYXJnaW5fdiwgZGlhbG9nLT5lZmZlY3QsIHRleHQpOwogICAgICArCiAgICAgICsgICAgYXZf ZnJlZSh0ZXh0KTsKICAgICAgKyAgICBhdnByaXZfYXNzX2ZyZWVfZGlhbG9nKCZkaWFsb2cpOwog ICAgIEBAIGxpYmF2ZmlsdGVyL3NmX3RleHRtb2QuYyAobmV3KQogICAgICArICAgIGlmICghdGV4 dCkKICAgICAgKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICsKICAgICAtKyAgICByZXN1bHQg PSBhdnByaXZfYXNzX2dldF9kaWFsb2dfZXgoZGlhbG9nLT5yZWFkb3JkZXIsIGRpYWxvZy0+bGF5 ZXIsIGRpYWxvZy0+c3R5bGUsIGRpYWxvZy0+bmFtZSwgZGlhbG9nLT5tYXJnaW5fbCwgZGlhbG9n LT5tYXJnaW5fciwgZGlhbG9nLT5tYXJnaW5fdiwgdGV4dCk7CiAgICAgKysgICAgcmVzdWx0ID0g YXZwcml2X2Fzc19nZXRfZGlhbG9nX2V4KGRpYWxvZy0+cmVhZG9yZGVyLCBkaWFsb2ctPmxheWVy LCBkaWFsb2ctPnN0eWxlLCBkaWFsb2ctPm5hbWUsIGRpYWxvZy0+bWFyZ2luX2wsIGRpYWxvZy0+ bWFyZ2luX3IsIGRpYWxvZy0+bWFyZ2luX3YsIGRpYWxvZy0+ZWZmZWN0LCB0ZXh0KTsKICAgICAg KwogICAgICArICAgIGF2X2ZyZWUodGV4dCk7CiAgICAgICsgICAgYXZwcml2X2Fzc19mcmVlX2Rp YWxvZygmZGlhbG9nKTsKIDE2OiAgZDQ0YjIyZjE1YiAhIDE2OiAgYmNhOTBlYmMzZSBhdmZpbHRl ci9zdHJpcHN0eWxlczogQWRkIHN0cmlwc3R5bGVzIGZpbHRlcgogICAgIEBAIGRvYy9maWx0ZXJz LnRleGk6IGZmbXBlZyAtaSAiaHR0cDovL3N0cmVhbXMudmlkZW9sYW4ub3JnL3NhbXBsZXMvc3Vi L1NTQS9zdWJ0aXRsCiAgICAgIAogICAgICAgIyMgbGliYXZmaWx0ZXIvTWFrZWZpbGUgIyMKICAg ICAgQEAgbGliYXZmaWx0ZXIvTWFrZWZpbGU6IE9CSlMtJChDT05GSUdfTlVMTFNJTktfRklMVEVS KSAgICAgICAgICAgICAgICs9IHZzaW5rX251bGxzaW5rLm8KICAgICArICMgc3VidGl0bGUgZmls dGVycwogICAgICAgT0JKUy0kKENPTkZJR19DRU5TT1JfRklMVEVSKSAgICAgICAgICAgICAgICAg Kz0gc2ZfdGV4dG1vZC5vCiAgICAgICBPQkpTLSQoQ09ORklHX1NIT1dfU1BFQUtFUl9GSUxURVIp ICAgICAgICAgICArPSBzZl90ZXh0bW9kLm8KICAgICAtIE9CSlMtJChDT05GSUdfVEVYVE1PRF9G SUxURVIpICAgICAgICAgICAgICAgICs9IHNmX3RleHRtb2QubwogICAgICArT0JKUy0kKENPTkZJ R19TVFJJUFNUWUxFU19GSUxURVIpICAgICAgICAgICAgKz0gc2Zfc3RyaXBzdHlsZXMubwogICAg ICsgT0JKUy0kKENPTkZJR19URVhUTU9EX0ZJTFRFUikgICAgICAgICAgICAgICAgKz0gc2ZfdGV4 dG1vZC5vCiAgICAgICAKICAgICAgICMgbXVsdGltZWRpYSBmaWx0ZXJzCiAgICAgLSBPQkpTLSQo Q09ORklHX0FCSVRTQ09QRV9GSUxURVIpICAgICAgICAgICAgICArPSBhdmZfYWJpdHNjb3BlLm8K ICAgICAgCiAgICAgICAjIyBsaWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMgIyMKICAgICAtQEAgbGli YXZmaWx0ZXIvYWxsZmlsdGVycy5jOiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfYXZmX3Nob3d3 YXZlc3BpYzsKICAgICAtIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92YWZfc3BlY3RydW1zeW50 aDsKICAgICArQEAgbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jOiBleHRlcm4gY29uc3QgQVZGaWx0 ZXIgZmZfYXZzcmNfbW92aWU7CiAgICAgKyAvKiBzdWJ0aXRsZSBmaWx0ZXJzICovCiAgICAgICBl eHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfc2ZfY2Vuc29yOwogICAgICAgZXh0ZXJuIGNvbnN0IEFW RmlsdGVyIGZmX3NmX3Nob3dzcGVha2VyOwogICAgICArZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZm X3NmX3N0cmlwc3R5bGVzOwogICAgICAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3NmX3RleHRt b2Q7CiAgICAgLSBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfc3ZmX2dyYXBoaWNzdWIydmlkZW87 CiAgICAgLSBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfc3ZmX3RleHRzdWIydmlkZW87CiAgICAg KyAKICAgICArIC8qIHRob3NlIGZpbHRlcnMgYXJlIHBhcnQgb2YgcHVibGljIG9yIGludGVybmFs IEFQSSwKICAgICAgCiAgICAgICAjIyBsaWJhdmZpbHRlci9zZl9zdHJpcHN0eWxlcy5jIChuZXcp ICMjCiAgICAgIEBACiAgICAgQEAgbGliYXZmaWx0ZXIvc2Zfc3RyaXBzdHlsZXMuYyAobmV3KQog ICAgICArCiAgICAgICsjaW5jbHVkZSAibGliYXZ1dGlsL29wdC5oIgogICAgICArI2luY2x1ZGUg ImludGVybmFsLmgiCiAgICAgKysjaW5jbHVkZSAibGliYXZ1dGlsL2Fzc19pbnRlcm5hbC5oIgog ICAgICArI2luY2x1ZGUgImxpYmF2dXRpbC9hc3Nfc3BsaXRfaW50ZXJuYWwuaCIKICAgICAgKyNp bmNsdWRlICJsaWJhdnV0aWwvYnByaW50LmgiCiAgICAgICsKICAgICBAQCBsaWJhdmZpbHRlci9z Zl9zdHJpcHN0eWxlcy5jIChuZXcpCiAgICAgICsgICAgY29uc3QgQVZDbGFzcyAqY2xhc3M7CiAg ICAgICsgICAgZW51bSBBVlN1YnRpdGxlVHlwZSBmb3JtYXQ7CiAgICAgICsgICAgaW50IHJlbW92 ZV9hbmltYXRlZDsKICAgICArKyAgICBlbnVtIEFTU1NwbGl0Q29tcG9uZW50cyBrZWVwX2ZsYWdz OwogICAgICArICAgIGludCBzZWxlY3RfbGF5ZXI7CiAgICAgICt9IFN0cmlwU3R5bGVzQ29udGV4 dDsKICAgICAgKwogICAgIEBAIGxpYmF2ZmlsdGVyL3NmX3N0cmlwc3R5bGVzLmMgKG5ldykKICAg ICAgKyAgICBBVkJQcmludCBidWZmZXI7CiAgICAgICsgICAgaW50IGRyYXdpbmdfc2NhbGU7CiAg ICAgICsgICAgaW50IGlzX2FuaW1hdGVkOwogICAgICsrICAgIGludCBwbGFpbl90ZXh0X2xlbmd0 aDsKICAgICAgK30gRGlhbG9nQ29udGV4dDsKICAgICAgKwogICAgICArc3RhdGljIHZvaWQgZGlh bG9nX3RleHRfY2Iodm9pZCAqcHJpdiwgY29uc3QgY2hhciAqdGV4dCwgaW50IGxlbikKICAgICBA QCBsaWJhdmZpbHRlci9zZl9zdHJpcHN0eWxlcy5jIChuZXcpCiAgICAgICsgICAgYXZfbG9nKHMt PnNzX2N0eCwgQVZfTE9HX0RFQlVHLCAiZGlhbG9nX3RleHRfY2I6ICVzXG4iLCB0ZXh0KTsKICAg ICAgKwogICAgICArICAgIGlmICghcy0+ZHJhd2luZ19zY2FsZSAmJiAoIXMtPmlzX2FuaW1hdGVk IHx8ICFzLT5zc19jdHgtPnJlbW92ZV9hbmltYXRlZCkpCiAgICAgLSsgICAgICAgIGF2X2Jwcmlu dF9hcHBlbmRfZGF0YSgmcy0+YnVmZmVyLCB0ZXh0LCBsZW4pOwogICAgICsrICAgICAgICBzLT5w bGFpbl90ZXh0X2xlbmd0aCArPSBsZW47CiAgICAgKysgICAgICAgIC8vLy9hdl9icHJpbnRfYXBw ZW5kX2RhdGEoJnMtPmJ1ZmZlciwgdGV4dCwgbGVuKTsKICAgICAgK30KICAgICAgKwogICAgICAr c3RhdGljIHZvaWQgZGlhbG9nX25ld19saW5lX2NiKHZvaWQgKnByaXYsIGludCBmb3JjZWQpCiAg ICAgICt7CiAgICAgICsgICAgRGlhbG9nQ29udGV4dCAqcyA9IHByaXY7CiAgICAgICsgICAgaWYg KCFzLT5kcmF3aW5nX3NjYWxlICYmICFzLT5pc19hbmltYXRlZCkKICAgICAtKyAgICAgICAgYXZf YnByaW50X2FwcGVuZF9kYXRhKCZzLT5idWZmZXIsIGZvcmNlZCA/ICJcXE4iIDogIlxcbiIsIDIp OwogICAgICsrICAgICAgICBzLT5wbGFpbl90ZXh0X2xlbmd0aCArPSAyOwogICAgICsrICAgICAg ICAvLy8vYXZfYnByaW50X2FwcGVuZF9kYXRhKCZzLT5idWZmZXIsIGZvcmNlZCA/ICJcXE4iIDog IlxcbiIsIDIpOwogICAgICArfQogICAgICArCiAgICAgICtzdGF0aWMgdm9pZCBkaWFsb2dfZHJh d2luZ19tb2RlX2NiKHZvaWQgKnByaXYsIGludCBzY2FsZSkKICAgICBAQCBsaWJhdmZpbHRlci9z Zl9zdHJpcHN0eWxlcy5jIChuZXcpCiAgICAgICsgICAgLm1vdmUgICAgICAgICAgICAgPSBkaWFs b2dfbW92ZV9jYiwKICAgICAgK307CiAgICAgICsKICAgICAtK3N0YXRpYyBjaGFyICphc3NfZ2V0 X2xpbmUoaW50IHJlYWRvcmRlciwgaW50IGxheWVyLCBjb25zdCBjaGFyICpzdHlsZSwKICAgICAt KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNwZWFrZXIsIGNvbnN0IGNoYXIg KmVmZmVjdCwgY29uc3QgY2hhciAqdGV4dCkKICAgICAtK3sKICAgICAtKyAgICByZXR1cm4gYXZf YXNwcmludGYoIiVkLCVkLCVzLCVzLDAsMCwwLCVzLCVzIiwKICAgICAtKyAgICAgICAgICAgICAg ICAgICAgICAgcmVhZG9yZGVyLCBsYXllciwgc3R5bGUgPyBzdHlsZSA6ICJEZWZhdWx0IiwKICAg ICAtKyAgICAgICAgICAgICAgICAgICAgICAgc3BlYWtlciA/IHNwZWFrZXIgOiAiIiwgZWZmZWN0 LCB0ZXh0KTsKICAgICAtK30KICAgICAtKwogICAgICArc3RhdGljIGNoYXIgKnByb2Nlc3NfZGlh bG9nKFN0cmlwU3R5bGVzQ29udGV4dCAqcywgY29uc3QgY2hhciAqYXNzX2xpbmUpCiAgICAgICt7 CiAgICAgICsgICAgRGlhbG9nQ29udGV4dCBkbGdfY3R4ID0geyAuc3NfY3R4ID0gcyB9OwogICAg IEBAIGxpYmF2ZmlsdGVyL3NmX3N0cmlwc3R5bGVzLmMgKG5ldykKICAgICAgKwogICAgICArICAg IGRsZ19jdHguc3NfY3R4ID0gczsKICAgICAgKwogICAgIC0rICAgIGF2X2JwcmludF9pbml0KCZk bGdfY3R4LmJ1ZmZlciwgMCwgQVZfQlBSSU5UX1NJWkVfVU5MSU1JVEVEKTsKICAgICArKyAgICBh dl9icHJpbnRfaW5pdCgmZGxnX2N0eC5idWZmZXIsIDUxMiwgQVZfQlBSSU5UX1NJWkVfVU5MSU1J VEVEKTsKICAgICAgKwogICAgIC0rICAgIGF2cHJpdl9hc3Nfc3BsaXRfb3ZlcnJpZGVfY29kZXMo JmRpYWxvZ19jYWxsYmFja3MsICZkbGdfY3R4LCBkaWFsb2ctPnRleHQpOwogICAgICsrICAgIGF2 cHJpdl9hc3NfZmlsdGVyX292ZXJyaWRlX2NvZGVzKCZkaWFsb2dfY2FsbGJhY2tzLCAmZGxnX2N0 eCwgZGlhbG9nLT50ZXh0LCAmZGxnX2N0eC5idWZmZXIsIHMtPmtlZXBfZmxhZ3MpOwogICAgICAr CiAgICAgLSsgICAgaWYgKGF2X2JwcmludF9pc19jb21wbGV0ZSgmZGxnX2N0eC5idWZmZXIpCiAg ICAgLSsgICAgICAgICYmIGRsZ19jdHguYnVmZmVyLmxlbiA+IDApCiAgICAgLSsgICAgICAgIHJl c3VsdCA9IGFzc19nZXRfbGluZShkaWFsb2ctPnJlYWRvcmRlciwgZGlhbG9nLT5sYXllciwgZGlh bG9nLT5zdHlsZSwgZGlhbG9nLT5uYW1lLCBkaWFsb2ctPmVmZmVjdCwgZGxnX2N0eC5idWZmZXIu c3RyKTsKICAgICArKyAgICBpZiAoYXZfYnByaW50X2lzX2NvbXBsZXRlKCZkbGdfY3R4LmJ1ZmZl cikgJiYgZGxnX2N0eC5idWZmZXIubGVuID4gMCAmJiBkbGdfY3R4LnBsYWluX3RleHRfbGVuZ3Ro ID4gMCkKICAgICArKyAgICAgICAgcmVzdWx0ID0gYXZwcml2X2Fzc19nZXRfZGlhbG9nX2V4KGRp YWxvZy0+cmVhZG9yZGVyLCBkaWFsb2ctPmxheWVyLCBkaWFsb2ctPnN0eWxlLCBkaWFsb2ctPm5h bWUsIGRpYWxvZy0+bWFyZ2luX2wsIGRpYWxvZy0+bWFyZ2luX3IsIGRpYWxvZy0+bWFyZ2luX3Ys IGRpYWxvZy0+ZWZmZWN0LCBkbGdfY3R4LmJ1ZmZlci5zdHIpOwogICAgICArCiAgICAgICsgICAg YXZfYnByaW50X2ZpbmFsaXplKCZkbGdfY3R4LmJ1ZmZlciwgTlVMTCk7CiAgICAgICsgICAgYXZw cml2X2Fzc19mcmVlX2RpYWxvZygmZGlhbG9nKTsKICAgICBAQCBsaWJhdmZpbHRlci9zZl9zdHJp cHN0eWxlcy5jIChuZXcpCiAgICAgICsgICAgICAgICAgICBhcmVhLT5hc3MgPSBwcm9jZXNzX2Rp YWxvZyhzLCBhcmVhLT5hc3MpOwogICAgICArCiAgICAgICsgICAgICAgICAgICBpZiAoYXJlYS0+ YXNzKSB7CiAgICAgLSsgICAgICAgICAgICAgICAgYXZfbG9nKGlubGluay0+ZHN0LCBBVl9MT0df SU5GTywgIm9yaWdpbmFsOiAlZCAlc1xuIiwgaSwgdG1wKTsKICAgICAtKyAgICAgICAgICAgICAg ICBhdl9sb2coaW5saW5rLT5kc3QsIEFWX0xPR19JTkZPLCAic3RyaXBwZWQ6ICVkICVzXG4iLCBp LCBhcmVhLT5hc3MpOwogICAgICsrICAgICAgICAgICAgICAgIGF2X2xvZyhpbmxpbmstPmRzdCwg QVZfTE9HX0RFQlVHLCAib3JpZ2luYWw6ICVkICVzXG4iLCBpLCB0bXApOwogICAgICsrICAgICAg ICAgICAgICAgIGF2X2xvZyhpbmxpbmstPmRzdCwgQVZfTE9HX0RFQlVHLCAic3RyaXBwZWQ6ICVk ICVzXG4iLCBpLCBhcmVhLT5hc3MpOwogICAgICArICAgICAgICAgICAgfQogICAgICArICAgICAg ICAgICAgZWxzZQogICAgICArICAgICAgICAgICAgICAgIGFyZWEtPmFzcyA9IE5VTEw7CiAgICAg QEAgbGliYXZmaWx0ZXIvc2Zfc3RyaXBzdHlsZXMuYyAobmV3KQogICAgICArI2RlZmluZSBGTEFH UyAoQVZfT1BUX0ZMQUdfU1VCVElUTEVfUEFSQU0gfCBBVl9PUFRfRkxBR19GSUxURVJJTkdfUEFS QU0pCiAgICAgICsKICAgICAgK3N0YXRpYyBjb25zdCBBVk9wdGlvbiBzdHJpcHN0eWxlc19vcHRp b25zW10gPSB7CiAgICAgKysgICAgeyAia2VlcF9mbGFncyIsICJmbGFncyB0byBjb250cm9sIHdo aWNoIG92ZXJyaWRlIGNvZGVzIHRvIGtlZXAiLCBPRkZTRVQoa2VlcF9mbGFncyksIEFWX09QVF9U WVBFX0ZMQUdTLCB7IC5pNjQgPSBBU1NfU1BMSVRfVEVYVCB9LCAuZmxhZ3MgPSBGTEFHUywgLnVu aXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsrICAgICAgICB7ICJiYXNpYyIsICAgICAgICAgICJr ZWVwIHN0YXRpYyBzdHlsZSB0YWdzIG9ubHkiLCAgICAgICAgICAgICAudHlwZSA9IEFWX09QVF9U WVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfQkFTSUMgICAgICAgICAgfSwgIC5mbGFncz1G TEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsrICAgICAgICB7ICJhbGxfa25vd24i LCAgICAgICJrZWVwIGFsbCBrbm93biB0YWdzIiwgICAgICAgICAgICAgICAgICAgICAudHlwZSA9 IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfQUxMX0tOT1dOICAgICAgfSwg IC5mbGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsrICAgICAgICB7ICJ0 ZXh0IiwgICAgICAgICAgICJrZWVwIHRleHQgY29udGVudCIsICAgICAgICAgICAgICAgICAgICAg ICAudHlwZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfVEVYVCAgICAg ICAgICAgfSwgIC5mbGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsrICAg ICAgICB7ICJjb2xvciIsICAgICAgICAgICJrZWVwIGNvbG9yIHRhZ3MgKFxcYywgXFw8bj5jKSIs ICAgICAgICAgICAudHlwZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRf Q09MT1IgICAgICAgICAgfSwgIC5mbGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAog ICAgICsrICAgICAgICB7ICJhbHBoYSIsICAgICAgICAgICJrZWVwIGNvbG9yIGFscGhhIHRhZ3Mg KFxcYWxwaGEsIFxcPG4+YSkiLCAudHlwZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBB U1NfU1BMSVRfQUxQSEEgICAgICAgICAgfSwgIC5mbGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZs YWdzIiB9LAogICAgICsrICAgICAgICB7ICJmb250X25hbWUiLCAgICAgICJrZWVwIGZvbnQgbmFt ZSB0YWdzIChcXGZuKSIsICAgICAgICAgICAgICAudHlwZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7 IC5pNjQgPSBBU1NfU1BMSVRfRk9OVF9OQU1FICAgICAgfSwgIC5mbGFncz1GTEFHUywgLnVuaXQg PSAia2VlcGZsYWdzIiB9LAogICAgICsrICAgICAgICB7ICJmb250X3NpemUiLCAgICAgICJrZWVw IGZvbnQgc2l6ZSB0YWdzIChcXGZzKSIsICAgICAgICAgICAgICAudHlwZSA9IEFWX09QVF9UWVBF X0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfRk9OVF9TSVpFICAgICAgfSwgIC5mbGFncz1GTEFH UywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsrICAgICAgICB7ICJmb250X3NjYWxlIiwg ICAgICJrZWVwIGZvbnQgc2NhbGUgdGFncyAoXFxmc2N4LCBcXGZzY3kpIiwgICAudHlwZSA9IEFW X09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfRk9OVF9TQ0FMRSAgICAgfSwgIC5m bGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsrICAgICAgICB7ICJmb250 X3NwYWNpbmciLCAgICJrZWVwIGZvbnQgc3BhY2luZyB0YWdzIChcXGZzcCkiLCAgICAgICAgICAu dHlwZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfRk9OVF9TUEFDSU5H ICAgfSwgIC5mbGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsrICAgICAg ICB7ICJmb250X2NoYXJzZXQiLCAgICJrZWVwIGZvbnQgY2hhcnNldCB0YWdzIChcXGZlKSIsICAg ICAgICAgICAudHlwZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfRk9O VF9DSEFSU0VUICAgfSwgIC5mbGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAg ICsrICAgICAgICB7ICJmb250X2JvbGQiLCAgICAgICJrZWVwIGZvbnQgYm9sZCB0YWdzIChcXGIp IiwgICAgICAgICAgICAgICAudHlwZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBU1Nf U1BMSVRfRk9OVF9CT0xEICAgICAgfSwgIC5mbGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZsYWdz IiB9LAogICAgICsrICAgICAgICB7ICJmb250X2l0YWxpYyIsICAgICJrZWVwIGZvbnQgaXRhbGlj IHRhZ3MgKFxcaSkiLCAgICAgICAgICAgICAudHlwZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7IC5p NjQgPSBBU1NfU1BMSVRfRk9OVF9JVEFMSUMgICAgfSwgIC5mbGFncz1GTEFHUywgLnVuaXQgPSAi a2VlcGZsYWdzIiB9LAogICAgICsrICAgICAgICB7ICJmb250X3VuZGVybGluZSIsICJrZWVwIGZv bnQgdW5kZXJsaW5lIHRhZ3MgKFxcdSkiLCAgICAgICAgICAudHlwZSA9IEFWX09QVF9UWVBFX0NP TlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfRk9OVF9VTkRFUkxJTkUgfSwgIC5mbGFncz1GTEFHUywg LnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsrICAgICAgICB7ICJmb250X3N0cmlrZW91dCIs ICJrZWVwIGZvbnQgc3RyaWtlb3V0IHRhZ3MgKFxccykiLCAgICAgICAgICAudHlwZSA9IEFWX09Q VF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfRk9OVF9TVFJJS0VPVVQgfSwgIC5mbGFn cz1GTEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsrICAgICAgICB7ICJ0ZXh0X2Jv cmRlciIsICAgICJrZWVwIHRleHQgYm9yZGVyIHRhZ3MgKFxcYm9yZCkiLCAgICAgICAgICAudHlw ZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfVEVYVF9CT1JERVIgICAg fSwgIC5mbGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsrICAgICAgICB7 ICJ0ZXh0X3NoYWRvdyIsICAgICJrZWVwIHRleHQgc2hhZG93IHRhZ3MgKFxcc2hhZCkiLCAgICAg ICAgICAudHlwZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfVEVYVF9T SEFET1cgICAgfSwgIC5mbGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsr ICAgICAgICB7ICJ0ZXh0X3JvdGF0ZSIsICAgICJrZWVwIHRleHQgcm90YXRlIHRhZ3MgKFxcZnIp IiwgICAgICAgICAgICAudHlwZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BM SVRfVEVYVF9ST1RBVEUgICAgfSwgIC5mbGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9 LAogICAgICsrICAgICAgICB7ICJ0ZXh0X2JsdXIiLCAgICAgICJrZWVwIHRleHQgYmx1ciB0YWdz IChcXGJsdXIsIFxcYmUpIiwgICAgICAudHlwZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQg PSBBU1NfU1BMSVRfVEVYVF9CTFVSICAgICAgfSwgIC5mbGFncz1GTEFHUywgLnVuaXQgPSAia2Vl cGZsYWdzIiB9LAogICAgICsrICAgICAgICB7ICJ0ZXh0X3dyYXAiLCAgICAgICJrZWVwIHRleHQg d3JhcCB0YWdzIChcXHEpIiwgICAgICAgICAgICAgICAudHlwZSA9IEFWX09QVF9UWVBFX0NPTlNU LCB7IC5pNjQgPSBBU1NfU1BMSVRfVEVYVF9XUkFQICAgICAgfSwgIC5mbGFncz1GTEFHUywgLnVu aXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsrICAgICAgICB7ICJ0ZXh0X2FsaWduIiwgICAgICJr ZWVwIHRleHQgYWxpZ24gdGFncyAoXFxhLCBcXGFuKSIsICAgICAgICAudHlwZSA9IEFWX09QVF9U WVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfVEVYVF9BTElHTk1FTlQgfSwgIC5mbGFncz1G TEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsrICAgICAgICB7ICJyZXNldF9vdmVy cmlkZSIsICJrZWVwIG92ZXJyaWRlIHJlc2V0IHRhZ3MgKFxccikiLCAgICAgICAgICAudHlwZSA9 IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfQ0FOQ0VMTElORyAgICAgfSwg IC5mbGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsrICAgICAgICB7ICJt b3ZlIiwgICAgICAgICAgICJrZWVwIG1vdmUgdGFncyAoXFxtb3ZlKSIsICAgICAgICAgICAgICAg ICAudHlwZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfTU9WRSAgICAg ICAgICAgfSwgIC5mbGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsrICAg ICAgICB7ICJwb3MiLCAgICAgICAgICAgICJrZWVwIHBvc2l0aW9uIHRhZ3MgKFxccG9zKSIsICAg ICAgICAgICAgICAudHlwZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRf UE9TICAgICAgICAgICAgfSwgIC5mbGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAog ICAgICsrICAgICAgICB7ICJvcmlnaW4iLCAgICAgICAgICJrZWVwIG9yaWdpbiB0YWdzIChcXG9y ZykiLCAgICAgICAgICAgICAgICAudHlwZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBB U1NfU1BMSVRfT1JJR0lOICAgICAgICAgfSwgIC5mbGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZs YWdzIiB9LAogICAgICsrICAgICAgICB7ICJkcmF3IiwgICAgICAgICAgICJrZWVwIGRyYXdpbmcg dGFncyAoXFxwKSIsICAgICAgICAgICAgICAgICAudHlwZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7 IC5pNjQgPSBBU1NfU1BMSVRfRFJBVyAgICAgICAgICAgfSwgIC5mbGFncz1GTEFHUywgLnVuaXQg PSAia2VlcGZsYWdzIiB9LAogICAgICsrICAgICAgICB7ICJhbmltYXRlIiwgICAgICAgICJrZWVw IGFuaW1hdGlvbiB0YWdzIChcXHQpIiwgICAgICAgICAgICAgICAudHlwZSA9IEFWX09QVF9UWVBF X0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfQU5JTUFURSAgICAgICAgfSwgIC5mbGFncz1GTEFH UywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsrICAgICAgICB7ICJmYWRlIiwgICAgICAg ICAgICJrZWVwIGZhZGUgdGFncyAoXFxmYWQsIFxcZmFkZSkiLCAgICAgICAgICAudHlwZSA9IEFW X09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfRkFERSAgICAgICAgICAgfSwgIC5m bGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsrICAgICAgICB7ICJjbGlw IiwgICAgICAgICAgICJrZWVwIGNsaXAgdGFncyAoXFxjbGlwKSIsICAgICAgICAgICAgICAgICAu dHlwZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfQ0xJUCAgICAgICAg ICAgfSwgIC5mbGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAgICsrICAgICAg ICB7ICJ1bmtub3duIiwgICAgICAgICJrZWVwIHVua25vd24gdGFncyIsICAgICAgICAgICAgICAg ICAgICAgICAudHlwZSA9IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBU1NfU1BMSVRfVU5L Tk9XTiAgICAgICAgfSwgIC5mbGFncz1GTEFHUywgLnVuaXQgPSAia2VlcGZsYWdzIiB9LAogICAg ICArICAgIHsgInJlbW92ZV9hbmltYXRlZCIsICJyZW1vdmUgYW5pbWF0ZWQgdGV4dCAoZGVmYXVs dDogeWVzKSIsICAgT0ZGU0VUKHJlbW92ZV9hbmltYXRlZCksICBBVl9PUFRfVFlQRV9CT09MLCB7 Lmk2NCA9IDEgfSwgIDAsIDEsIEZMQUdTLCAwIH0sCiAgICAgLSsgICAgeyAic2VsZWN0X2xheWVy IiwgInByb2Nlc3MgYSBzcGVjaWZpYyBhc3MgbGF5ZXIgb25seSIsICAgT0ZGU0VUKHJlbW92ZV9h bmltYXRlZCksICBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gLTEgfSwgLTEsIElOVF9NQVgsIEZM QUdTLCAwIH0sCiAgICAgKysgICAgeyAic2VsZWN0X2xheWVyIiwgInByb2Nlc3MgYSBzcGVjaWZp YyBhc3MgbGF5ZXIgb25seSIsICAgT0ZGU0VUKHNlbGVjdF9sYXllciksICBBVl9PUFRfVFlQRV9J TlQsIHsuaTY0ID0gLTEgfSwgLTEsIElOVF9NQVgsIEZMQUdTLCAwIH0sCiAgICAgICsgICAgeyBO VUxMIH0sCiAgICAgICt9OwogICAgICArCiAxNzogIDI4ZDc1ZGM5ODIgISAxNzogIDZlNDg4ZTQ5 NWYgYXZmaWx0ZXIvc3BsaXRjYzogQWRkIHNwbGl0Y2MgZmlsdGVyIGZvciBjbG9zZWQgY2FwdGlv biBoYW5kbGluZwogICAgIEBAIGRvYy9maWx0ZXJzLnRleGk6IGZmbXBlZyAtaSBJTlBVVCAtZmls dGVyX2NvbXBsZXggInNob3dzcGVha2VyPWZvcm1hdD1jb2xvbjpzdHlsCiAgICAgIAogICAgICAg IyMgbGliYXZmaWx0ZXIvTWFrZWZpbGUgIyMKICAgICAgQEAgbGliYXZmaWx0ZXIvTWFrZWZpbGU6 IE9CSlMtJChDT05GSUdfTlVMTFNJTktfRklMVEVSKSAgICAgICAgICAgICAgICs9IHZzaW5rX251 bGxzaW5rLm8KICAgICArICMgc3VidGl0bGUgZmlsdGVycwogICAgICAgT0JKUy0kKENPTkZJR19D RU5TT1JfRklMVEVSKSAgICAgICAgICAgICAgICAgKz0gc2ZfdGV4dG1vZC5vCiAgICAgICBPQkpT LSQoQ09ORklHX1NIT1dfU1BFQUtFUl9GSUxURVIpICAgICAgICAgICArPSBzZl90ZXh0bW9kLm8K ICAgICAtIE9CSlMtJChDT05GSUdfVEVYVE1PRF9GSUxURVIpICAgICAgICAgICAgICAgICs9IHNm X3RleHRtb2QubwogICAgICArT0JKUy0kKENPTkZJR19TUExJVENDX0ZJTFRFUikgICAgICAgICAg ICAgICAgKz0gc2Zfc3BsaXRjYy5vCiAgICAgICBPQkpTLSQoQ09ORklHX1NUUklQU1RZTEVTX0ZJ TFRFUikgICAgICAgICAgICArPSBzZl9zdHJpcHN0eWxlcy5vCiAgICAgKyBPQkpTLSQoQ09ORklH X1RFWFRNT0RfRklMVEVSKSAgICAgICAgICAgICAgICArPSBzZl90ZXh0bW9kLm8KICAgICAgIAog ICAgIC0gIyBtdWx0aW1lZGlhIGZpbHRlcnMKICAgICAgCiAgICAgICAjIyBsaWJhdmZpbHRlci9h bGxmaWx0ZXJzLmMgIyMKICAgICAtQEAgbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jOiBleHRlcm4g Y29uc3QgQVZGaWx0ZXIgZmZfYXZmX3Nob3d3YXZlc3BpYzsKICAgICAtIGV4dGVybiBjb25zdCBB VkZpbHRlciBmZl92YWZfc3BlY3RydW1zeW50aDsKICAgICArQEAgbGliYXZmaWx0ZXIvYWxsZmls dGVycy5jOiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfYXZzcmNfbW92aWU7CiAgICAgKyAvKiBz dWJ0aXRsZSBmaWx0ZXJzICovCiAgICAgICBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfc2ZfY2Vu c29yOwogICAgICAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3NmX3Nob3dzcGVha2VyOwogICAg ICArZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3NmX3NwbGl0Y2M7CiAgICAgICBleHRlcm4gY29u c3QgQVZGaWx0ZXIgZmZfc2Zfc3RyaXBzdHlsZXM7CiAgICAgICBleHRlcm4gY29uc3QgQVZGaWx0 ZXIgZmZfc2ZfdGV4dG1vZDsKICAgICAtIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl9zdmZfZ3Jh cGhpY3N1YjJ2aWRlbzsKICAgICArIAogICAgICAKICAgICAgICMjIGxpYmF2ZmlsdGVyL3NmX3Nw bGl0Y2MuYyAobmV3KSAjIwogICAgICBAQAogMTg6ICA0MmQxZDFjODE5ICEgMTg6ICAxMDU3ZGZm N2RhIGF2ZmlsdGVyL2dyYXBoaWNzdWIydGV4dDogQWRkIG5ldyBncmFwaGljc3ViMnRleHQgZmls dGVyIChPQ1IpCiAgICAgQEAgbGliYXZmaWx0ZXIvTWFrZWZpbGU6IE9CSlMtJChDT05GSUdfR0JM VVJfRklMVEVSKSAgICAgICAgICAgICAgICAgICs9IHZmX2dibHVyLm8KICAgICAgIE9CSlMtJChD T05GSUdfR1JBWVdPUkxEX0ZJTFRFUikgICAgICAgICAgICAgICs9IHZmX2dyYXl3b3JsZC5vCiAg ICAgIAogICAgICAgIyMgbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jICMjCiAgICAgLUBAIGxpYmF2 ZmlsdGVyL2FsbGZpbHRlcnMuYzogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2F2Zl9zaG93d2F2 ZXM7CiAgICAgLSBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfYXZmX3Nob3d3YXZlc3BpYzsKICAg ICAtIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92YWZfc3BlY3RydW1zeW50aDsKICAgICArQEAg bGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jOiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfYXZzcmNf bW92aWU7CiAgICAgKyAKICAgICArIC8qIHN1YnRpdGxlIGZpbHRlcnMgKi8KICAgICAgIGV4dGVy biBjb25zdCBBVkZpbHRlciBmZl9zZl9jZW5zb3I7CiAgICAgICtleHRlcm4gY29uc3QgQVZGaWx0 ZXIgZmZfc2ZfZ3JhcGhpY3N1YjJ0ZXh0OwogICAgICAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZm X3NmX3Nob3dzcGVha2VyOwogICAgIEBAIGxpYmF2ZmlsdGVyL3NmX2dyYXBoaWNzdWIydGV4dC5j IChuZXcpCiAgICAgICsgICAgICAgICAgICAgICAgfQogICAgICArICAgICAgICAgICAgfQogICAg ICArCiAgICAgLSsgICAgICAgICAgICBpZiAocG9pbnRzaXplICE9IGN1cl9wb2ludHNpemUgJiYg cy0+cmVjb2duaXplICYgUkZMQUdTX0ZPTlRTSVpFKSB7CiAgICAgLSsgICAgICAgICAgICAgICAg YXZfbG9nKHMsIEFWX0xPR19ERUJVRywgInBvaW50c2l6ZSAtIHBvaW50c2l6ZTogJWRcbiIsIHBv aW50c2l6ZSk7CiAgICAgLSsgICAgICAgICAgICAgICAgaW5fY29kZSA9IHByaW50X2NvZGUoJnMt PmJ1ZmZlciwgaW5fY29kZSwgIlxcZnMlZCIsIChpbnQpKHBvaW50c2l6ZSAqIGZvbnRfZmFjdG9y KSk7CiAgICAgLSsgICAgICAgICAgICAgICAgY3VyX3BvaW50c2l6ZSA9IHBvaW50c2l6ZTsKICAg ICArKyAgICAgICAgICAgIGlmIChwb2ludHNpemUgPiAwICYmIHBvaW50c2l6ZSAhPSBjdXJfcG9p bnRzaXplICYmIHMtPnJlY29nbml6ZSAmIFJGTEFHU19GT05UU0laRSkgewogICAgICsrICAgICAg ICAgICAgICAgIGZsb2F0IGNoYW5nZV9mYWN0b3IgPSAoZmxvYXQpKEZGQUJTKHBvaW50c2l6ZSAt IGN1cl9wb2ludHNpemUpKSAvIEZGTUFYKHBvaW50c2l6ZSwgY3VyX3BvaW50c2l6ZSk7CiAgICAg KysKICAgICArKyAgICAgICAgICAgICAgICAvLyBBdm9pZCBzbWFsbCBjaGFuZ2VzIGR1ZSB0byBy ZWNvZ25pdGlvbiB2YXJpYW5jZQogICAgICsrICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VfZmFj dG9yID4gMC4xMmYpIHsKICAgICArKyAgICAgICAgICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xP R19ERUJVRywgInBvaW50c2l6ZSAtIHBvaW50c2l6ZTogJWRcbiIsIHBvaW50c2l6ZSk7CiAgICAg KysgICAgICAgICAgICAgICAgICAgIGluX2NvZGUgPSBwcmludF9jb2RlKCZzLT5idWZmZXIsIGlu X2NvZGUsICJcXGZzJWQiLCAoaW50KShwb2ludHNpemUgKiBmb250X2ZhY3RvcikpOwogICAgICsr ICAgICAgICAgICAgICAgICAgICBjdXJfcG9pbnRzaXplID0gcG9pbnRzaXplOwogICAgICsrICAg ICAgICAgICAgICAgIH0KICAgICAgKyAgICAgICAgICAgIH0KICAgICAgKwogICAgICArICAgICAg ICAgICAgaWYgKGlzX2l0YWxpYyAmJiAhY3VyX2lzX2l0YWxpYyAmJiBzLT5yZWNvZ25pemUgJiBS RkxBR1NfRklUQUxJQykKICAgICBAQCBsaWJhdmZpbHRlci9zZl9ncmFwaGljc3ViMnRleHQuYyAo bmV3KQogICAgICArCiAgICAgICsgICAgICAgICAgICBjb25zdCBpbnQgbGF5ZXIgPSBzLT5yZWNv Z25pemUgPyBpIDogMDsKICAgICAgKyAgICAgICAgICAgIGNoYXIgKnRtcCA9IGFyZWEtPmFzczsK ICAgICAtKyAgICAgICAgICAgIGFyZWEtPmFzcyA9IGF2cHJpdl9hc3NfZ2V0X2RpYWxvZ19leChz LT5yZWFkb3JkZXJfY291bnRlcisrLCBsYXllciwgIkRlZmF1bHQiLCBOVUxMLCAwLCAwLCBtYXJn aW5fdiwgdG1wKTsKICAgICArKyAgICAgICAgICAgIGFyZWEtPmFzcyA9IGF2cHJpdl9hc3NfZ2V0 X2RpYWxvZ19leChzLT5yZWFkb3JkZXJfY291bnRlcisrLCBsYXllciwgIkRlZmF1bHQiLCBOVUxM LCAwLCAwLCBtYXJnaW5fdiwgTlVMTCwgdG1wKTsKICAgICAgKyAgICAgICAgICAgIGF2X2ZyZWUo dG1wKTsKICAgICAgKyAgICAgICAgfQogICAgICArICAgIH0KIDE5OiAgNzA5NWU4YWEyNiAhIDE5 OiAgNGU4NWZiNWQyZiBhdmZpbHRlci9zdWJzY2FsZTogQWRkIGZpbHRlciBmb3Igc2NhbGluZyBh bmQvb3IgcmUtYXJyYW5naW5nIGdyYXBoaWNhbCBzdWJ0aXRsZXMKICAgICBAQCBkb2MvZmlsdGVy cy50ZXhpOiBTZXQgdGhlIHJlbmRlcmluZyBtYXJnaW4gaW4gcGl4ZWxzLgogICAgICAgQGNoYXB0 ZXIgTXVsdGltZWRpYSBGaWx0ZXJzCiAgICAgIAogICAgICAgIyMgbGliYXZmaWx0ZXIvTWFrZWZp bGUgIyMKICAgICAtQEAgbGliYXZmaWx0ZXIvTWFrZWZpbGU6IE9CSlMtJChDT05GSUdfU0hPV19T UEVBS0VSX0ZJTFRFUikgICAgICAgICAgICs9IHNmX3RleHRtb2QubwogICAgIC0gT0JKUy0kKENP TkZJR19URVhUTU9EX0ZJTFRFUikgICAgICAgICAgICAgICAgKz0gc2ZfdGV4dG1vZC5vCiAgICAg K0BAIGxpYmF2ZmlsdGVyL01ha2VmaWxlOiBPQkpTLSQoQ09ORklHX0NFTlNPUl9GSUxURVIpICAg ICAgICAgICAgICAgICArPSBzZl90ZXh0bW9kLm8KICAgICArIE9CSlMtJChDT05GSUdfU0hPV19T UEVBS0VSX0ZJTFRFUikgICAgICAgICAgICs9IHNmX3RleHRtb2QubwogICAgICAgT0JKUy0kKENP TkZJR19TUExJVENDX0ZJTFRFUikgICAgICAgICAgICAgICAgKz0gc2Zfc3BsaXRjYy5vCiAgICAg ICBPQkpTLSQoQ09ORklHX1NUUklQU1RZTEVTX0ZJTFRFUikgICAgICAgICAgICArPSBzZl9zdHJp cHN0eWxlcy5vCiAgICAgICtPQkpTLSQoQ09ORklHX1NVQlNDQUxFX0ZJTFRFUikgICAgICAgICAg ICAgICArPSBzZl9zdWJzY2FsZS5vCiAgICAgKyBPQkpTLSQoQ09ORklHX1RFWFRNT0RfRklMVEVS KSAgICAgICAgICAgICAgICArPSBzZl90ZXh0bW9kLm8KICAgICAgIAogICAgICAgIyBtdWx0aW1l ZGlhIGZpbHRlcnMKICAgICAtIE9CSlMtJChDT05GSUdfQUJJVFNDT1BFX0ZJTFRFUikgICAgICAg ICAgICAgICs9IGF2Zl9hYml0c2NvcGUubwogICAgICAKICAgICAgICMjIGxpYmF2ZmlsdGVyL2Fs bGZpbHRlcnMuYyAjIwogICAgICBAQCBsaWJhdmZpbHRlci9hbGxmaWx0ZXJzLmM6IGV4dGVybiBj b25zdCBBVkZpbHRlciBmZl9zZl9ncmFwaGljc3ViMnRleHQ7CiAgICAgQEAgbGliYXZmaWx0ZXIv YWxsZmlsdGVycy5jOiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfc2ZfZ3JhcGhpY3N1YjJ0ZXh0 OwogICAgICAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3NmX3N0cmlwc3R5bGVzOwogICAgICAr ZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3NmX3N1YnNjYWxlOwogICAgICAgZXh0ZXJuIGNvbnN0 IEFWRmlsdGVyIGZmX3NmX3RleHRtb2Q7CiAgICAgLSBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZf c3ZmX2dyYXBoaWNzdWIydmlkZW87CiAgICAgLSBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfc3Zm X3RleHRzdWIydmlkZW87CiAgICAgKyAKICAgICArIC8qIHRob3NlIGZpbHRlcnMgYXJlIHBhcnQg b2YgcHVibGljIG9yIGludGVybmFsIEFQSSwKICAgICAgCiAgICAgICAjIyBsaWJhdmZpbHRlci9z Zl9zdWJzY2FsZS5jIChuZXcpICMjCiAgICAgIEBACiAyMDogIDY5NzkzOTQ1MWUgISAyMDogIDg4 ZThhZGI4ODkgYXZmaWx0ZXIvc3ViZmVlZDogYWRkIHN1YnRpdGxlIGZlZWQgZmlsdGVyCiAgICAg QEAgQ29tbWl0IG1lc3NhZ2UKICAgICAgICAgIFNpZ25lZC1vZmYtYnk6IHNvZnR3b3JreiA8c29m dHdvcmt6QGhvdG1haWwuY29tPgogICAgICAKICAgICAgICMjIGxpYmF2ZmlsdGVyL01ha2VmaWxl ICMjCiAgICAgLUBAIGxpYmF2ZmlsdGVyL01ha2VmaWxlOiBPQkpTLSQoQ09ORklHX1RFWFRNT0Rf RklMVEVSKSAgICAgICAgICAgICAgICArPSBzZl90ZXh0bW9kLm8KICAgICArQEAgbGliYXZmaWx0 ZXIvTWFrZWZpbGU6IE9CSlMtJChDT05GSUdfQ0VOU09SX0ZJTFRFUikgICAgICAgICAgICAgICAg ICs9IHNmX3RleHRtb2QubwogICAgICsgT0JKUy0kKENPTkZJR19TSE9XX1NQRUFLRVJfRklMVEVS KSAgICAgICAgICAgKz0gc2ZfdGV4dG1vZC5vCiAgICAgICBPQkpTLSQoQ09ORklHX1NQTElUQ0Nf RklMVEVSKSAgICAgICAgICAgICAgICArPSBzZl9zcGxpdGNjLm8KICAgICAgIE9CSlMtJChDT05G SUdfU1RSSVBTVFlMRVNfRklMVEVSKSAgICAgICAgICAgICs9IHNmX3N0cmlwc3R5bGVzLm8KICAg ICAtIE9CSlMtJChDT05GSUdfU1VCU0NBTEVfRklMVEVSKSAgICAgICAgICAgICAgICs9IHNmX3N1 YnNjYWxlLm8KICAgICAgK09CSlMtJChDT05GSUdfU1VCRkVFRF9GSUxURVIpICAgICAgICAgICAg ICAgICs9IHNmX3N1YmZlZWQubwogICAgICsgT0JKUy0kKENPTkZJR19TVUJTQ0FMRV9GSUxURVIp ICAgICAgICAgICAgICAgKz0gc2Zfc3Vic2NhbGUubwogICAgICsgT0JKUy0kKENPTkZJR19URVhU TU9EX0ZJTFRFUikgICAgICAgICAgICAgICAgKz0gc2ZfdGV4dG1vZC5vCiAgICAgICAKICAgICAt ICMgbXVsdGltZWRpYSBmaWx0ZXJzCiAgICAgLSBPQkpTLSQoQ09ORklHX0FCSVRTQ09QRV9GSUxU RVIpICAgICAgICAgICAgICArPSBhdmZfYWJpdHNjb3BlLm8KICAgICAgCiAgICAgICAjIyBsaWJh dmZpbHRlci9hbGxmaWx0ZXJzLmMgIyMKICAgICAtQEAgbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5j OiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfc2Zfc2hvd3NwZWFrZXI7CiAgICAgK0BAIGxpYmF2 ZmlsdGVyL2FsbGZpbHRlcnMuYzogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3NmX2dyYXBoaWNz dWIydGV4dDsKICAgICArIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl9zZl9zaG93c3BlYWtlcjsK ICAgICAgIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl9zZl9zcGxpdGNjOwogICAgICAgZXh0ZXJu IGNvbnN0IEFWRmlsdGVyIGZmX3NmX3N0cmlwc3R5bGVzOwogICAgIC0gZXh0ZXJuIGNvbnN0IEFW RmlsdGVyIGZmX3NmX3N1YnNjYWxlOwogICAgICArZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3Nm X3N1YmZlZWQ7CiAgICAgKyBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfc2Zfc3Vic2NhbGU7CiAg ICAgICBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfc2ZfdGV4dG1vZDsKICAgICAtIGV4dGVybiBj b25zdCBBVkZpbHRlciBmZl9zdmZfZ3JhcGhpY3N1YjJ2aWRlbzsKICAgICAtIGV4dGVybiBjb25z dCBBVkZpbHRlciBmZl9zdmZfdGV4dHN1YjJ2aWRlbzsKICAgICArIAogICAgICAKICAgICAgICMj IGxpYmF2ZmlsdGVyL3NmX3N1YmZlZWQuYyAobmV3KSAjIwogICAgICBAQAogICAgIEBAIGxpYmF2 ZmlsdGVyL3NmX3N1YmZlZWQuYyAobmV3KQogICAgICArICAgICAgICBpZiAocHRzX2RpZmYgPD0g MCkgewogICAgICArICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX1dBUk5JTkcsICJUaGUg cHRzX2RpZmYgdG8gdGhlIHByZXZpb3VzIGZyYW1lIChpbmRleCAjJSJQUklkNjQiKSAgaXMgPD0g MDogJSJQUklkNjQiIG1zLiBUaGUgcHJldmlvdXMgZnJhbWUgZHVyYXRpb24gaXMgJSJQUklkNjQi IG1zLlxuIiwKICAgICAgKyAgICAgICAgICAgICAgICBpbmRleCwgYXZ0Yl90b19tcyhwdHNfZGlm ZiksICBhdnRiX3RvX21zKHByZXZpb3VzX2ZyYW1lLT5zdWJ0aXRsZV90aW1pbmcuZHVyYXRpb24p KTsKICAgICArKwogICAgICsrICAgICAgICAgICAgaWYgKHMtPmZpeF9vdmVybGFwKSB7CiAgICAg KysgICAgICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX1ZFUkJPU0UsICJSZW1vdmluZyBw cmV2aW91cyBmcmFtZVxuIik7CiAgICAgKysgICAgICAgICAgICAgICAgcHJldmlvdXNfZnJhbWUg PSBmZl9mcmFtZXF1ZXVlX3Rha2UoJnMtPmZpZm8pOwogICAgICsrICAgICAgICAgICAgICAgIHdo aWxlIChuYl9xdWV1ZWRfZnJhbWVzID4gMSkgewogICAgICsrICAgICAgICAgICAgICAgICAgICBm Zl9mcmFtZXF1ZXVlX2FkZCgmcy0+ZmlmbywgcHJldmlvdXNfZnJhbWUpOwogICAgICsrICAgICAg ICAgICAgICAgICAgICBwcmV2aW91c19mcmFtZSA9IGZmX2ZyYW1lcXVldWVfdGFrZSgmcy0+Zmlm byk7CiAgICAgKysgICAgICAgICAgICAgICAgICAgIG5iX3F1ZXVlZF9mcmFtZXMtLTsKICAgICAr KyAgICAgICAgICAgICAgICB9CiAgICAgKysgICAgICAgICAgICB9CiAgICAgICsgICAgICAgIH0K ICAgICAgKyAgICB9CiAgICAgICsKICAtOiAgLS0tLS0tLS0tLSA+IDIxOiAgYTk2YmI1Yzc4OCBh dmZpbHRlci90ZXh0MmdyYXBoaWNzdWI6IEFkZGVkIHRleHQyZ3JhcGhpY3N1YiBzdWJ0aXRsZSBm aWx0ZXIKICAtOiAgLS0tLS0tLS0tLSA+IDIyOiAgYzQ5MjJmODQ2NiBhdmZpbHRlci9zbnVsbCxz dHJpbTogQWRkIHNudWxsIGFuZCBzdHJpbSBmaWx0ZXJzCiAyMTogIDMyZTlhZjA4MDYgPSAyMzog IDg0OGY4NGQ1ZGMgYXZjb2RlYy9zdWJ0aXRsZXM6IE1pZ3JhdGUgc3VidGl0bGUgZW5jb2RlcnMg dG8gZnJhbWUtYmFzZWQgQVBJCiAyMjogIGZhMGI1YzIwNzcgISAyNDogIDI2NDVhMWE4NDIgZmZ0 b29scy9mZm1wZWc6IEludHJvZHVjZSBzdWJ0aXRsZSBmaWx0ZXJpbmcgYW5kIG5ldyBmcmFtZS1i YXNlZCBzdWJ0aXRsZSBlbmNvZGluZwogICAgIEBAIENvbW1pdCBtZXNzYWdlCiAgICAgICAgICAg IE92ZXJsYXkgcmVzdWx0cyBoYXZlIHNsaWdodGx5IGRpZmZlcmVudCBDUkNzIGR1ZSB0byBkaWZm ZXJlbnQKICAgICAgICAgICAgYmxlbmRpbmcgaW1wbGVtZW50YXRpb24KICAgICAgCiAgICAgKyAg ICAtIHN1Yi1zY2MKICAgICArICAgICAgVGhlIGZpcnN0IGVudHJ5IGlzIG5vIGxvbmdlciBpbiB0 aGUgb3V0cHV0IGJlY2F1c2UgaXQgaXMgYmVmb3JlCiAgICAgKyAgICAgIHRoZSBhY3R1YWwgc3Rh cnQgdGltZSBhbmQgdGhlIHN0cmltIGZpbHRlciByZW1vdmVzIHN1Y2ggZW50cmllcwogICAgICsg ICAgICBub3cgKGxpa2UgZm9yIHZpZGVvIGFuZCBhdWRpbykKICAgICArCiAgICAgICAgICBTaWdu ZWQtb2ZmLWJ5OiBzb2Z0d29ya3ogPHNvZnR3b3JrekBob3RtYWlsLmNvbT4KICAgICAgCiAgICAg ICAjIyBmZnRvb2xzL2ZmbXBlZy5jICMjCiAgICAgQEAgZmZ0b29scy9mZm1wZWcuYzogc3RhdGlj IGludCBpbml0X291dHB1dF9zdHJlYW0oT3V0cHV0U3RyZWFtICpvc3QsIEFWRnJhbWUgKmZyYW0K ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKICAgICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfQogICAgICtAQCBmZnRvb2xzL2ZmbXBlZy5j OiBzdGF0aWMgaW50IHRyYW5zY29kZV9pbml0KHZvaWQpCiAgICAgKyAgICAgZm9yIChpID0gMDsg aSA8IG5iX291dHB1dF9zdHJlYW1zOyBpKyspIHsKICAgICArICAgICAgICAgaWYgKCFvdXRwdXRf c3RyZWFtc1tpXS0+c3RyZWFtX2NvcHkgJiYKICAgICArICAgICAgICAgICAgIChvdXRwdXRfc3Ry ZWFtc1tpXS0+ZW5jX2N0eC0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8gfHwKICAg ICArLSAgICAgICAgICAgICBvdXRwdXRfc3RyZWFtc1tpXS0+ZW5jX2N0eC0+Y29kZWNfdHlwZSA9 PSBBVk1FRElBX1RZUEVfQVVESU8pKQogICAgICsrICAgICAgICAgICAgIG91dHB1dF9zdHJlYW1z W2ldLT5lbmNfY3R4LT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTyB8fAogICAgICsr ICAgICAgICAgICAgIG91dHB1dF9zdHJlYW1zW2ldLT5lbmNfY3R4LT5jb2RlY190eXBlID09IEFW TUVESUFfVFlQRV9TVUJUSVRMRSkpCiAgICAgKyAgICAgICAgICAgICBjb250aW51ZTsKICAgICAr IAogICAgICsgICAgICAgICByZXQgPSBpbml0X291dHB1dF9zdHJlYW1fd3JhcHBlcihvdXRwdXRf c3RyZWFtc1tpXSwgTlVMTCwgMCk7CiAgICAgIEBAIGZmdG9vbHMvZmZtcGVnLmM6IHN0YXRpYyBP dXRwdXRTdHJlYW0gKmNob29zZV9vdXRwdXQodm9pZCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXZfcmVzY2FsZV9xKG9zdC0+bGFzdF9tdXhfZHRzLCBvc3QtPnN0LT50aW1lX2Jhc2Us CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVl9USU1FX0JBU0Vf USk7CiAgICAgQEAgZmZ0b29scy9mZm1wZWdfZmlsdGVyLmM6IHN0YXRpYyB2b2lkIGluaXRfaW5w dXRfZmlsdGVyKEZpbHRlckdyYXBoICpmZywgQVZGaWx0ZXIKICAgICAgICAgICAgICAgICAgICAg ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgIGlmIChjaGVja19zdHJlYW1fc3BlY2lmaWVy KHMsIHMtPnN0cmVhbXNbaV0sICpwID09ICc6JyA/IHAgKyAxIDogcCkgPT0gMSkgewogICAgICAg ICAgICAgICAgICAgICAgIHN0ID0gcy0+c3RyZWFtc1tpXTsKICAgICArQEAgZmZ0b29scy9mZm1w ZWdfZmlsdGVyLmM6IHN0YXRpYyBpbnQgaW5zZXJ0X3RyaW0oaW50NjRfdCBzdGFydF90aW1lLCBp bnQ2NF90IGR1cmF0aW9uLAogICAgICsgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSAodHlwZSA9PSBB Vk1FRElBX1RZUEVfVklERU8pID8gInRyaW0iIDogImF0cmltIjsKICAgICArICAgICBpbnQgcmV0 ID0gMDsKICAgICArIAogICAgICsrICAgIHN3aXRjaCAodHlwZSkgewogICAgICsrICAgIGNhc2Ug QVZNRURJQV9UWVBFX1ZJREVPOgogICAgICsrICAgICAgICBuYW1lID0gInRyaW0iOwogICAgICsr ICAgICAgICBicmVhazsKICAgICArKyAgICBjYXNlIEFWTUVESUFfVFlQRV9BVURJTzoKICAgICAr KyAgICAgICAgbmFtZSA9ICJhdHJpbSI7CiAgICAgKysgICAgICAgIGJyZWFrOwogICAgICsrICAg IGNhc2UgQVZNRURJQV9UWVBFX1NVQlRJVExFOgogICAgICsrICAgICAgICBuYW1lID0gInN0cmlt IjsKICAgICArKyAgICAgICAgYnJlYWs7CiAgICAgKysgICAgZGVmYXVsdDoKICAgICArKyAgICAg ICAgYXZfbG9nKE5VTEwsIEFWX0xPR19FUlJPUiwgImluc2VydF90cmltOiBJbnZhbGlkIG1lZGlh IHR5cGU6ICVkXG4iLCB0eXBlKTsKICAgICArKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJ RERBVEE7CiAgICAgKysgICAgfQogICAgICsrCiAgICAgKyAgICAgaWYgKGR1cmF0aW9uID09IElO VDY0X01BWCAmJiBzdGFydF90aW1lID09IEFWX05PUFRTX1ZBTFVFKQogICAgICsgICAgICAgICBy ZXR1cm4gMDsKICAgICArIAogICAgICBAQCBmZnRvb2xzL2ZmbXBlZ19maWx0ZXIuYzogc3RhdGlj IGludCBpbnNlcnRfZmlsdGVyKEFWRmlsdGVyQ29udGV4dCAqKmxhc3RfZmlsdGVyLCBpbnQgKnBh ZF9pZHgsCiAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICB9CiAgICAgQEAgZmZ0b29scy9mZm1w ZWdfZmlsdGVyLmM6IHN0YXRpYyBpbnQgaW5zZXJ0X2ZpbHRlcihBVkZpbHRlckNvbnRleHQgKips YXN0X2ZpbHRlciwKICAgICAgK3N0YXRpYyBpbnQgY29uZmlndXJlX291dHB1dF9zdWJ0aXRsZV9m aWx0ZXIoRmlsdGVyR3JhcGggKmZnLCBPdXRwdXRGaWx0ZXIgKm9maWx0ZXIsIEFWRmlsdGVySW5P dXQgKm91dCkKICAgICAgK3sKICAgICAgKyAgICBPdXRwdXRTdHJlYW0gKm9zdCA9IG9maWx0ZXIt Pm9zdDsKICAgICArKyAgICBPdXRwdXRGaWxlICAgICpvZiA9IG91dHB1dF9maWxlc1tvc3QtPmZp bGVfaW5kZXhdOwogICAgICArICAgIEFWRmlsdGVyQ29udGV4dCAqbGFzdF9maWx0ZXIgPSBvdXQt PmZpbHRlcl9jdHg7CiAgICAgICsgICAgaW50IHBhZF9pZHggPSBvdXQtPnBhZF9pZHg7CiAgICAg ICsgICAgaW50IHJldDsKICAgICBAQCBmZnRvb2xzL2ZmbXBlZ19maWx0ZXIuYzogc3RhdGljIGlu dCBpbnNlcnRfZmlsdGVyKEFWRmlsdGVyQ29udGV4dCAqKmxhc3RfZmlsdGVyLAogICAgICArICAg ICAgICByZXR1cm4gcmV0OwogICAgICArICAgIH0KICAgICAgKwogICAgIC0rICAgIC8vLy9zbnBy aW50ZihuYW1lLCBzaXplb2YobmFtZSksICJ0cmltX291dF8lZF8lZCIsCiAgICAgLSsgICAgLy8v LyAgICAgICAgIG9zdC0+ZmlsZV9pbmRleCwgb3N0LT5pbmRleCk7CiAgICAgLSsgICAgLy8vL3Jl dCA9IGluc2VydF90cmltKG9mLT5zdGFydF90aW1lLCBvZi0+cmVjb3JkaW5nX3RpbWUsCiAgICAg LSsgICAgLy8vLyAgICAgICAgICAgICAgICAgICZsYXN0X2ZpbHRlciwgJnBhZF9pZHgsIG5hbWUp OwogICAgIC0rICAgIC8vLy9pZiAocmV0IDwgMCkKICAgICAtKyAgICAvLy8vICAgIHJldHVybiBy ZXQ7CiAgICAgKysgICAgc25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCAidHJpbV9vdXRfJWRf JWQiLAogICAgICsrICAgICAgICAgICAgIG9zdC0+ZmlsZV9pbmRleCwgb3N0LT5pbmRleCk7CiAg ICAgKysgICAgcmV0ID0gaW5zZXJ0X3RyaW0ob2YtPnN0YXJ0X3RpbWUsIG9mLT5yZWNvcmRpbmdf dGltZSwKICAgICArKyAgICAgICAgICAgICAgICAgICAgICAmbGFzdF9maWx0ZXIsICZwYWRfaWR4 LCBuYW1lKTsKICAgICArKyAgICBpZiAocmV0IDwgMCkKICAgICArKyAgICAgICAgcmV0dXJuIHJl dDsKICAgICAgKwogICAgICArICAgIC8vLy9vc3QtPnN0LT5jb2RlY3Bhci0+Y29kZWNfdGFnID0g TUtUQUcoJ2EnLCAncycsICdzJywgJ3MnKTsKICAgICAgKwogICAgIEBAIGZmdG9vbHMvZmZtcGVn X2ZpbHRlci5jOiB2b2lkIGNoZWNrX2ZpbHRlcl9vdXRwdXRzKHZvaWQpCiAgICAgICsgICAgQVZG aWx0ZXJDb250ZXh0ICpsYXN0X2ZpbHRlcjsKICAgICAgKyAgICBjb25zdCBBVkZpbHRlciAqYnVm ZmVyX2ZpbHQgPSBhdmZpbHRlcl9nZXRfYnlfbmFtZSgic2J1ZmZlciIpOwogICAgICArICAgIElu cHV0U3RyZWFtICppc3QgPSBpZmlsdGVyLT5pc3Q7CiAgICAgKysgICAgSW5wdXRGaWxlICAgICAq ZiA9IGlucHV0X2ZpbGVzW2lzdC0+ZmlsZV9pbmRleF07CiAgICAgICsgICAgQVZCUHJpbnQgYXJn czsKICAgICAgKyAgICBjaGFyIG5hbWVbMjU1XTsKICAgICAgKyAgICBpbnQgcmV0LCBwYWRfaWR4 ID0gMDsKICAgICAgKyAgICBpbnQgdywgaDsKICAgICArKyAgICBpbnQ2NF90IHRzb2Zmc2V0ID0g MDsKICAgICAgKyAgICBBVkJ1ZmZlclNyY1BhcmFtZXRlcnMgKnBhciA9IGF2X2J1ZmZlcnNyY19w YXJhbWV0ZXJzX2FsbG9jKCk7CiAgICAgICsgICAgZW51bSBBVk1lZGlhVHlwZSBtZWRpYV90eXBl OwogICAgICArCiAgICAgQEAgZmZ0b29scy9mZm1wZWdfZmlsdGVyLmM6IHZvaWQgY2hlY2tfZmls dGVyX291dHB1dHModm9pZCkKICAgICAgLSAgICAgICAgICAgIGlmIChhdmYtPnN0cmVhbXNbaV0t PmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykgewogICAgICAtICAg ICAgICAgICAgICAgIHcgPSBGRk1BWCh3LCBhdmYtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT53aWR0 aCk7CiAgICAgIC0gICAgICAgICAgICAgICAgaCA9IEZGTUFYKGgsIGF2Zi0+c3RyZWFtc1tpXS0+ Y29kZWNwYXItPmhlaWdodCk7CiAgICAgLS0gICAgICAgICAgICB9CiAgICAgLS0gICAgICAgIH0K ICAgICAtLSAgICAgICAgaWYgKCEodyAmJiBoKSkgewogICAgIC0tICAgICAgICAgICAgdyA9IEZG TUFYKHcsIDcyMCk7CiAgICAgLS0gICAgICAgICAgICBoID0gRkZNQVgoaCwgNTc2KTsKICAgICAt LSAgICAgICAgfQogICAgIC0tICAgICAgICBhdl9sb2coYXZmLCBBVl9MT0dfSU5GTywgInN1YjJ2 aWRlbzogdXNpbmcgJWR4JWQgY2FudmFzXG4iLCB3LCBoKTsKICAgICAgKyAgICAgICAgdyA9IGlz dC0+ZGVjX2N0eC0+d2lkdGg7CiAgICAgICsgICAgICAgIGggPSBpc3QtPmRlY19jdHgtPmhlaWdo dDsKICAgICAgKyAgICB9CiAgICAgQEAgZmZ0b29scy9mZm1wZWdfZmlsdGVyLmM6IHZvaWQgY2hl Y2tfZmlsdGVyX291dHB1dHModm9pZCkKICAgICAgKyAgICAgICAgdyA9IGFzcy0+c2NyaXB0X2lu Zm8ucGxheV9yZXNfeDsKICAgICAgKyAgICAgICAgaCA9IGFzcy0+c2NyaXB0X2luZm8ucGxheV9y ZXNfeTsKICAgICAgKyAgICAgICAgYXZwcml2X2Fzc19zcGxpdF9mcmVlKGFzc19jdHgpOwogICAg IC0gICAgIH0KICAgICAtLSAgICBpc3QtPnN1YjJ2aWRlby53ID0gaWZpbHRlci0+d2lkdGggID0g dzsKICAgICAtLSAgICBpc3QtPnN1YjJ2aWRlby5oID0gaWZpbHRlci0+aGVpZ2h0ID0gaDsKICAg ICAtIAogICAgIC0tICAgIGlmaWx0ZXItPndpZHRoICA9IGlzdC0+ZGVjX2N0eC0+d2lkdGggID8g aXN0LT5kZWNfY3R4LT53aWR0aCAgOiBpc3QtPnN1YjJ2aWRlby53OwogICAgIC0tICAgIGlmaWx0 ZXItPmhlaWdodCA9IGlzdC0+ZGVjX2N0eC0+aGVpZ2h0ID8gaXN0LT5kZWNfY3R4LT5oZWlnaHQg OiBpc3QtPnN1YjJ2aWRlby5oOwogICAgICsrICAgIH0KICAgICArKwogICAgICArICAgIGlzdC0+ c3VidGl0bGVfa2lja29mZi53ID0gdzsKICAgICAgKyAgICBpc3QtPnN1YnRpdGxlX2tpY2tvZmYu aCA9IGg7CiAgICAgICsgICAgYXZfbG9nKGlmaWx0ZXIsIEFWX0xPR19JTkZPLCAic3VidGl0bGUg aW5wdXQgZmlsdGVyOiBkZWNvZGluZyBzaXplICVkeCVkXG4iLCBpc3QtPnN1YnRpdGxlX2tpY2tv ZmYudywgaXN0LT5zdWJ0aXRsZV9raWNrb2ZmLmgpOwogICAgIC0gCiAgICAgLS0gICAgLyogcmVj dGFuZ2xlcyBhcmUgQVZfUElYX0ZNVF9QQUw4LCBidXQgd2UgaGF2ZSBubyBndWFyYW50ZWUgdGhh dCB0aGUKICAgICAtLSAgICAgICBwYWxldHRlcyBmb3IgYWxsIHJlY3RhbmdsZXMgYXJlIGlkZW50 aWNhbCBvciBjb21wYXRpYmxlICovCiAgICAgLS0gICAgaWZpbHRlci0+Zm9ybWF0ID0gQVZfUElY X0ZNVF9SR0IzMjsKICAgICArKwogICAgICArICAgIGlmaWx0ZXItPndpZHRoID0gdzsKICAgICAg KyAgICBpZmlsdGVyLT5oZWlnaHQgPSBoOwogICAgICArICAgIGlzdC0+ZGVjX2N0eC0+d2lkdGgg PSB3OwogICAgICArICAgIGlzdC0+ZGVjX2N0eC0+aGVpZ2h0ID0gaDsKICAgICAtIAogICAgIC0t ICAgIGlzdC0+c3ViMnZpZGVvLmZyYW1lID0gYXZfZnJhbWVfYWxsb2MoKTsKICAgICAtLSAgICBp ZiAoIWlzdC0+c3ViMnZpZGVvLmZyYW1lKQogICAgIC0tICAgICAgICByZXR1cm4gQVZFUlJPUihF Tk9NRU0pOwogICAgIC0tICAgIGlzdC0+c3ViMnZpZGVvLmxhc3RfcHRzID0gSU5UNjRfTUlOOwog ICAgIC0tICAgIGlzdC0+c3ViMnZpZGVvLmVuZF9wdHMgID0gSU5UNjRfTUlOOwogICAgICsrCiAg ICAgICsgICAgaXN0LT5zdWJ0aXRsZV9raWNrb2ZmLmxhc3RfcHRzID0gSU5UNjRfTUlOOwogICAg ICArCiAgICAgICsgICAgc25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCAiZ3JhcGggJWQgc3Vi dGl0bGUgaW5wdXQgZnJvbSBzdHJlYW0gJWQ6JWQiLCBmZy0+aW5kZXgsCiAgICAgQEAgZmZ0b29s cy9mZm1wZWdfZmlsdGVyLmM6IHZvaWQgY2hlY2tfZmlsdGVyX291dHB1dHModm9pZCkKICAgICAg KyAgICBpZiAoKHJldCA9IGF2ZmlsdGVyX2dyYXBoX2NyZWF0ZV9maWx0ZXIoJmlmaWx0ZXItPmZp bHRlciwgYnVmZmVyX2ZpbHQsIG5hbWUsCiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFyZ3Muc3RyLCBOVUxMLCBmZy0+Z3JhcGgpKSA8IDApCiAgICAg ICsgICAgICAgIGdvdG8gZmFpbDsKICAgICAtIAogICAgIC0tICAgIC8qIHN1YjJ2aWRlbyBzdHJ1 Y3R1cmUgaGFzIGJlZW4gKHJlLSlpbml0aWFsaXplZC4KICAgICAtLSAgICAgICBNYXJrIGl0IGFz IHN1Y2ggc28gdGhhdCB0aGUgc3lzdGVtIHdpbGwgYmUKICAgICAtLSAgICAgICBpbml0aWFsaXpl ZCB3aXRoIHRoZSBmaXJzdCByZWNlaXZlZCBoZWFydGJlYXQuICovCiAgICAgLS0gICAgaXN0LT5z dWIydmlkZW8uaW5pdGlhbGl6ZSA9IDE7CiAgICAgKysKICAgICAgKyAgICBwYXItPmh3X2ZyYW1l c19jdHggPSBpZmlsdGVyLT5od19mcmFtZXNfY3R4OwogICAgICArICAgIHBhci0+Zm9ybWF0ID0g aWZpbHRlci0+Zm9ybWF0OwogICAgICArICAgIHBhci0+d2lkdGggPSBpZmlsdGVyLT53aWR0aDsK ICAgICBAQCBmZnRvb2xzL2ZmbXBlZ19maWx0ZXIuYzogdm9pZCBjaGVja19maWx0ZXJfb3V0cHV0 cyh2b2lkKQogICAgICArICAgICAgICAgICAgICAgICAgICBzdWJzY2FsZV9oID0gaW5wdXQtPmhl aWdodDsKICAgICAgKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICsgICAgICAgICAg ICAgICAgfQogICAgIC0rICAgICAgICAgICAgfQogICAgIC0rICAgICAgICB9CiAgICAgLSsKICAg ICArICAgICAgICAgICAgIH0KICAgICArICAgICAgICAgfQogICAgICstICAgICAgICBpZiAoISh3 ICYmIGgpKSB7CiAgICAgKy0gICAgICAgICAgICB3ID0gRkZNQVgodywgNzIwKTsKICAgICArLSAg ICAgICAgICAgIGggPSBGRk1BWChoLCA1NzYpOwogICAgICstICAgICAgICB9CiAgICAgKy0gICAg ICAgIGF2X2xvZyhhdmYsIEFWX0xPR19JTkZPLCAic3ViMnZpZGVvOiB1c2luZyAlZHglZCBjYW52 YXNcbiIsIHcsIGgpOwogICAgICstICAgIH0KICAgICArLSAgICBpc3QtPnN1YjJ2aWRlby53ID0g aWZpbHRlci0+d2lkdGggID0gdzsKICAgICArLSAgICBpc3QtPnN1YjJ2aWRlby5oID0gaWZpbHRl ci0+aGVpZ2h0ID0gaDsKICAgICArIAogICAgICstICAgIGlmaWx0ZXItPndpZHRoICA9IGlzdC0+ ZGVjX2N0eC0+d2lkdGggID8gaXN0LT5kZWNfY3R4LT53aWR0aCAgOiBpc3QtPnN1YjJ2aWRlby53 OwogICAgICstICAgIGlmaWx0ZXItPmhlaWdodCA9IGlzdC0+ZGVjX2N0eC0+aGVpZ2h0ID8gaXN0 LT5kZWNfY3R4LT5oZWlnaHQgOiBpc3QtPnN1YjJ2aWRlby5oOwogICAgICArICAgICAgICBpZiAo c3Vic2NhbGVfdyAmJiBzdWJzY2FsZV9oKSB7CiAgICAgICsgICAgICAgICAgICBjaGFyIHN1YnNj YWxlX3BhcmFtc1s2NF07CiAgICAgICsgICAgICAgICAgICBzbnByaW50ZihzdWJzY2FsZV9wYXJh bXMsIHNpemVvZihzdWJzY2FsZV9wYXJhbXMpLCAidz0lZDpoPSVkIiwgc3Vic2NhbGVfdywgc3Vi c2NhbGVfaCk7CiAgICAgQEAgZmZ0b29scy9mZm1wZWdfZmlsdGVyLmM6IHZvaWQgY2hlY2tfZmls dGVyX291dHB1dHModm9pZCkKICAgICAgKyAgICAgICAgICAgIGlmIChyZXQgPCAwKQogICAgICAr ICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICsgICAgICAgIH0KICAgICAtKwogICAg ICsgCiAgICAgKy0gICAgLyogcmVjdGFuZ2xlcyBhcmUgQVZfUElYX0ZNVF9QQUw4LCBidXQgd2Ug aGF2ZSBubyBndWFyYW50ZWUgdGhhdCB0aGUKICAgICArLSAgICAgICBwYWxldHRlcyBmb3IgYWxs IHJlY3RhbmdsZXMgYXJlIGlkZW50aWNhbCBvciBjb21wYXRpYmxlICovCiAgICAgKy0gICAgaWZp bHRlci0+Zm9ybWF0ID0gQVZfUElYX0ZNVF9SR0IzMjsKICAgICAgKyAgICAgICAgYXZfbG9nKE5V TEwsIEFWX0xPR19JTkZPLCAiQXV0by1pbnNlcnRpbmcgZ3JhcGhpY3N1YjJ2aWRlbyBmaWx0ZXJc biIpOwogICAgICArICAgICAgICByZXQgPSBpbnNlcnRfZmlsdGVyKCZsYXN0X2ZpbHRlciwgJnBh ZF9pZHgsICJncmFwaGljc3ViMnZpZGVvIiwgTlVMTCk7CiAgICAgICsgICAgICAgIGlmIChyZXQg PCAwKQogICAgICArICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgKyAgICB9CiAgICAgLSsK ICAgICArIAogICAgICstICAgIGlzdC0+c3ViMnZpZGVvLmZyYW1lID0gYXZfZnJhbWVfYWxsb2Mo KTsKICAgICArLSAgICBpZiAoIWlzdC0+c3ViMnZpZGVvLmZyYW1lKQogICAgICstICAgICAgICBy ZXR1cm4gQVZFUlJPUihFTk9NRU0pOwogICAgICstICAgIGlzdC0+c3ViMnZpZGVvLmxhc3RfcHRz ID0gSU5UNjRfTUlOOwogICAgICstICAgIGlzdC0+c3ViMnZpZGVvLmVuZF9wdHMgID0gSU5UNjRf TUlOOwogICAgICsrICAgIGlmIChjb3B5X3RzKSB7CiAgICAgKysgICAgICAgIHRzb2Zmc2V0ID0g Zi0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSA/IDAgOiBmLT5zdGFydF90aW1lOwogICAg ICsrICAgICAgICBpZiAoIXN0YXJ0X2F0X3plcm8gJiYgZi0+Y3R4LT5zdGFydF90aW1lICE9IEFW X05PUFRTX1ZBTFVFKQogICAgICsrICAgICAgICAgICAgdHNvZmZzZXQgKz0gZi0+Y3R4LT5zdGFy dF90aW1lOwogICAgICsrICAgIH0KICAgICArKyAgICByZXQgPSBpbnNlcnRfdHJpbSgoKGYtPnN0 YXJ0X3RpbWUgPT0gQVZfTk9QVFNfVkFMVUUpIHx8ICFmLT5hY2N1cmF0ZV9zZWVrKSA/CiAgICAg KysgICAgICAgICAgICAgICAgICAgICAgQVZfTk9QVFNfVkFMVUUgOiB0c29mZnNldCwgZi0+cmVj b3JkaW5nX3RpbWUsCiAgICAgKysgICAgICAgICAgICAgICAgICAgICAgJmxhc3RfZmlsdGVyLCAm cGFkX2lkeCwgbmFtZSk7CiAgICAgKysgICAgaWYgKHJldCA8IDApCiAgICAgKysgICAgICAgIHJl dHVybiByZXQ7CiAgICAgKyAKICAgICArLSAgICAvKiBzdWIydmlkZW8gc3RydWN0dXJlIGhhcyBi ZWVuIChyZS0paW5pdGlhbGl6ZWQuCiAgICAgKy0gICAgICAgTWFyayBpdCBhcyBzdWNoIHNvIHRo YXQgdGhlIHN5c3RlbSB3aWxsIGJlCiAgICAgKy0gICAgICAgaW5pdGlhbGl6ZWQgd2l0aCB0aGUg Zmlyc3QgcmVjZWl2ZWQgaGVhcnRiZWF0LiAqLwogICAgICstICAgIGlzdC0+c3ViMnZpZGVvLmlu aXRpYWxpemUgPSAxOwogICAgICArICAgIGlmICgocmV0ID0gYXZmaWx0ZXJfbGluayhsYXN0X2Zp bHRlciwgMCwgaW4tPmZpbHRlcl9jdHgsIGluLT5wYWRfaWR4KSkgPCAwKQogICAgICArICAgICAg ICByZXR1cm4gcmV0OwogICAgICAgCiAgICAgQEAgZmZ0b29scy9mZm1wZWdfZmlsdGVyLmM6IHN0 YXRpYyBpbnQgY29uZmlndXJlX2lucHV0X3ZpZGVvX2ZpbHRlcihGaWx0ZXJHcmFwaCAqZmcKICAg ICAgICAgICBpbnQ2NF90IHRzb2Zmc2V0ID0gMDsKICAgICAgLSAgICBBVkJ1ZmZlclNyY1BhcmFt ZXRlcnMgKnBhciA9IGF2X2J1ZmZlcnNyY19wYXJhbWV0ZXJzX2FsbG9jKCk7CiAgICAgICsgICAg QVZCdWZmZXJTcmNQYXJhbWV0ZXJzICpwYXI7CiAgICAgLSAKICAgICArKwogICAgICArICAgIGlm IChpc3QtPmRlY19jdHgtPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1NVQlRJVExFKSB7CiAg ICAgICsgICAgICAgIC8vIEF1dG9tYXRpY2FsbHkgaW5zZXJ0IGNvbnZlcnNpb24gZmlsdGVyIHRv IHJldGFpbiBjb21wYXRpYmlsaXR5CiAgICAgICsgICAgICAgIC8vIHdpdGggc3ViMnZpZGVvIGNv bW1hbmQgbGluZXMKICAgICAgKyAgICAgICAgcmV0dXJuIGNvbmZpZ3VyZV9pbnB1dF9zdWJ0aXRs ZV9maWx0ZXIoZmcsIGlmaWx0ZXIsIGluKTsKICAgICAgKyAgICB9CiAgICAgLSsKICAgICArIAog ICAgICArICAgIHBhciA9IGF2X2J1ZmZlcnNyY19wYXJhbWV0ZXJzX2FsbG9jKCk7CiAgICAgICAg ICAgaWYgKCFwYXIpCiAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAgICAg QEAgZmZ0b29scy9mZm1wZWdfb3B0LmM6IHN0YXRpYyB2b2lkIGFkZF9pbnB1dF9zdHJlYW1zKE9w dGlvbnNDb250ZXh0ICpvLCBBVkZvcm1hdEMKICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICAgIGNhc2UgQVZNRURJQV9UWVBFX0FUVEFDSE1FTlQ6 CiAgICAgK0BAIGZmdG9vbHMvZmZtcGVnX29wdC5jOiBzdGF0aWMgY2hhciAqZ2V0X29zdF9maWx0 ZXJzKE9wdGlvbnNDb250ZXh0ICpvLCBBVkZvcm1hdENvbnRleHQgKm9jLAogICAgICsgCiAgICAg KyAgICAgaWYgKG9zdC0+ZmlsdGVyc19zY3JpcHQpCiAgICAgKyAgICAgICAgIHJldHVybiByZWFk X2ZpbGUob3N0LT5maWx0ZXJzX3NjcmlwdCk7CiAgICAgKy0gICAgZWxzZSBpZiAob3N0LT5maWx0 ZXJzKQogICAgICsrICAgIGlmIChvc3QtPmZpbHRlcnMpCiAgICAgKyAgICAgICAgIHJldHVybiBh dl9zdHJkdXAob3N0LT5maWx0ZXJzKTsKICAgICArIAogICAgICstICAgIHJldHVybiBhdl9zdHJk dXAoc3QtPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTyA/CiAgICAg Ky0gICAgICAgICAgICAgICAgICAgICAibnVsbCIgOiAiYW51bGwiKTsKICAgICArKyAgICBzd2l0 Y2ggKHN0LT5jb2RlY3Bhci0+Y29kZWNfdHlwZSkgewogICAgICsrICAgIGNhc2UgQVZNRURJQV9U WVBFX1ZJREVPOiByZXR1cm4gYXZfc3RyZHVwKCJudWxsIik7CiAgICAgKysgICAgY2FzZSBBVk1F RElBX1RZUEVfQVVESU86IHJldHVybiBhdl9zdHJkdXAoImFudWxsIik7CiAgICAgKysgICAgY2Fz ZSBBVk1FRElBX1RZUEVfU1VCVElUTEU6IHJldHVybiBhdl9zdHJkdXAoInNudWxsIik7CiAgICAg KysgICAgZGVmYXVsdDogYXZfYXNzZXJ0MCgwKTsgcmV0dXJuIE5VTEw7CiAgICAgKysgICAgfQog ICAgICsgfQogICAgICsgCiAgICAgKyBzdGF0aWMgdm9pZCBjaGVja19zdHJlYW1jb3B5X2ZpbHRl cnMoT3B0aW9uc0NvbnRleHQgKm8sIEFWRm9ybWF0Q29udGV4dCAqb2MsCiAgICAgK0BAIGZmdG9v bHMvZmZtcGVnX29wdC5jOiBzdGF0aWMgT3V0cHV0U3RyZWFtICpuZXdfc3VidGl0bGVfc3RyZWFt KE9wdGlvbnNDb250ZXh0ICpvLCBBVkZvcm1hdENvbnRleHQgKm9jLAogICAgICsgCiAgICAgKyAg ICAgc3VidGl0bGVfZW5jLT5jb2RlY190eXBlID0gQVZNRURJQV9UWVBFX1NVQlRJVExFOwogICAg ICsgCiAgICAgKysgICAgTUFUQ0hfUEVSX1NUUkVBTV9PUFQoZmlsdGVyX3NjcmlwdHMsIHN0ciwg b3N0LT5maWx0ZXJzX3NjcmlwdCwgb2MsIHN0KTsKICAgICArKyAgICBNQVRDSF9QRVJfU1RSRUFN X09QVChmaWx0ZXJzLCAgICAgICAgc3RyLCBvc3QtPmZpbHRlcnMsICAgICAgICBvYywgc3QpOwog ICAgICsrCiAgICAgKyAgICAgaWYgKCFvc3QtPnN0cmVhbV9jb3B5KSB7CiAgICAgKyAgICAgICAg IGNoYXIgKmZyYW1lX3NpemUgPSBOVUxMOwogICAgICsgCiAgICAgK0BAIGZmdG9vbHMvZmZtcGVn X29wdC5jOiBzdGF0aWMgT3V0cHV0U3RyZWFtICpuZXdfc3VidGl0bGVfc3RyZWFtKE9wdGlvbnND b250ZXh0ICpvLCBBVkZvcm1hdENvbnRleHQgKm9jLAogICAgICsgICAgICAgICAgICAgYXZfbG9n KE5VTEwsIEFWX0xPR19GQVRBTCwgIkludmFsaWQgZnJhbWUgc2l6ZTogJXMuXG4iLCBmcmFtZV9z aXplKTsKICAgICArICAgICAgICAgICAgIGV4aXRfcHJvZ3JhbSgxKTsKICAgICArICAgICAgICAg fQogICAgICsrCiAgICAgKysgICAgICAgIG9zdC0+YXZmaWx0ZXIgPSBnZXRfb3N0X2ZpbHRlcnMo bywgb2MsIG9zdCk7CiAgICAgKysgICAgICAgIGlmICghb3N0LT5hdmZpbHRlcikKICAgICArKyAg ICAgICAgICAgIGV4aXRfcHJvZ3JhbSgxKTsKICAgICArICAgICB9CiAgICAgKyAKICAgICArICAg ICByZXR1cm4gb3N0OwogICAgICBAQCBmZnRvb2xzL2ZmbXBlZ19vcHQuYzogc3RhdGljIHZvaWQg aW5pdF9vdXRwdXRfZmlsdGVyKE91dHB1dEZpbHRlciAqb2ZpbHRlciwgT3B0aW9uc0NvbnRleHQg Km8sCiAgICAgICAgICAgc3dpdGNoIChvZmlsdGVyLT50eXBlKSB7CiAgICAgICAgICAgY2FzZSBB Vk1FRElBX1RZUEVfVklERU86IG9zdCA9IG5ld192aWRlb19zdHJlYW0obywgb2MsIC0xKTsgYnJl YWs7CiAgICAgQEAgZmZ0b29scy9mZm1wZWdfb3B0LmM6IHN0YXRpYyB2b2lkIGluaXRfb3V0cHV0 X2ZpbHRlcihPdXRwdXRGaWx0ZXIgKm9maWx0ZXIsIE9wdGkKICAgICAgICAgICAgICAgICAgICAg ICJjdXJyZW50bHkuXG4iKTsKICAgICAgICAgICAgICAgZXhpdF9wcm9ncmFtKDEpOwogICAgICAg ICAgIH0KICAgICArQEAgZmZ0b29scy9mZm1wZWdfb3B0LmM6IGxvb3BfZW5kOgogICAgICsgICAg ICAgICAgICAgaXN0LT5wcm9jZXNzaW5nX25lZWRlZCA9IDE7CiAgICAgKyAKICAgICArICAgICAg ICAgICAgIGlmIChvc3QtPnN0LT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVf VklERU8gfHwKICAgICArLSAgICAgICAgICAgICAgICBvc3QtPnN0LT5jb2RlY3Bhci0+Y29kZWNf dHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8pIHsKICAgICArKyAgICAgICAgICAgICAgICBvc3Qt PnN0LT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8gfHwKICAgICAr KyAgICAgICAgICAgICAgICBvc3QtPnN0LT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElB X1RZUEVfU1VCVElUTEUpIHsKICAgICArICAgICAgICAgICAgICAgICBlcnIgPSBpbml0X3NpbXBs ZV9maWx0ZXJncmFwaChpc3QsIG9zdCk7CiAgICAgKyAgICAgICAgICAgICAgICAgaWYgKGVyciA8 IDApIHsKICAgICArICAgICAgICAgICAgICAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19FUlJP UiwKICAgICArQEAgZmZ0b29scy9mZm1wZWdfb3B0LmM6IGxvb3BfZW5kOgogICAgICsgICAgICAg ICAgICAgICAgIH0gZWxzZSBpZiAob3N0LT5lbmMtPmNoX2xheW91dHMpIHsKICAgICArICAgICAg ICAgICAgICAgICAgICAgZi0+Y2hfbGF5b3V0cyA9IG9zdC0+ZW5jLT5jaF9sYXlvdXRzOwogICAg ICsgICAgICAgICAgICAgICAgIH0KICAgICArKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAr KyAgICAgICAgICAgIGNhc2UgQVZNRURJQV9UWVBFX1NVQlRJVExFOgogICAgICsrICAgICAgICAg ICAgICAgIGYtPmZvcm1hdCAgICAgPSBvc3QtPmVuY19jdHgtPnN1YnRpdGxlX3R5cGU7CiAgICAg KysKICAgICArICAgICAgICAgICAgICAgICBicmVhazsKICAgICArICAgICAgICAgICAgIH0KICAg ICArICAgICAgICAgfQogICAgICAKICAgICAgICMjIHRlc3RzL3JlZi9mYXRlL2ZpbHRlci1vdmVy bGF5LWR2ZHN1Yi0yMzk3ICMjCiAgICAgIEBACiAgICAgQEAgdGVzdHMvcmVmL2ZhdGUvc3ViLWR2 YgogICAgICArMCwgICAzMTQwMDAwMCwgICAzMTQwMDAwMCwgICA0NzkwMDAsICAgICAgIDE0LCAw eDA5NTkwMTViCiAgICAgICswLCAgIDMxODc5MDAwLCAgIDMxODc5MDAwLCAgIDQ3OTAwMCwgICAg ICAgMTQsIDB4MDljOTAxNmIKICAgICAgCiAgICAgKyAjIyB0ZXN0cy9yZWYvZmF0ZS9zdWItc2Nj ICMjCiAgICAgK0BAIHRlc3RzL3JlZi9mYXRlL3N1Yi1zY2M6IFN0eWxlOiBEZWZhdWx0LE1vbm9z cGFjZSwxNiwmSGZmZmZmZiwmSGZmZmZmZiwmSDAsJkgwLDAsMCwwLDAsMTAwLDEwMCwwLDAsMywx LDAsCiAgICAgKyAKICAgICArIFtFdmVudHNdCiAgICAgKyBGb3JtYXQ6IExheWVyLCBTdGFydCwg RW5kLCBTdHlsZSwgTmFtZSwgTWFyZ2luTCwgTWFyZ2luUiwgTWFyZ2luViwgRWZmZWN0LCBUZXh0 CiAgICAgKy1EaWFsb2d1ZTogMCwwOjAwOi0yLi00NywwOjAwOjAwLjcwLERlZmF1bHQsLDAsMCww LCx7XGFuN317XHBvcyg3NiwyMjgpfVdFIEhBVkUgRk9VTkQgQSBXSVRDSCAhXE57XGFuN317XHBv cyg3NiwyNDMpfU1BWSBXRSBCVVJOIEhFUiA/CiAgICAgKyBEaWFsb2d1ZTogMCwwOjAwOjAwLjY5 LDA6MDA6MDMuMjksRGVmYXVsdCwsMCwwLDAsLHtcYW43fXtccG9zKDExNSwyMjgpfVsgQ3Jvd2Qg XVxOe1xhbjd9e1xwb3MoMTE1LDI0Myl9QlVSTiBIRVIgISAgQlVSTiBIRVIgIQogICAgICsgRGlh bG9ndWU6IDAsMDowMDowMy4zMCwwOjAwOjA3LjA3LERlZmF1bHQsLDAsMCwwLCx7XGFuN317XHBv cygzOCwxOTcpfUhPVyBETyBZT1UgS05PV1xOe1xhbjd9e1xwb3MoMzgsMjEzKX1TSEUgSVMgQSBX SVRDSCA/XE57XGFuN317XHBvcygxNTMsMjQzKX1TSEUgTE9PS1MgTElLRSBPTkUgIQogICAgICsg RGlhbG9ndWU6IDAsMDowMDowNy4wNywwOjAwOjA5LjI3LERlZmF1bHQsLDAsMCwwLCx7XGFuN317 XHBvcygxOTIsMjI4KX1bIFNob3V0aW5nXE57XGFuN317XHBvcygxOTIsMjQzKX1caFxoQWZmaXJt YXRpb25zIF0KICAgICArCiAgICAgICAjIyB0ZXN0cy9yZWYvZmF0ZS9zdWIydmlkZW8gIyMKICAg ICAgQEAKICAgICAgIDAsICAgICAgICAgNDcsICAgICAgICAgNDcsICAgICAgICAxLCAgIDUxODQw MCwgMHhkZTY5NjgzZgogMjM6ICBhNjZkZWJkOTZlID0gMjU6ICBhOTBhNmUxMDg2IGF2Y29kZWMv ZHZic3ViZGVjOiBGaXggY29uZGl0aW9ucyBmb3IgZmFsbGJhY2sgdG8gZGVmYXVsdCByZXNvbHV0 aW9uCgotLSAKZmZtcGVnLWNvZGVib3QKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZt cGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwK ClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwt cmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=