From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id yG5tAet4XGfVyhUAWB0awg (envelope-from ) for ; Fri, 13 Dec 2024 13:11:55 -0500 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=h+NNdDMR; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 00F8A1E097; Fri, 13 Dec 2024 13:11:55 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=unavailable autolearn_force=no version=4.0.0 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 89CCD1E091 for ; Fri, 13 Dec 2024 13:11:52 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2EADB3858C39 for ; Fri, 13 Dec 2024 18:11:52 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2EADB3858C39 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=h+NNdDMR Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id 30CE43858D21 for ; Fri, 13 Dec 2024 18:11:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 30CE43858D21 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 30CE43858D21 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1734113463; cv=none; b=IBUQIketPdc0D0b6EtedlZ110uhomTd/O7sh8ydhzeNxLrxPU+IU+NLZnBvI2/0C14MpaFHvwBFw88IeSFqHXgMkN/f6MXQhCSKvrx+DTRPBRshttI7rUWuA8MrLrmZfFRw1Qtka7Cn+e/c2nHd5nTcMpKUlNt8nE9ozb8QI34c= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1734113463; c=relaxed/simple; bh=wAOHCswbnelFRGp9BrvjkLZKGZa8KBigtmr0z2aPhcQ=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=saAss48LjYNvhdlkhNy+6m5Ug6STX0klk7nh+Cv3N+fymY9U4IWflDt0gQ67N9OsuyEdYzZDYinIQHPC60ecYJlaLs015/E4/1g9aL06b9SPD4q3Huh9oaocGfYGC9X/gI82uJHyAtmr92I/JveTEsMS4qWgYD/5nS51+ulekDE= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 30CE43858D21 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1734113459; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wAOHCswbnelFRGp9BrvjkLZKGZa8KBigtmr0z2aPhcQ=; b=h+NNdDMRBWN74NRFucbbThEf+CHDHn2DsJTgkH1ky8x3i0Bu8a8k1W+CHdfI4+p+zhzRKa LqrR3YHeRAWe4hUsTSnFLMXhDxOfH5M2bow8WIjJ+ZofwHHhhuVsGS6N2MhAzrE4cXCVoW jFHApCQ2h8XLRXEtOEBS4fOEFc7pKKE= Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-358-FbPaXrnvMNuAU0LJNVGDUw-1; Fri, 13 Dec 2024 13:10:56 -0500 X-MC-Unique: FbPaXrnvMNuAU0LJNVGDUw-1 X-Mimecast-MFC-AGG-ID: FbPaXrnvMNuAU0LJNVGDUw Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-6d8edc021f9so34827636d6.3 for ; Fri, 13 Dec 2024 10:10:54 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734113454; x=1734718254; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=mQq0ySdkNQGvYevfmRUaQrVG7ajH2+w8mNLFmRhxeY0=; b=Sn9Wgin+X6kYiHBIdlDmwESH0Nv4PhCd7jwLUhaz3EIzj1NSvk1l7jJOo/ohydzCQ4 9aYukzv4ZDQeHEUUDxwgi7huuxEEbl0qm3rw5QqhjQx3Z1qsU9qFQNfooA1a8n9dqS5E 0L/H/xqVHv7oyEKDabD3Hp5eiNJLZKvO7WzRpVsjcrwkb1HpfQh4HCv0nTxQPd4uVLDO f6wBkSoXana9KT1xr5VuFGJJ6df4skD4cTcgyBkix7s35i7xlyLeoxDIqR0O2Tra7glt FM4Mrfu/Djb0z4ViveBc30bMaryyT6mj2fI2VphOv2cdsiPHoOOpCYZi7ISUd0BERqNM yyxg== X-Forwarded-Encrypted: i=1; AJvYcCWpmxVGFiHd4LFgSsNySm0wHn0CFdXjl8WJ6DYZ8UH++E/4JMPnqccBs2RahgCDOvMlSgRGPB+Ll6Mb6A==@sourceware.org X-Gm-Message-State: AOJu0YwT10+iewgfe3x35PnkdnOJEsozVXgThwN3xQsr6iG6tvpvE04u vGXZZyi5n8DufkHJl59cNXeVxVEMcFAmT5BxRFM2vpxUPIcpLibplnOC1cnBNWUQ9DRwBaNl2RF KvApzuQoi02FvMk1+L3B9+oBTGtkrb7wONF1kO/3PxtV8NuvLxb180Re2rKc= X-Gm-Gg: ASbGnctcZldA+3MmKmbk1OxFiZlAsLEseiVQX25YR972mCkwWASa5kKo5ZCwQhzm/AX S3YzxI2ClWUSTcKdSaBE+sDSQNOOyJCukhDAtVOIzivZ7D/qKmIn3iG1WLZIFPgUCGs0uKk7syG lJ7GZ1D20DkZ1bRxY4ftoCYCdpMhTVHvbF7wwCm3/xux1SPDFZEI57BVUtM+x6rBiHrHDvblikE NJpTfqWXbQB9u50GrSRvigRLpyXeHXkyEv5dMW1MQDFKbIl8pIXaGY91LSO+GSliYSD X-Received: by 2002:a05:622a:251:b0:466:b2c9:fb00 with SMTP id d75a77b69052e-467a5719488mr56270411cf.3.1734113452091; Fri, 13 Dec 2024 10:10:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IFVtk86p0XLwqtXQpNzs0/73ouePLLobA0YEjpwNCkTrN1wFx/PZm1iEheOJX8/lp+uMy90Rg== X-Received: by 2002:a05:622a:251:b0:466:b2c9:fb00 with SMTP id d75a77b69052e-467a5719488mr56268851cf.3.1734113450523; Fri, 13 Dec 2024 10:10:50 -0800 (PST) Received: from ?IPV6:2804:14d:8084:92c5::1000? ([2804:14d:8084:92c5::1000]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-4678a0edd33sm31925731cf.54.2024.12.13.10.10.48 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 13 Dec 2024 10:10:50 -0800 (PST) Message-ID: Date: Fri, 13 Dec 2024 15:10:47 -0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3] gdb/riscv: Add record support for rv64gc instructions To: Timur , gdb-patches@sourceware.org References: <20241203183025.144232-1-timurgol007@gmail.com> From: Guinevere Larsen In-Reply-To: <20241203183025.144232-1-timurgol007@gmail.com> X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: Fj24-otvf2k4fF-x19UOdGGTw7ZXpIY4rDhDA-PpelM_1734113454 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org U29ycnkgYWJvdXQgdGhlIGRlbGF5IHJldmlld2luZywgdGhpcyBlc2NhcGVkIG15IG5vdGljZSB3 aGVuIGl0IGZpcnN0IA0KY2FtZSB0byB0aGUgbGlzdC4NCg0KT24gMTIvMy8yNCAzOjMwIFBNLCBU aW11ciB3cm90ZToNCj4gVGhpcyBjb21taXQgYWRkcyByZWNvcmQgZnVsbCBzdXBwb3J0IGZvciBy djY0Z2MgaW5zdHJjdXRpb24uDQo+DQo+IEl0IGluY2x1ZGVzIGNoYW5nZXMgdG8gdGhlIGZvbGxv d2luZyBmaWxlczoNCj4gLSBnZGIvcmlzY3YtbGludXgtdGRlcC5jLCBnZGIvcmlzY3YtbGludXgt dGRlcC5oOiBhZGRzIGZhY2lsaXRpZXMgdG8gcmVjb3JkDQo+IHN5c2NhbGxzLg0KPiAtIGdkYi9y aXNjdi10ZGVwLmMsIGdkYi9yaXNjdi10ZGVwLmg6IGFkZHMgZmFjaWxpdGllcyB0byByZWNvcmQg ZXhlY3V0aW9uIG9mDQo+IHJ2NjRnYyBpbnN0cnVjdGlvbnMuDQo+IC0gZ2RiL2NvbmZpZ3VyZS50 Z3Q6IGFkZHMgbmV3IGZpbGVzIGZvciBjb21waWxhdGlvbi4NCj4gLSBnZGIvdGVzdHN1aXRlL2xp Yi9nZGIuZXhwOiBlbmFibGVzIHRlc3Rpbmcgb2YgZnVsbCByZWNvcmQgbW9kZSBmb3IgUklTQy1W DQo+IHRhcmdldHMuDQo+IC0gZ2RiL3N5c2NhbGxzL3Jpc2N2LWNhbm9uaWNhbGl6ZS1zeXNjYWxs LWdlbi5weTogYSBzY3JpcHQgdG8gZ2VuZXJhdGUgZnVuY3Rpb24NCj4gdGhhdCBjYW5vbmljYWxp emVzIFJJU0MtViBzeXNjYWxsLiBUaGlzIHNjcmlwdCBjYW4gc2ltcGx5IHN1cHBvcnQgZm9yIHN5 c2NhbGxzDQo+IG9uIHJ2MzIgc3lzdGVtLiAgVG8gdXNlIHRoaXMgc2NyaXB0IHlvdSBuZWVkIHRv IHBhc3MgYSBwYXRoIHRvIGEgZmlsZSB3aXRoDQpPbmUgc21hbGwgbml0LCBidXQgSSB3b3VsZCB3 b3JkIGl0IGFzICJUaGlzIHNjcmlwdCBjYW4gc2ltcGxpZnkgc3VwcG9ydCANCmZvciBzeXNjYWxs cyBvbiBydjMyIGFuZCBydjY0IHN5c3RlbXMiLiBUaGUgY3VycmVudCB3b3JkaW5nIHNvdW5kcyB0 byBtZSANCmxpa2UgdGhlIHNjcmlwdCBpcyBvbmx5IGZvciBydjMyLCB3aGljaCBJIGtub3cgaXNu J3QgdGhlIGNhc2UuDQo+IHN5c2NhbGxzIGRlc2NyaXB0aW9uIGZyb20gcmlzY3YtZ2xpYmMgKGV4 YW1wbGUgaXMgaW4gdGhlIGhlbHAgbWVzc2FnZSkuIFRoZQ0KPiBzY3JpcHQgcHJvZHVjZXMgYSBt YXBwaW5nIGZyb20gc3lzY2FsbCBuYW1lcyB0byBnZGJfc3lzY2FsbCBlbnVtLg0KPiAtIGdkYi9y aXNjdi1jYW5vbmljYWxpemUtc3lzY2FsbC5jOiB0aGUgZmlsZSBnZW5lcmF0ZWQgYnkgdGhlIHBy ZXZpb3VzIHNjcmlwdC4NClRoZSBHREIgc3R5bGUgZm9yIGNvbW1pdCBtZXNzYWdlIGlzIG1vcmUg ZnJlZSBmb3JtIHRleHQsIGluc3RlYWQgb2YgYSANCmNoYW5nZWxvZy4gSG93ZXZlciwgdGhpcyBj aGFuZ2UgaXMgc2ltcGxlIGVub3VnaCB0aGF0IEkgdGhpbmsgdGhpcyANCnNob3VsZCBiZSBmaW5l Lg0KPg0KPiBUaW11ciBHb2x1Ym92aWNoIHRpbXVyZ29sMDA3QGdtYWlsLmNvbQ0KPg0KPiBIaSEN Cj4NCj4+Pj4gKyAgc3dpdGNoIChzeXNjYWxsKQ0KPj4+PiArICAgIHsNCj4+Pj4gKyAgICBjYXNl IDA6IC8vICNkZWZpbmUgX19OUl9pb19zZXR1cCAwDQo+Pj4+DQo+Pj4+IEFsbCBjb21tZW50cyBz aG91bGQgYmUgaW4gdGhlIGZvcm0gLyogKi8sIHJhdGhlciB0aGFuIC8vDQo+Pj4+DQo+Pj4+IEkg d291bGQgYWxzbyBwcmVmZXIgaWYgdGhpcyBmb2xsb3dlZCB3aGF0IG90aGVyIGFyY2hpdGVjdHVy ZXMgZG8sDQo+Pj4+IGRlZmluaW5nIGFuIGVudW0gdG8gcmVsYXRlIHN5c2NhbGwgbnVtYmVycyBp biBhIFJJU0NWIHN5c3RlbSB0byB0aGVpcg0KPj4+PiBuYW1lcywgYW5kIHRoZW4gdGhpcyBmdW5j dGlvbiByZXR1cm5pbmcgdGhlIGdkYl9zeXMgZW51bSBudW1iZXJzLA0KPj4+PiBob3dldmVyIEkg ZG9uJ3QgZXhwZWN0IHRvIGJlIHdvcmtpbmcgb24gUklTQ1YgaW4gdGhlIG5lYXIgZnV0dXJlLCBz bw0KPj4+PiBmZWVsIGZyZWUgdG8gaWdub3JlIHRoaXMgY29tbWVudCBpZiB0aGUgb3RoZXIgUklT Q1YgbWFpbnRhaW5lcnMgYXJlIG9rDQo+Pj4+IHdpdGggdGhpcyBzdHlsZS4gVGhpcyB3b3VsZCBt YWtlIGl0IHNvIG5vICNkZWZpbmUgY29tbWVudCBpcyBuZWNlc3NhcnkNCj4+PiBEZWNpZGVkIHRv IG1ha2UgYSBzY3JpcHQgZ2VuZXJhdGluZyBmdW5jdGlvbiB0aGF0IGNhbm9uaWNhbGl6ZXMgUklT Qy1WIHN5c2NhbGwuDQo+Pj4gVGhpcyBzb2x1dGlvbiB3aWxsIHNpbXBsaWZ5IGFkZGluZyByZWNv cmQgc3VwcG9ydCBmb3IgcnYzMiBzeXN0ZW0uIEkgYWxzbyBsZWZ0DQo+Pj4gcGxhY2UgZm9yIGNv cm5lciBjYXNlcyBpbiBnZW5lcmF0aW5nIHNjcmlwdCBhcyB0aGV5IGFsd2F5cyBtYXkgZXhpc3Qu IEFsc28NCj4+PiByZW1vdmVkIHRoaXMgI2RlZmluZSBjb21tZW50IGZyb20gZ2VuZXJhdGluZyBz Y3JpcHQuDQo+PiBJIHNlZS4gVGhpcyBtYWtlcyBzZW5zZS4NCj4+DQo+PiBJIHdvdWxkIGxpa2Ug dG8gc2VlIHRoaXMgZXhwbGFuYXRpb24gb24gdGhlIGNvbW1pdCBtZXNzYWdlLCBzbyB0aGF0IGl0 DQo+PiBpcyByZWNvcmRlZCB3aHkgUmlzYy1WIHdvcmtzIGRpZmZlcmVudCB0byBhbGwgb3RoZXIg YXJjaGVzLg0KPiBDb3VsZCB5b3UgcGxlYXNlIGRvdWJsZS1jaGVjayB0aGUgY29tbWl0IG1lc3Nh Z2U/IEkgdHJpZWQgdG8gbWFrZSBpdCBtb3JlDQo+IGRldGFpbGVkLiBEbyB5b3UgdGhpbmsgSSBu ZWVkIHRvIHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbj8NCj4NCj4+Pj4gKw0KPj4+PiAr ICAgIGlmIChtX2xlbmd0aCA9PSAyKQ0KPj4+PiArICAgICAgcmV0dXJuIHJlY29yZF9pbnNuX2xl bjIgKGl2YWwsIHJlZ2NhY2hlLCBnZGJhcmNoKTsNCj4+Pj4gKw0KPj4+PiArICAgIC8qIDYgYnl0 ZXMgb3IgbW9yZS4gIElmIHRoZSBpbnN0cnVjdGlvbiBpcyBsb25nZXIgdGhhbiA4IGJ5dGVzLCB3 ZSBkb24ndA0KPj4+PiAraGF2ZSBmdWxsIGluc3RydWN0aW9uIGJpdHMgaW4gaXZhbC4gIEF0IGxl YXN0LCBzdWNoIGxvbmcgaW5zdHJ1Y3Rpb25zDQo+Pj4+ICthcmUgbm90IGRlZmluZWQgeWV0LCBz byBqdXN0IGlnbm9yZSBpdC4gICovDQo+Pj4+IEFnYWluLCB0aGUgaW5kZW50YXRpb24gaGVyZSBp cyBpbmNvcnJlY3QuIExpbmVzIHNob3VsZCBzdGFydCBpbiB0aGUgc2FtZSBjb2x1bW4gYXMgdGhl IG51bWJlciA2Lg0KPj4+IEFkZHJlc3NlZA0KPj4+DQo+Pj4gQmVzdCB3aXNoZXMsDQo+Pj4gVGlt dXIgR29sdWJvdmljaA0KPj4+DQo+Pj4gVGltdXIgR29sdWJvdmljaCB0aW11cmdvbDAwN0BnbWFp bC5jb20NCj4+IEFzIEkgbWVudGlvbmVkIGluIHRoZSBmaXJzdCByZXZpZXcsIHBsZWFzZSBhZGQg c29tZSBjb21taXQgbWVzc2FnZQ0KPj4gZXhwbGFpbmluZyBhIGJpdCBvZiB3aGF0IHlvdXIgcGF0 Y2ggaXMgZG9pbmcuIEkgd291bGQgcmVjb21tZW5kDQo+PiBleHBsYWluaW5nIHRoZSBpbnNwaXJh dGlvbiBmb3IgaG93IHJpc2N2LXRkZXAgaGFuZGxlcyB0aGUgcmVjb3JkaW5nIChJDQo+PiBndWVz cyBhYXJjaDY0KSBhbmQgd2h5IHlvdSBjaGFuZ2VkIGl0OyBwbHVzIGV4cGxhaW5pbmcgdGhlIGlk ZWEgYmVoaW5kDQo+PiB0aGUgcHl0aG9uIHNjcmlwdC5jDQo+IEFkZGVkIHRoaXMgaW5mb3JtYXRp b24gdG8gdGhlIGNvbW1pdCBtZXNzYWdlLg0KPg0KPj4+ICAgIC8qIFRoZSBmb2xsb3dpbmcgdmFs dWUgaXMgZGVyaXZlZCBmcm9tIF9fTlJfcnRfc2lncmV0dXJuIGluDQo+Pj4gICAgICAgPGluY2x1 ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaD4gZnJvbSB0aGUgTGludXggc291cmNlIHRyZWUu ICAqLw0KPj4+IEBAIC0xNzMsNiArMTc4LDI1MCBAQCByaXNjdl9saW51eF9zeXNjYWxsX25leHRf cGMgKGNvbnN0IGZyYW1lX2luZm9fcHRyICZmcmFtZSkNCj4+PiAgICAgIHJldHVybiBwYyArIDQg LyogTGVuZ3RoIG9mIHRoZSBFQ0FMTCBpbnNuLiAgKi87DQo+Pj4gICAgfQ0KPj4+DQo+Pj4gKy8q IFJJU0MtViBwcm9jZXNzIHJlY29yZC1yZXBsYXkgY29uc3RydWN0czogc3lzY2FsbCwgc2lnbmFs IGV0Yy4gICovDQo+Pj4gKw0KPj4+ICtzdGF0aWMgbGludXhfcmVjb3JkX3RkZXAgcmlzY3ZfbGlu dXhfcmVjb3JkX3RkZXA7DQo+Pj4gKw0KPj4+ICsvKiBSZWNvcmQgYWxsIHJlZ2lzdGVycyBidXQg UEMgcmVnaXN0ZXIgZm9yIHByb2Nlc3MtcmVjb3JkLiAgKi8NCj4+PiArDQo+Pj4gK3VzaW5nIHJl Z251bV90eXBlID0gaW50Ow0KPj4+ICsNCj4+PiArc3RhdGljIGJvb2wNCj4+PiArc2F2ZV9yZWdp c3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHJlZ251bV90eXBlIGZpciwgcmVnbnVt X3R5cGUgbGFzdCkNCj4+IFBsZWFzZSBmdWxseSB0eXBlIHRoZSB2YXJpYWJsZSBuYW1lcyAoZmly IC0+IGZpcnN0KS4gRXZlbiBpZiB0aGlzIG1ha2VzDQo+PiB5b3UgbmVlZCB0byB1c2UgbXVsdGlw bGUgbGluZXMgZm9yIHRoZSBmdW5jdGlvbiwgSSB0aGluayB0aGlzIG1ha2VzIHRoZQ0KPj4gZnVu Y3Rpb24gZWFzaWVyIHRvIHVuZGVyc3RhbmQgaW4gdGhlIGZ1dHVyZS4NCj4+DQo+PiBTb3JyeSBh Ym91dCBub3QgbWVudGlvbmluZyB0aGlzIGJlZm9yZSwgSSBtaXNzZWQgaXQgaW4gbXkgZmlyc3Qg cGFzcy4NCj4gQWRkcmVzc2VkDQo+DQo+Pj4gKyAgaWYgKHN5c2NhbGxfZ2RiID09IGdkYl9zeXNf c2lncmV0dXJuIHx8IHN5c2NhbGxfZ2RiID09IGdkYl9zeXNfcnRfc2lncmV0dXJuKQ0KPj4+ICsg ICAgew0KPj4+ICsgICAgICBpZiAoIXJpc2N2X2FsbF9idXRfcGNfcmVnaXN0ZXJzX3JlY29yZCAo cmVnY2FjaGUpKQ0KPj4+ICsgICAgICAgIHJldHVybiAtMTsNCj4+PiArICAgICAgcmV0dXJuIDA7 DQo+Pj4gKyAgICB9DQo+Pj4gKw0KPj4+ICsgIGF1dG8gcmV0ID0gcmVjb3JkX2xpbnV4X3N5c3Rl bV9jYWxsIChzeXNjYWxsX2dkYiwgcmVnY2FjaGUsDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZyaXNjdl9saW51eF9yZWNvcmRfdGRlcCk7DQo+Pj4gKyAgaWYg KHJldCAhPSAwKQ0KPj4+ICsgICAgcmV0dXJuIHJldDsNCj4+PiArDQo+Pj4gKyAgLyogUmVjb3Jk IHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHN5c3RlbSBjYWxsLiAgKi8NCj4+PiArICBpZiAocmVj b3JkX2Z1bGxfYXJjaF9saXN0X2FkZF9yZWcgKHJlZ2NhY2hlLCBSSVNDVl9BMF9SRUdOVU0pKQ0K Pj4+ICsgICAgcmV0dXJuIC0xOw0KPj4+ICsNCj4+PiArICByZXR1cm4gMDsNCj4+PiArfQ0KPj4+ ICsNCj4+PiArLyogSW5pdGlhbGl6ZSB0aGUgcmlzY3Y2NF9saW51eF9yZWNvcmRfdGRlcC4gICov DQo+Pj4gKy8qIFRoZXNlIHZhbHVlcyBhcmUgdGhlIHNpemUgb2YgdGhlIHR5cGUgdGhhdCB3aWxs IGJlIHVzZWQgaW4gYSBzeXN0ZW0NCj4+PiArICAgIGNhbGwuICBUaGV5IGFyZSBvYnRhaW5lZCBm cm9tIExpbnV4IEtlcm5lbCBzb3VyY2UuICAqLw0KPj4+ICtzdGF0aWMgdm9pZA0KPj4+ICtyaXNj djY0X2xpbnV4X3JlY29yZF90ZGVwX2luaXQgKA0KPj4+ICsgICAgc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsIHN0cnVjdCBsaW51eF9yZWNvcmRfdGRlcCAmcmlzY3ZfbGludXhfcmVjb3JkX3RkZXAp DQo+PiBPb3BzLCBhbHNvIG1pc3NlZCB0aGlzIG9uZSBvbiB0aGUgZmlyc3QgcGFzcy4NCj4+DQo+ PiBUaGUgcHJlZmVycmVkIHdheSB0byBkbyBtdWx0aS1saW5lIGFyZ3VtZW50cyBpczoNCj4+DQo+ PiBzdGF0aWMgdm9pZA0KPj4gcmlzY3Y2NF9saW51eF9yZWNvcmRfdGRlcF9pbml0IChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QNCj4+IGxpbnV4X3JlY29yZF90ZGVwICZyaXNj dl9saW51eF9yZWNvcmRfdGRlcCkNCj4+IHsNCj4+DQo+PiAod2l0aCB0aGUgInN0cnVjdCIga2V5 d29yZHMgYmVpbmcgYWxpZ25lZCkNCj4gQWRkcmVzc2VkDQo+DQo+Pj4gKyAgew0KPj4+ICsgICAg Z2RiX2Fzc2VydCAocmVnY2FjaGUpOw0KPj4+ICsNCj4+PiArICAgIGlmICghdHJ5X3JlYWQgKHJl Z2NhY2hlLCByZWcsIGFkZHIpKQ0KPj4+ICsgICAgICB7DQo+Pj4gKyAgICAgICAgcmV0dXJuIHNl dF9lcnJvciAoKTsNCj4+PiArICAgICAgfQ0KPj4+ICsgICAgcmV0dXJuIHRydWU7DQo+Pj4gKyAg fQ0KPj4+ICsNCj4+PiArICBib29sDQo+Pj4gKyAgc2F2ZV9yZWcgKHJlZ251bV90eXBlIHJlZ251 bSkgbm9leGNlcHQNCj4+PiArICB7DQo+Pj4gKyAgICB0cnkNCj4+PiArICAgICAgew0KPj4+ICsg ICAgICAgIG1fcmVncy5lbXBsYWNlX2JhY2sgKHJlZ251bSk7DQo+PiBTaW1pbGFyIHRvIG15IHRo b3VnaHRzIG9uIExvb25nYXJjaCwgSSBkb24ndCB0aGluayB0aGlzIGFwcHJvYWNoIGlzIHRoZQ0K Pj4gYmVzdC4NCj4+DQo+PiBJbiBzaG9ydCwgcmVjb3JkaW5nIGlzIGFscmVhZHkgY29uc2lkZXJl ZCB2ZXJ5IHNsb3cuIFRoZSBzdHJhdGVneSB0aGlzDQo+PiBwYXRjaCB1c2VzIGlzIHRvIGZpcnN0 IGNvbGxlY3QgYWxsIHRoZSBkYXRhIHRvIGJlIHJlY29yZGVkICh3aGljaA0KPj4gZGVtYW5kcyBk eW5hbWljIGFsbG9jYXRpb25zIHRvIHN0ZDo6dmVjdG9yKSwgYW5kIHRoZW4gY2FsbA0KPj4gcmVj b3JkX2Z1bGxfYXJjaF9saXN0X2FkZF9yZWcgb3IgcmVjb3JkX2Z1bGxfYXJjaF9saXN0X2FkZF9t ZW0sIHdoaWNoDQo+PiB3aWxsIGRvIHRoZWlyIG93biBkeW5hbWljIGFsbG9jYXRpb25zLiBUaGlz IHNlZW1zIHdhc3RlZnVsIHRvIG1lLg0KPj4NCj4+IEkgYmVsaWV2ZSBpdCB3b3VsZCBiZSBiZXR0 ZXIgaWYsIGluc3RlYWQsIHRoZSBzYXZlX3JlZyBhbmQgc2F2ZV9tZW0NCj4+IG1ldGhvZHMgd291 bGQgZGlyZWN0bHkgY2FsbCB0aGUgY29ycmVjdCByZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkDQo+ PiBmdW5jdGlvbiwgc28gdGhhdCBvbmx5IG9uZSBhbGxvY2F0aW9uIGlzIG5lZWRlZCBwZXIgdW5p dCBvZiBkYXRhIHRoYXQNCj4+IG5lZWRzIHJlY29yZGluZy4NCj4+DQo+PiBTaW5jZSBhYXJjaDY0 IGFscmVhZHkgdXNlcyB0aGUgc3RyYXRlZ3kgaW4gdGhpcyBwYXRjaCBJIHdvbid0IGJsb2NrDQo+ PiBtZXJnaW5nIGJhc2VkIG9uIHRoaXMgZmVlZGJhY2ssIGlmIHlvdSdyZSBzZXQgb24gdGhpcyBp ZGVhLCBidXQgSSB0aGluaw0KPj4gZGlyZWN0IGNhbGxzIHdvdWxkIGJlIGJldHRlci4NCj4gSSB0 aGluayB0aGF0IHRoaXMgb3ZlcmhlYWQgaXMgbmVnbGlnZWJsZSwgc2luY2UgdGhlIG51bWJlciBv ZiBhbGxvY2F0aW9uDQo+IGJlY2F1c2UgbW9zdCBpbnN0cnVjdGlvbnMgYWZmZWN0IG9ubHkgMSBy ZWdpc3Rlci4gTW9yZW92ZXIsIEkgZmVlbCB0aGF0IHRoZQ0KPiBzdWdnZXN0ZWQgYXBwcm9hY2gg c2ltcGxpZmllcyBlcnJvciBoYW5kbGluZywgc2luY2UgSSBjYW4gZGVjb3VwbGUgZGVjb2RpbmcN Cj4gcHJvY2VkdXJlIGZyb20gdGhlIGFjdHVhbCBlcnJvciBkZXRlY3Rpb24uIElmIHlvdSBkb24n dCBtaW5kLCBJIHdvdWxkIHN1Z2dlc3QNCj4gdG8gbGVhdmUgaXQgYXMgaXQgaXMuDQo+DQo+Pj4g KyAgICBpZiAoaXNfZWJyZWFrX2luc24gKGl2YWwpKQ0KPj4+ICsgICAgICB7DQo+Pj4gKyAgICAg ICAgbV9yZWNvcmRfdHlwZSA9IHJlY29yZF90eXBlOjpFQlJFQUs7DQo+Pj4gKyAgICAgICAgcmV0 dXJuIHRydWU7DQo+Pj4gKyAgICAgIH0NCj4+PiArDQo+Pj4gKyAgICBpZiAodHJ5X3NhdmVfcGMg KGl2YWwpIHx8IHRyeV9zYXZlX3BjX3JkIChpdmFsKSB8fCB0cnlfc2F2ZV9wY19mcHJkIChpdmFs KQ0KPj4+ICsgICAgICAgIHx8IHRyeV9zYXZlX3BjX3JkX2NzciAoaXZhbCkgfHwgdHJ5X3NhdmVf cGNfbWVtIChpdmFsLCByZWdjYWNoZSkNCj4+PiArICAgICAgICB8fCB0cnlfc2F2ZV9wY19yZF9t ZW0gKGl2YWwsIHJlZ2NhY2hlKQ0KPj4+ICsgICAgICAgIHx8IHRyeV9zYXZlX3BjX3JzMl9yZF9t ZW0gKGl2YWwsIHJlZ2NhY2hlKSkNCj4+PiArICAgICAgew0KPj4+ICsgICAgICAgIHJldHVybiAh aGFzX2Vycm9yICgpOw0KPj4+ICsgICAgICB9DQo+PiBNaW5vciBuaXQsIGJ1dCBJIG5vdGljZWQg YXJvdW5kIGhlcmUgdGhhdCB0aGlzIChhbmQgc29tZSBsaW5lcyBsYXRlciwNCj4+IG1heWJlIHNv bWUgYmVmb3JlKSBkb24ndCBuZWVkIHRoZSBicmFjZXMuDQo+IEFkZHJlc3NlZA0KPg0KPj4+ICsg ICAgICAgIGlmICghdHJ5X3JlYWQgKHJlZ2NhY2hlLCBSSVNDVl9BN19SRUdOVU0sIHJlZ192YWwp KQ0KPj4+ICsgICAgICAgICAgew0KPj4+ICsgICAgICAgICAgICByZXR1cm4gLTE7DQo+Pj4gKyAg ICAgICAgICB9DQo+Pj4gKyAgICAgICAgcmV0dXJuIHRkZXAtPnJpc2N2X3N5c2NhbGxfcmVjb3Jk IChyZWdjYWNoZSwgcmVnX3ZhbCk7DQo+Pj4gKyAgICAgIH0NCj4+PiArDQo+Pj4gKyAgICBjYXNl IHJpc2N2X3JlY29yZGVkX2luc246OnJlY29yZF90eXBlOjpFQlJFQUs6DQo+Pj4gKyAgICAgIGJy ZWFrOw0KPj4+ICsNCj4+PiArICAgIGRlZmF1bHQ6DQo+Pj4gKyAgICAgIHJldHVybiAtMTsNCj4+ PiArICAgIH0NCj4+PiArICByZXR1cm4gMDsNCj4+PiArfQ0KPj4+ICsNCj4+PiAraW50DQo+Pj4g K3Jpc2N2X3Byb2Nlc3NfcmVjb3JkIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwNCj4+PiArICAgICAgICAgICAgICAgICAgICAgIENPUkVfQUREUiBh ZGRyKQ0KPj4+ICt7DQo+Pj4gKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAmJiByZWdjYWNoZSk7DQo+ PiBudWxsIHBvaW50ZXIgY2hlY2tzIHNob3VsZCBiZSBleHBsaWNpdCwgaWUsIGdkYl9hc3NlcnQg KGdkYmFyY2ggIT0NCj4+IG51bGxwdHIgJiYgcmVnY2FjaGUgIT0gbnVsbHB0cikNCj4gQWRkcmVz c2VkLg0KPg0KPiBCZXN0IHdpc2hlcywNCj4gVGltdXIgR29sdWJvdmljaA0KPg0KPiAtLS0NCj4g ICBnZGIvY29uZmlnLmx0ICAgICAgICAgICAgICAgICAgICAgICAgfCAxNDg0ICsrKysrKysrKysr KysrKysrKysrKysrKysrDQo+ICAgZ2RiL3Jpc2N2LWNhbm9uaWNhbGl6ZS1zeXNjYWxsLWdlbi5j IHwgIDMzOCArKysrKysNCj4gICBnZGIvcmlzY3YtbGludXgtdGRlcC5jICAgICAgICAgICAgICAg fCAgIDIyICstDQo+ICAgZ2RiL3Jpc2N2LXRkZXAuYyAgICAgICAgICAgICAgICAgICAgIHwgIDE0 MSArLS0NCj4gICA0IGZpbGVzIGNoYW5nZWQsIDE4ODggaW5zZXJ0aW9ucygrKSwgOTcgZGVsZXRp b25zKC0pDQo+ICAgY3JlYXRlIG1vZGUgMTAwNzU1IGdkYi9jb25maWcubHQNCj4gICBjcmVhdGUg bW9kZSAxMDA2NDQgZ2RiL3Jpc2N2LWNhbm9uaWNhbGl6ZS1zeXNjYWxsLWdlbi5jDQpBcmUgeW91 IHN1cmUgeW91IHNlbnQgdGhlIGNvcnJlY3QgZGlmZj8gQSBjb3VwbGUgZmlsZXMgYXJlIG1pc3Np bmcgDQoocmlzY3YtbGludXgtdGRlcC5oLCBjb25maWd1cmUudGd0LCBnZGIuZXhwIGFuZCANCnJp c2N2LWNhbm9uaWNhbGl6ZS1zeXNjYWxsLmMpLCBhbmQgdGhlcmUncyBubyBtZW50aW9uIG9mIGNv bmZpZy5sdCBpbiANCnRoZSBjb21taXQgbWVzc2FnZS4NCg0KLS0gDQpDaGVlcnMsDQpHdWluZXZl cmUgTGFyc2VuDQpTaGUvSGVyL0hlcnMNCg0KPg0KPiBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZy5s dCBiL2dkYi9jb25maWcubHQNCj4gbmV3IGZpbGUgbW9kZSAxMDA3NTUNCj4gaW5kZXggMDAwMDAw MDAwMDAuLjk2ODUxYTliZmFmDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2RiL2NvbmZpZy5s dA0KPiBAQCAtMCwwICsxLDE0ODQgQEANCj4gKyMhIC9iaW4vYmFzaA0KPiArIyBHZW5lcmF0ZWQg YnkgY29uZmlndXJlLg0KPiArIyBSdW4gdGhpcyBmaWxlIHRvIHJlY3JlYXRlIGEgbGlidG9vbCBz dHViIHdpdGggdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4NCj4gK1NIRUxMPSR7Q09ORklHX1NI RUxMLS9iaW4vYmFzaH0NCj4gK2V4cG9ydCBTSEVMTA0KPiArIyMgLS0tLS0tLS0tLS0tLS0tLS0t LS0gIyMNCj4gKyMjIE00c2ggSW5pdGlhbGl6YXRpb24uICMjDQo+ICsjIyAtLS0tLS0tLS0tLS0t LS0tLS0tLSAjIw0KPiArDQo+ICsjIEJlIG1vcmUgQm91cm5lIGNvbXBhdGlibGUNCj4gK0RVQUxD QVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gNCj4gK2lmIHRlc3QgLW4gIiR7WlNI X1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbiA6DQo+ ICsgIGVtdWxhdGUgc2gNCj4gKyAgTlVMTENNRD06DQo+ICsgICMgUHJlLTQuMiB2ZXJzaW9ucyBv ZiBac2ggZG8gd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaA0KPiArICAjIGlzIGNv bnRyYXJ5IHRvIG91ciB1c2FnZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLg0KPiArICBhbGlhcyAt ZyAnJHsxKyIkQCJ9Jz0nIiRAIicNCj4gKyAgc2V0b3B0IE5PX0dMT0JfU1VCU1QNCj4gK2Vsc2UN Cj4gKyAgY2FzZSBgKHNldCAtbykgMj4vZGV2L251bGxgIGluICMoDQo+ICsgICpwb3NpeCopIDoN Cj4gKyAgICBzZXQgLW8gcG9zaXggOzsgIygNCj4gKyAgKikgOg0KPiArICAgICA7Ow0KPiArZXNh Yw0KPiArZmkNCj4gKw0KPiArDQo+ICthc19ubD0nDQo+ICsnDQo+ICtleHBvcnQgYXNfbmwNCj4g KyMgUHJpbnRpbmcgYSBsb25nIHN0cmluZyBjcmFzaGVzIFNvbGFyaXMgNyAvdXNyL2Jpbi9wcmlu dGYuDQo+ICthc19lY2hvPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcJw0KPiArYXNfZWNobz0kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19l Y2hvDQo+ICthc19lY2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8k YXNfZWNobw0KPiArIyBQcmVmZXIgYSBrc2ggc2hlbGwgYnVpbHRpbiBvdmVyIGFuIGV4dGVybmFs IHByaW50ZiBwcm9ncmFtIG9uIFNvbGFyaXMsDQo+ICsjIGJ1dCB3aXRob3V0IHdhc3RpbmcgZm9y a3MgZm9yIGJhc2ggb3IgenNoLg0KPiAraWYgdGVzdCAteiAiJEJBU0hfVkVSU0lPTiRaU0hfVkVS U0lPTiIgXA0KPiArICAgICYmICh0ZXN0ICJYYHByaW50IC1yIC0tICRhc19lY2hvYCIgPSAiWCRh c19lY2hvIikgMj4vZGV2L251bGw7IHRoZW4NCj4gKyAgYXNfZWNobz0ncHJpbnQgLXIgLS0nDQo+ ICsgIGFzX2VjaG9fbj0ncHJpbnQgLXJuIC0tJw0KPiArZWxpZiAodGVzdCAiWGBwcmludGYgJXMg JGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9kZXYvbnVsbDsgdGhlbg0KPiArICBhc19lY2hv PSdwcmludGYgJXNcbicNCj4gKyAgYXNfZWNob19uPSdwcmludGYgJXMnDQo+ICtlbHNlDQo+ICsg IGlmIHRlc3QgIlhgKC91c3IvdWNiL2VjaG8gLW4gLW4gJGFzX2VjaG8pIDI+L2Rldi9udWxsYCIg PSAiWC1uICRhc19lY2hvIjsgdGhlbg0KPiArICAgIGFzX2VjaG9fYm9keT0nZXZhbCAvdXNyL3Vj Yi9lY2hvIC1uICIkMSRhc19ubCInDQo+ICsgICAgYXNfZWNob19uPScvdXNyL3VjYi9lY2hvIC1u Jw0KPiArICBlbHNlDQo+ICsgICAgYXNfZWNob19ib2R5PSdldmFsIGV4cHIgIlgkMSIgOiAiWFxc KC4qXFwpIicNCj4gKyAgICBhc19lY2hvX25fYm9keT0nZXZhbA0KPiArICAgICAgYXJnPSQxOw0K PiArICAgICAgY2FzZSAkYXJnIGluICMoDQo+ICsgICAgICAqIiRhc19ubCIqKQ0KPiArCWV4cHIg IlgkYXJnIiA6ICJYXFwoLipcXCkkYXNfbmwiOw0KPiArCWFyZz1gZXhwciAiWCRhcmciIDogIi4q JGFzX25sXFwoLipcXCkiYDs7DQo+ICsgICAgICBlc2FjOw0KPiArICAgICAgZXhwciAiWCRhcmci IDogIlhcXCguKlxcKSIgfCB0ciAtZCAiJGFzX25sIg0KPiArICAgICcNCj4gKyAgICBleHBvcnQg YXNfZWNob19uX2JvZHkNCj4gKyAgICBhc19lY2hvX249J3NoIC1jICRhc19lY2hvX25fYm9keSBh c19lY2hvJw0KPiArICBmaQ0KPiArICBleHBvcnQgYXNfZWNob19ib2R5DQo+ICsgIGFzX2VjaG89 J3NoIC1jICRhc19lY2hvX2JvZHkgYXNfZWNobycNCj4gK2ZpDQo+ICsNCj4gKyMgVGhlIHVzZXIg aXMgYWx3YXlzIHJpZ2h0Lg0KPiAraWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBz ZXQ7IHRoZW4NCj4gKyAgUEFUSF9TRVBBUkFUT1I9Og0KPiArICAoUEFUSD0nL2JpbjsvYmluJzsg RlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSAmJiB7DQo+ICsgICAgKFBBVEg9 Jy9iaW46L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgfHwNCj4g KyAgICAgIFBBVEhfU0VQQVJBVE9SPSc7Jw0KPiArICB9DQo+ICtmaQ0KPiArDQo+ICsNCj4gKyMg SUZTDQo+ICsjIFdlIG5lZWQgc3BhY2UsIHRhYiBhbmQgbmV3IGxpbmUsIGluIHByZWNpc2VseSB0 aGF0IG9yZGVyLiAgUXVvdGluZyBpcw0KPiArIyB0aGVyZSB0byBwcmV2ZW50IGVkaXRvcnMgZnJv bSBjb21wbGFpbmluZyBhYm91dCBzcGFjZS10YWIuDQo+ICsjIChJZiBfQVNfUEFUSF9XQUxLIHdl cmUgY2FsbGVkIHdpdGggSUZTIHVuc2V0LCBpdCB3b3VsZCBkaXNhYmxlIHdvcmQNCj4gKyMgc3Bs aXR0aW5nIGJ5IHNldHRpbmcgSUZTIHRvIGVtcHR5IHZhbHVlLikNCj4gK0lGUz0iICIiCSRhc19u bCINCj4gKw0KPiArIyBGaW5kIHdobyB3ZSBhcmUuICBMb29rIGluIHRoZSBwYXRoIGlmIHdlIGNv bnRhaW4gbm8gZGlyZWN0b3J5IHNlcGFyYXRvci4NCj4gK2FzX215c2VsZj0NCj4gK2Nhc2UgJDAg aW4gIygoDQo+ICsgICpbXFwvXSogKSBhc19teXNlbGY9JDAgOzsNCj4gKyAgKikgYXNfc2F2ZV9J RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KPiArZm9yIGFzX2RpciBpbiAkUEFUSA0KPiAr ZG8NCj4gKyAgSUZTPSRhc19zYXZlX0lGUw0KPiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19k aXI9Lg0KPiArICAgIHRlc3QgLXIgIiRhc19kaXIvJDAiICYmIGFzX215c2VsZj0kYXNfZGlyLyQw ICYmIGJyZWFrDQo+ICsgIGRvbmUNCj4gK0lGUz0kYXNfc2F2ZV9JRlMNCj4gKw0KPiArICAgICA7 Ow0KPiArZXNhYw0KPiArIyBXZSBkaWQgbm90IGZpbmQgb3Vyc2VsdmVzLCBtb3N0IHByb2JhYmx5 IHdlIHdlcmUgcnVuIGFzIGBzaCBDT01NQU5EJw0KPiArIyBpbiB3aGljaCBjYXNlIHdlIGFyZSBu b3QgdG8gYmUgZm91bmQgaW4gdGhlIHBhdGguDQo+ICtpZiB0ZXN0ICJ4JGFzX215c2VsZiIgPSB4 OyB0aGVuDQo+ICsgIGFzX215c2VsZj0kMA0KPiArZmkNCj4gK2lmIHRlc3QgISAtZiAiJGFzX215 c2VsZiI7IHRoZW4NCj4gKyAgJGFzX2VjaG8gIiRhc19teXNlbGY6IGVycm9yOiBjYW5ub3QgZmlu ZCBteXNlbGY7IHJlcnVuIHdpdGggYW4gYWJzb2x1dGUgZmlsZSBuYW1lIiA+JjINCj4gKyAgZXhp dCAxDQo+ICtmaQ0KPiArDQo+ICsjIFVuc2V0IHZhcmlhYmxlcyB0aGF0IHdlIGRvIG5vdCBuZWVk IGFuZCB3aGljaCBjYXVzZSBidWdzIChlLmcuIGluDQo+ICsjIHByZS0zLjAgVVdJTiBrc2gpLiAg QnV0IGRvIG5vdCBjYXVzZSBidWdzIGluIGJhc2ggMi4wMTsgdGhlICJ8fCBleGl0IDEiDQo+ICsj IHN1cHByZXNzZXMgYW55ICJTZWdtZW50YXRpb24gZmF1bHQiIG1lc3NhZ2UgdGhlcmUuICAnKCgn IGNvdWxkDQo+ICsjIHRyaWdnZXIgYSBidWcgaW4gcGRrc2ggNS4yLjE0Lg0KPiArZm9yIGFzX3Zh ciBpbiBCQVNIX0VOViBFTlYgTUFJTCBNQUlMUEFUSA0KPiArZG8gZXZhbCB0ZXN0IHhcJHskYXNf dmFyK3NldH0gPSB4c2V0IFwNCj4gKyAgJiYgKCAodW5zZXQgJGFzX3ZhcikgfHwgZXhpdCAxKSA+ L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgJGFzX3ZhciB8fCA6DQo+ICtkb25lDQo+ICtQUzE9JyQg Jw0KPiArUFMyPSc+ICcNCj4gK1BTND0nKyAnDQo+ICsNCj4gKyMgTkxTIG51aXNhbmNlcy4NCj4g K0xDX0FMTD1DDQo+ICtleHBvcnQgTENfQUxMDQo+ICtMQU5HVUFHRT1DDQo+ICtleHBvcnQgTEFO R1VBR0UNCj4gKw0KPiArIyBDRFBBVEguDQo+ICsodW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+ JjEgJiYgdW5zZXQgQ0RQQVRIDQo+ICsNCj4gKw0KPiArIyBhc19mbl9lcnJvciBTVEFUVVMgRVJS T1IgW0xJTkVOTyBMT0dfRkRdDQo+ICsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCj4gKyMgT3V0cHV0ICJgYmFzZW5hbWUgJDBgOiBlcnJvcjogRVJST1IiIHRvIHN0 ZGVyci4gSWYgTElORU5PIGFuZCBMT0dfRkQgYXJlDQo+ICsjIHByb3ZpZGVkLCBhbHNvIG91dHB1 dCB0aGUgZXJyb3IgdG8gTE9HX0ZELCByZWZlcmVuY2luZyBMSU5FTk8uIFRoZW4gZXhpdCB0aGUN Cj4gKyMgc2NyaXB0IHdpdGggU1RBVFVTLCB1c2luZyAxIGlmIHRoYXQgd2FzIDAuDQo+ICthc19m bl9lcnJvciAoKQ0KPiArew0KPiArICBhc19zdGF0dXM9JDE7IHRlc3QgJGFzX3N0YXR1cyAtZXEg MCAmJiBhc19zdGF0dXM9MQ0KPiArICBpZiB0ZXN0ICIkNCI7IHRoZW4NCj4gKyAgICBhc19saW5l bm89JHthc19saW5lbm8tIiQzIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNf bGluZW5vX3N0YWNrDQo+ICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogZXJyb3I6ICQyIiA+JiQ0DQo+ICsgIGZpDQo+ICsgICRhc19lY2hvICIkYXNfbWU6IGVycm9y OiAkMiIgPiYyDQo+ICsgIGFzX2ZuX2V4aXQgJGFzX3N0YXR1cw0KPiArfSAjIGFzX2ZuX2Vycm9y DQo+ICsNCj4gKw0KPiArIyBhc19mbl9zZXRfc3RhdHVzIFNUQVRVUw0KPiArIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPiArIyBTZXQgJD8gdG8gU1RBVFVTLCB3aXRob3V0IGZvcmtpbmcuDQo+ ICthc19mbl9zZXRfc3RhdHVzICgpDQo+ICt7DQo+ICsgIHJldHVybiAkMQ0KPiArfSAjIGFzX2Zu X3NldF9zdGF0dXMNCj4gKw0KPiArIyBhc19mbl9leGl0IFNUQVRVUw0KPiArIyAtLS0tLS0tLS0t LS0tLS0tLQ0KPiArIyBFeGl0IHRoZSBzaGVsbCB3aXRoIFNUQVRVUywgZXZlbiBpbiBhICJ0cmFw IDAiIG9yICJzZXQgLWUiIGNvbnRleHQuDQo+ICthc19mbl9leGl0ICgpDQo+ICt7DQo+ICsgIHNl dCArZQ0KPiArICBhc19mbl9zZXRfc3RhdHVzICQxDQo+ICsgIGV4aXQgJDENCj4gK30gIyBhc19m bl9leGl0DQo+ICsNCj4gKyMgYXNfZm5fdW5zZXQgVkFSDQo+ICsjIC0tLS0tLS0tLS0tLS0tLQ0K PiArIyBQb3J0YWJseSB1bnNldCBWQVIuDQo+ICthc19mbl91bnNldCAoKQ0KPiArew0KPiArICB7 IGV2YWwgJDE9OyB1bnNldCAkMTt9DQo+ICt9DQo+ICthc191bnNldD1hc19mbl91bnNldA0KPiAr IyBhc19mbl9hcHBlbmQgVkFSIFZBTFVFDQo+ICsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g KyMgQXBwZW5kIHRoZSB0ZXh0IGluIFZBTFVFIHRvIHRoZSBlbmQgb2YgdGhlIGRlZmluaXRpb24g Y29udGFpbmVkIGluIFZBUi4gVGFrZQ0KPiArIyBhZHZhbnRhZ2Ugb2YgYW55IHNoZWxsIG9wdGlt aXphdGlvbnMgdGhhdCBhbGxvdyBhbW9ydGl6ZWQgbGluZWFyIGdyb3d0aCBvdmVyDQo+ICsjIHJl cGVhdGVkIGFwcGVuZHMsIGluc3RlYWQgb2YgdGhlIHR5cGljYWwgcXVhZHJhdGljIGdyb3d0aCBw cmVzZW50IGluIG5haXZlDQo+ICsjIGltcGxlbWVudGF0aW9ucy4NCj4gK2lmIChldmFsICJhc192 YXI9MTsgYXNfdmFyKz0yOyB0ZXN0IHhcJGFzX3ZhciA9IHgxMiIpIDI+L2Rldi9udWxsOyB0aGVu IDoNCj4gKyAgZXZhbCAnYXNfZm5fYXBwZW5kICgpDQo+ICsgIHsNCj4gKyAgICBldmFsICQxKz1c JDINCj4gKyAgfScNCj4gK2Vsc2UNCj4gKyAgYXNfZm5fYXBwZW5kICgpDQo+ICsgIHsNCj4gKyAg ICBldmFsICQxPVwkJDFcJDINCj4gKyAgfQ0KPiArZmkgIyBhc19mbl9hcHBlbmQNCj4gKw0KPiAr IyBhc19mbl9hcml0aCBBUkcuLi4NCj4gKyMgLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsjIFBlcmZv cm0gYXJpdGhtZXRpYyBldmFsdWF0aW9uIG9uIHRoZSBBUkdzLCBhbmQgc3RvcmUgdGhlIHJlc3Vs dCBpbiB0aGUNCj4gKyMgZ2xvYmFsICRhc192YWwuIFRha2UgYWR2YW50YWdlIG9mIHNoZWxscyB0 aGF0IGNhbiBhdm9pZCBmb3Jrcy4gVGhlIGFyZ3VtZW50cw0KPiArIyBtdXN0IGJlIHBvcnRhYmxl IGFjcm9zcyAkKCgpKSBhbmQgZXhwci4NCj4gK2lmIChldmFsICJ0ZXN0IFwkKCggMSArIDEgKSkg PSAyIikgMj4vZGV2L251bGw7IHRoZW4gOg0KPiArICBldmFsICdhc19mbl9hcml0aCAoKQ0KPiAr ICB7DQo+ICsgICAgYXNfdmFsPSQoKCAkKiApKQ0KPiArICB9Jw0KPiArZWxzZQ0KPiArICBhc19m bl9hcml0aCAoKQ0KPiArICB7DQo+ICsgICAgYXNfdmFsPWBleHByICIkQCIgfHwgdGVzdCAkPyAt ZXEgMWANCj4gKyAgfQ0KPiArZmkgIyBhc19mbl9hcml0aA0KPiArDQo+ICsNCj4gK2lmIGV4cHIg YSA6ICdcKGFcKScgPi9kZXYvbnVsbCAyPiYxICYmDQo+ICsgICB0ZXN0ICJYYGV4cHIgMDAwMDEg OiAnLipcKC4uLlwpJ2AiID0gWDAwMTsgdGhlbg0KPiArICBhc19leHByPWV4cHINCj4gK2Vsc2UN Cj4gKyAgYXNfZXhwcj1mYWxzZQ0KPiArZmkNCj4gKw0KPiAraWYgKGJhc2VuYW1lIC0tIC8pID4v ZGV2L251bGwgMj4mMSAmJiB0ZXN0ICJYYGJhc2VuYW1lIC0tIC8gMj4mMWAiID0gIlgvIjsgdGhl bg0KPiArICBhc19iYXNlbmFtZT1iYXNlbmFtZQ0KPiArZWxzZQ0KPiArICBhc19iYXNlbmFtZT1m YWxzZQ0KPiArZmkNCj4gKw0KPiAraWYgKGFzX2Rpcj1gZGlybmFtZSAtLSAvYCAmJiB0ZXN0ICJY JGFzX2RpciIgPSBYLykgPi9kZXYvbnVsbCAyPiYxOyB0aGVuDQo+ICsgIGFzX2Rpcm5hbWU9ZGly bmFtZQ0KPiArZWxzZQ0KPiArICBhc19kaXJuYW1lPWZhbHNlDQo+ICtmaQ0KPiArDQo+ICthc19t ZT1gJGFzX2Jhc2VuYW1lIC0tICIkMCIgfHwNCj4gKyRhc19leHByIFgvIiQwIiA6ICcuKi9cKFte L11bXi9dKlwpLyokJyBcfCBcDQo+ICsJIFgiJDAiIDogJ1hcKC8vXCkkJyBcfCBcDQo+ICsJIFgi JDAiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fA0KPiArJGFzX2VjaG8gWC8iJDAiIHwN Cj4gKyAgICBzZWQgJy9eLipcL1woW14vXVteL10qXClcLyokL3sNCj4gKwkgICAgcy8vXDEvDQo+ ICsJICAgIHENCj4gKwkgIH0NCj4gKwkgIC9eWFwvXChcL1wvXCkkL3sNCj4gKwkgICAgcy8vXDEv DQo+ICsJICAgIHENCj4gKwkgIH0NCj4gKwkgIC9eWFwvXChcL1wpLiovew0KPiArCSAgICBzLy9c MS8NCj4gKwkgICAgcQ0KPiArCSAgfQ0KPiArCSAgcy8uKi8uLzsgcSdgDQo+ICsNCj4gKyMgQXZv aWQgZGVwZW5kaW5nIHVwb24gQ2hhcmFjdGVyIFJhbmdlcy4NCj4gK2FzX2NyX2xldHRlcnM9J2Fi Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Jw0KPiArYXNfY3JfTEVUVEVSUz0nQUJDREVGR0hJSktM TU5PUFFSU1RVVldYWVonDQo+ICthc19jcl9MZXR0ZXJzPSRhc19jcl9sZXR0ZXJzJGFzX2NyX0xF VFRFUlMNCj4gK2FzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4OScNCj4gK2FzX2NyX2FsbnVtPSRhc19j cl9MZXR0ZXJzJGFzX2NyX2RpZ2l0cw0KPiArDQo+ICtFQ0hPX0M9IEVDSE9fTj0gRUNIT19UPQ0K PiArY2FzZSBgZWNobyAtbiB4YCBpbiAjKCgoKCgNCj4gKy1uKikNCj4gKyAgY2FzZSBgZWNobyAn eHlcYydgIGluDQo+ICsgICpjKikgRUNIT19UPScJJzs7CSMgRUNIT19UIGlzIHNpbmdsZSB0YWIg Y2hhcmFjdGVyLg0KPiArICB4eSkgIEVDSE9fQz0nXGMnOzsNCj4gKyAgKikgICBlY2hvIGBlY2hv IGtzaDg4IGJ1ZyBvbiBBSVggNi4xYCA+IC9kZXYvbnVsbA0KPiArICAgICAgIEVDSE9fVD0nCSc7 Ow0KPiArICBlc2FjOzsNCj4gKyopDQo+ICsgIEVDSE9fTj0nLW4nOzsNCj4gK2VzYWMNCj4gKw0K PiArcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmZpbGUNCj4gK2lmIHRlc3QgLWQgY29u ZiQkLmRpcjsgdGhlbg0KPiArICBybSAtZiBjb25mJCQuZGlyL2NvbmYkJC5maWxlDQo+ICtlbHNl DQo+ICsgIHJtIC1mIGNvbmYkJC5kaXINCj4gKyAgbWtkaXIgY29uZiQkLmRpciAyPi9kZXYvbnVs bA0KPiArZmkNCj4gK2lmIChlY2hvID5jb25mJCQuZmlsZSkgMj4vZGV2L251bGw7IHRoZW4NCj4g KyAgaWYgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuDQo+ICsgICAg YXNfbG5fcz0nbG4gLXMnDQo+ICsgICAgIyAuLi4gYnV0IHRoZXJlIGFyZSB0d28gZ290Y2hhczoN Cj4gKyAgICAjIDEpIE9uIE1TWVMsIGJvdGggYGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUg ZGlyJyBmYWlsLg0KPiArICAgICMgMikgREpHUFAgPCAyLjA0IGhhcyBubyBzeW1saW5rczsgYGxu IC1zJyBjcmVhdGVzIGEgd3JhcHBlciBleGVjdXRhYmxlLg0KPiArICAgICMgSW4gYm90aCBjYXNl cywgd2UgaGF2ZSB0byBkZWZhdWx0IHRvIGBjcCAtcFInLg0KPiArICAgIGxuIC1zIGNvbmYkJC5m aWxlIGNvbmYkJC5kaXIgMj4vZGV2L251bGwgJiYgdGVzdCAhIC1mIGNvbmYkJC5leGUgfHwNCj4g KyAgICAgIGFzX2xuX3M9J2NwIC1wUicNCj4gKyAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQg Mj4vZGV2L251bGw7IHRoZW4NCj4gKyAgICBhc19sbl9zPWxuDQo+ICsgIGVsc2UNCj4gKyAgICBh c19sbl9zPSdjcCAtcFInDQo+ICsgIGZpDQo+ICtlbHNlDQo+ICsgIGFzX2xuX3M9J2NwIC1wUicN Cj4gK2ZpDQo+ICtybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZGlyL2NvbmYkJC5maWxl IGNvbmYkJC5maWxlDQo+ICtybWRpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsDQo+ICsNCj4gKw0K PiArIyBhc19mbl9ta2Rpcl9wDQo+ICsjIC0tLS0tLS0tLS0tLS0NCj4gKyMgQ3JlYXRlICIkYXNf ZGlyIiBhcyBhIGRpcmVjdG9yeSwgaW5jbHVkaW5nIHBhcmVudHMgaWYgbmVjZXNzYXJ5Lg0KPiAr YXNfZm5fbWtkaXJfcCAoKQ0KPiArew0KPiArDQo+ICsgIGNhc2UgJGFzX2RpciBpbiAjKA0KPiAr ICAtKikgYXNfZGlyPS4vJGFzX2Rpcjs7DQo+ICsgIGVzYWMNCj4gKyAgdGVzdCAtZCAiJGFzX2Rp ciIgfHwgZXZhbCAkYXNfbWtkaXJfcCB8fCB7DQo+ICsgICAgYXNfZGlycz0NCj4gKyAgICB3aGls ZSA6OyBkbw0KPiArICAgICAgY2FzZSAkYXNfZGlyIGluICMoDQo+ICsgICAgICAqXCcqKSBhc19x ZGlyPWAkYXNfZWNobyAiJGFzX2RpciIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImA7OyAjJygN Cj4gKyAgICAgICopIGFzX3FkaXI9JGFzX2Rpcjs7DQo+ICsgICAgICBlc2FjDQo+ICsgICAgICBh c19kaXJzPSInJGFzX3FkaXInICRhc19kaXJzIg0KPiArICAgICAgYXNfZGlyPWAkYXNfZGlybmFt ZSAtLSAiJGFzX2RpciIgfHwNCj4gKyRhc19leHByIFgiJGFzX2RpciIgOiAnWFwoLipbXi9dXCkv LypbXi9dW14vXSovKiQnIFx8IFwNCj4gKwkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpW14vXScgXHwg XA0KPiArCSBYIiRhc19kaXIiIDogJ1hcKC8vXCkkJyBcfCBcDQo+ICsJIFgiJGFzX2RpciIgOiAn WFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8DQo+ICskYXNfZWNobyBYIiRhc19kaXIiIHwNCj4g KyAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQvew0KPiArCSAgICBzLy9c MS8NCj4gKwkgICAgcQ0KPiArCSAgfQ0KPiArCSAgL15YXChcL1wvXClbXi9dLiovew0KPiArCSAg ICBzLy9cMS8NCj4gKwkgICAgcQ0KPiArCSAgfQ0KPiArCSAgL15YXChcL1wvXCkkL3sNCj4gKwkg ICAgcy8vXDEvDQo+ICsJICAgIHENCj4gKwkgIH0NCj4gKwkgIC9eWFwoXC9cKS4qL3sNCj4gKwkg ICAgcy8vXDEvDQo+ICsJICAgIHENCj4gKwkgIH0NCj4gKwkgIHMvLiovLi87IHEnYA0KPiArICAg ICAgdGVzdCAtZCAiJGFzX2RpciIgJiYgYnJlYWsNCj4gKyAgICBkb25lDQo+ICsgICAgdGVzdCAt eiAiJGFzX2RpcnMiIHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIg0KPiArICB9IHx8IHRlc3QgLWQg IiRhc19kaXIiIHx8IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSAkYXNf ZGlyIg0KPiArDQo+ICsNCj4gK30gIyBhc19mbl9ta2Rpcl9wDQo+ICtpZiBta2RpciAtcCAuIDI+ L2Rldi9udWxsOyB0aGVuDQo+ICsgIGFzX21rZGlyX3A9J21rZGlyIC1wICIkYXNfZGlyIicNCj4g K2Vsc2UNCj4gKyAgdGVzdCAtZCAuLy1wICYmIHJtZGlyIC4vLXANCj4gKyAgYXNfbWtkaXJfcD1m YWxzZQ0KPiArZmkNCj4gKw0KPiArDQo+ICsjIGFzX2ZuX2V4ZWN1dGFibGVfcCBGSUxFDQo+ICsj IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsjIFRlc3QgaWYgRklMRSBpcyBhbiBleGVjdXRh YmxlIHJlZ3VsYXIgZmlsZS4NCj4gK2FzX2ZuX2V4ZWN1dGFibGVfcCAoKQ0KPiArew0KPiArICB0 ZXN0IC1mICIkMSIgJiYgdGVzdCAteCAiJDEiDQo+ICt9ICMgYXNfZm5fZXhlY3V0YWJsZV9wDQo+ ICthc190ZXN0X3g9J3Rlc3QgLXgnDQo+ICthc19leGVjdXRhYmxlX3A9YXNfZm5fZXhlY3V0YWJs ZV9wDQo+ICsNCj4gKyMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxp ZCBDUFAgbmFtZS4NCj4gK2FzX3RyX2NwcD0iZXZhbCBzZWQgJ3klKiRhc19jcl9sZXR0ZXJzJVAk YXNfY3JfTEVUVEVSUyU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciDQo+ICsNCj4gKyMgU2VkIGV4 cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLg0KPiAr YXNfdHJfc2g9ImV2YWwgc2VkICd5JSorJXBwJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyINCj4g Kw0KPiArDQo+ICtleGVjIDY+JjENCj4gKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSAjIw0KPiArIyMgTWFpbiBib2R5IG9mICIkQ09ORklHX0xUIiBzY3JpcHQuICMjDQo+ICsj IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCj4gK2x0X2NsX3NpbGVudD1m YWxzZQ0KPiArZXhlYyA1Pj5jb25maWcubG9nDQo+ICt7DQo+ICsgIGVjaG8NCj4gKyAgc2VkICdo O3MvLi8tL2c7cy9eLi4uLyMjIC87cy8uLi4kLyAjIy87cDt4O3A7eCcgPDxfQVNCT1gNCj4gKyMj IFJ1bm5pbmcgJGFzX21lLiAjIw0KPiArX0FTQk9YDQo+ICt9ID4mNQ0KPiArDQo+ICtsdF9jbF9o ZWxwPSJcDQo+ICtcYCRhc19tZScgY3JlYXRlcyBhIGxvY2FsIGxpYnRvb2wgc3R1YiBmcm9tIHRo ZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24sDQo+ICtmb3IgdXNlIGluIGZ1cnRoZXIgY29uZmlndXJl IHRpbWUgdGVzdHMgYmVmb3JlIHRoZSByZWFsIGxpYnRvb2wgaXMNCj4gK2dlbmVyYXRlZC4NCj4g Kw0KPiArVXNhZ2U6ICQwIFtPUFRJT05TXQ0KPiArDQo+ICsgIC1oLCAtLWhlbHAgICAgICBwcmlu dCB0aGlzIGhlbHAsIHRoZW4gZXhpdA0KPiArICAtViwgLS12ZXJzaW9uICAgcHJpbnQgdmVyc2lv biBudW1iZXIsIHRoZW4gZXhpdA0KPiArICAtcSwgLS1xdWlldCAgICAgZG8gbm90IHByaW50IHBy b2dyZXNzIG1lc3NhZ2VzDQo+ICsgIC1kLCAtLWRlYnVnICAgICBkb24ndCByZW1vdmUgdGVtcG9y YXJ5IGZpbGVzDQo+ICsNCj4gK1JlcG9ydCBidWdzIHRvIDxidWctbGlidG9vbEBnbnUub3JnPi4i DQo+ICsNCj4gK2x0X2NsX3ZlcnNpb249IlwNCj4gK2NvbmZpZy5sdA0KPiArY29uZmlndXJlZCBi eSAkMCwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5Lg0KPiArDQo+ICtDb3B5cmlnaHQg KEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQo+ICtUaGlzIGNvbmZpZy5s dCBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0K PiArZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2Rp ZnkgaXQuIg0KPiArDQo+ICt3aGlsZSB0ZXN0ICQjICE9IDANCj4gK2RvDQo+ICsgIGNhc2UgJDEg aW4NCj4gKyAgICAtLXZlcnNpb24gfCAtLXYqIHwgLVYgKQ0KPiArICAgICAgZWNobyAiJGx0X2Ns X3ZlcnNpb24iOyBleGl0IDAgOzsNCj4gKyAgICAtLWhlbHAgfCAtLWgqIHwgLWggKQ0KPiArICAg ICAgZWNobyAiJGx0X2NsX2hlbHAiOyBleGl0IDAgOzsNCj4gKyAgICAtLWRlYnVnIHwgLS1kKiB8 IC1kICkNCj4gKyAgICAgIGRlYnVnPTogOzsNCj4gKyAgICAtLXF1aWV0IHwgLS1xKiB8IC0tc2ls ZW50IHwgLS1zKiB8IC1xICkNCj4gKyAgICAgIGx0X2NsX3NpbGVudD06IDs7DQo+ICsNCj4gKyAg ICAtKikgYXNfZm5fZXJyb3IgJD8gInVucmVjb2duaXplZCBvcHRpb246ICQxDQo+ICtUcnkgXGAk MCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgIiRMSU5FTk8iIDUgOzsNCj4gKw0KPiAr ICAgICopIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgYXJndW1lbnQ6ICQxDQo+ICtUcnkg XGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgIiRMSU5FTk8iIDUgOzsNCj4gKyAg ZXNhYw0KPiArICBzaGlmdA0KPiArZG9uZQ0KPiArDQo+ICtpZiAkbHRfY2xfc2lsZW50OyB0aGVu DQo+ICsgIGV4ZWMgNj4vZGV2L251bGwNCj4gK2ZpDQo+ICsNCj4gKw0KPiArIyBUaGUgSFAtVVgg a3NoIGFuZCBQT1NJWCBzaGVsbCBwcmludCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBzdGRvdXQN Cj4gKyMgaWYgQ0RQQVRIIGlzIHNldC4NCj4gKyh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4m MSAmJiB1bnNldCBDRFBBVEgNCj4gKw0KPiArc2VkX3F1b3RlX3N1YnN0PSdzL1woWyJgJFxcXVwp L1xcXDEvZycNCj4gK2RvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFsiYFxcXVwpL1xcXDEvZycNCj4g K2RlbGF5X3ZhcmlhYmxlX3N1YnN0PSdzL1xcXFxcXFxcXFxcJC9cXFxcXFwkL2cnDQo+ICttYWNy b192ZXJzaW9uPScyLjIuN2EnDQo+ICttYWNyb19yZXZpc2lvbj0nMS4zMTM0Jw0KPiArZW5hYmxl X3NoYXJlZD0neWVzJw0KPiArZW5hYmxlX3N0YXRpYz0neWVzJw0KPiArcGljX21vZGU9J2RlZmF1 bHQnDQo+ICtlbmFibGVfZmFzdF9pbnN0YWxsPSduZWVkbGVzcycNCj4gK1NIRUxMPScvYmluL2Jh c2gnDQo+ICtFQ0hPPSdwcmludGYgJXNcbicNCj4gK2hvc3RfYWxpYXM9J3g4Nl82NC1wYy1saW51 eC1nbnUnDQo+ICtob3N0PSd4ODZfNjQtcGMtbGludXgtZ251Jw0KPiAraG9zdF9vcz0nbGludXgt Z251Jw0KPiArYnVpbGRfYWxpYXM9J3g4Nl82NC1wYy1saW51eC1nbnUnDQo+ICtidWlsZD0neDg2 XzY0LXBjLWxpbnV4LWdudScNCj4gK2J1aWxkX29zPSdsaW51eC1nbnUnDQo+ICtTRUQ9Jy91c3Iv YmluL3NlZCcNCj4gK1hzZWQ9Jy91c3IvYmluL3NlZCAtZSAxcy9eWC8vJw0KPiArR1JFUD0nL3Vz ci9iaW4vZ3JlcCcNCj4gK0VHUkVQPScvdXNyL2Jpbi9ncmVwIC1FJw0KPiArRkdSRVA9Jy91c3Iv YmluL2dyZXAgLUYnDQo+ICtMRD0nbGQgLW0gZWxmX3g4Nl82NCcNCj4gK05NPScvdXNyL2Jpbi9u bSAtQicNCj4gK0xOX1M9J2xuIC1zJw0KPiArbWF4X2NtZF9sZW49JzE1NzI4NjQnDQo+ICthY19v YmpleHQ9J28nDQo+ICtleGVleHQ9JycNCj4gK2x0X3Vuc2V0PSd1bnNldCcNCj4gK2x0X1NQMk5M PSd0ciBcMDQwIFwwMTInDQo+ICtsdF9OTDJTUD0ndHIgXDAxNVwwMTIgXDA0MFwwNDAnDQo+ICty ZWxvYWRfZmxhZz0nIC1yJw0KPiArcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0 cHV0JHJlbG9hZF9vYmpzJw0KPiArT0JKRFVNUD0nb2JqZHVtcCcNCj4gK2RlcGxpYnNfY2hlY2tf bWV0aG9kPSdwYXNzX2FsbCcNCj4gK2ZpbGVfbWFnaWNfY21kPSckTUFHSUNfQ01EJw0KPiArQVI9 J2FyIC0tcGx1Z2luIC91c3IvbGliL2djYy94ODZfNjQtbGludXgtZ251LzExL2xpYmx0b19wbHVn aW4uc28gLS1wbHVnaW4gL3Vzci9saWIvZ2NjL3g4Nl82NC1saW51eC1nbnUvMTEvbGlibHRvX3Bs dWdpbi5zbycNCj4gK0FSX0ZMQUdTPSdyYycNCj4gK1NUUklQPSdzdHJpcCcNCj4gK1JBTkxJQj0n cmFubGliIC0tcGx1Z2luIC91c3IvbGliL2djYy94ODZfNjQtbGludXgtZ251LzExL2xpYmx0b19w bHVnaW4uc28gLS1wbHVnaW4gL3Vzci9saWIvZ2NjL3g4Nl82NC1saW51eC1nbnUvMTEvbGlibHRv X3BsdWdpbi5zbycNCj4gK29sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYn4k UkFOTElCICRvbGRsaWInDQo+ICtvbGRfcG9zdHVuaW5zdGFsbF9jbWRzPScnDQo+ICtvbGRfYXJj aGl2ZV9jbWRzPSckQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2Jqc34kUkFOTElCICRvbGRsaWIn DQo+ICtsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb249J25vJw0KPiArQ0M9J2djYycNCj4gK0NG TEFHUz0nLWcgLU8yICAgICcNCj4gK2NvbXBpbGVyPSdnKysnDQo+ICtHQ0M9J3llcycNCj4gK2x0 X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J3NlZCAtbiAtZSAnXCcncy9eLipbCSBdXChbQUJD REdJUlNUV11bQUJDREdJUlNUV10qXClbCSBdWwkgXSpcKFtfQS1aYS16XVtfQS1aYS16MC05XSpc KSQvXDEgXDIgXDIvcCdcJycnDQo+ICtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0n c2VkIC1uIC1lICdcJydzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJ1wnJyAtZSAn XCcncy9eW0FCQ0RHSVJTVFddKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJ1wnJycNCj4g K2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdzZWQgLW4gLWUgJ1wn J3MvXjogXChbXiBdKlwpICQvICB7XCJcMVwiLCAodm9pZCAqKSAwfSwvcCdcJycgLWUgJ1wnJ3Mv XltBQkNER0lSU1RXXSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7IlwyIiwgKHZvaWQgKikgXCZc Mn0sL3AnXCcnJw0KPiArbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3Nf bGliX3ByZWZpeD0nc2VkIC1uIC1lICdcJydzL146IFwoW14gXSpcKSAkLyAge1wiXDFcIiwgKHZv aWQgKikgMH0sL3AnXCcnIC1lICdcJydzL15bQUJDREdJUlNUV10qIFwoW14gXSpcKSBcKGxpYlte IF0qXCkkLyAgeyJcMiIsICh2b2lkICopIFwmXDJ9LC9wJ1wnJyAtZSAnXCcncy9eW0FCQ0RHSVJT VFddKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHsibGliXDIiLCAodm9pZCAqKSBcJlwyfSwvcCdc JycnDQo+ICtvYmpkaXI9Jy5saWJzJw0KPiArTUFHSUNfQ01EPSdmaWxlJw0KPiArbHRfcHJvZ19j b21waWxlcl9ub19idWlsdGluX2ZsYWc9JyAtZm5vLWJ1aWx0aW4nDQo+ICtsdF9wcm9nX2NvbXBp bGVyX3dsPSctV2wsJw0KPiArbHRfcHJvZ19jb21waWxlcl9waWM9JyAtZlBJQyAtRFBJQycNCj4g K2x0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctc3RhdGljJw0KPiArbHRfY3ZfcHJvZ19jb21waWxl cl9jX289J3llcycNCj4gK25lZWRfbG9ja3M9J25vJw0KPiArRFNZTVVUSUw9J2RzeW11dGlsJw0K PiArTk1FRElUPScnDQo+ICtMSVBPPSdsaXBvJw0KPiArT1RPT0w9J290b29sJw0KPiArT1RPT0w2 ND0nJw0KPiArbGliZXh0PSdhJw0KPiArc2hyZXh0X2NtZHM9Jy5zbycNCj4gK2V4dHJhY3RfZXhw c3ltc19jbWRzPScnDQo+ICthcmNoaXZlX2NtZHNfbmVlZF9sYz0nbm8nDQo+ICtlbmFibGVfc2hh cmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPSdubycNCj4gK2V4cG9ydF9keW5hbWljX2ZsYWdfc3Bl Yz0nJHt3bH0tLWV4cG9ydC1keW5hbWljJw0KPiArd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7 d2x9LS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJw0K PiArY29tcGlsZXJfbmVlZHNfb2JqZWN0PSdubycNCj4gK29sZF9hcmNoaXZlX2Zyb21fbmV3X2Nt ZHM9JycNCj4gK29sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzPScnDQo+ICthcmNoaXZlX2Nt ZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxh Z3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicNCj4gK2FyY2hpdmVfZXhwc3ltX2Nt ZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+DQo+ICsJ ICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRw dXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4NCj4gKwkgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAk b3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+DQo+ICsJICAgICRDQyAtc2hhcmVkICRwaWNfZmxh ZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25h bWUgJHt3bH0tdmVyc2lvbi1zY3JpcHQgJHt3bH0kb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIg LW8gJGxpYicNCj4gK21vZHVsZV9jbWRzPScnDQo+ICttb2R1bGVfZXhwc3ltX2NtZHM9JycNCj4g K3dpdGhfZ251X2xkPSd5ZXMnDQo+ICthbGxvd191bmRlZmluZWRfZmxhZz0nJw0KPiArbm9fdW5k ZWZpbmVkX2ZsYWc9JycNCj4gK2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRo ICR7d2x9JGxpYmRpcicNCj4gK2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9JycNCj4gK2hh cmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JycNCj4gK2hhcmRjb2RlX2RpcmVjdD0nbm8nDQo+ICto YXJkY29kZV9kaXJlY3RfYWJzb2x1dGU9J25vJw0KPiAraGFyZGNvZGVfbWludXNfTD0nbm8nDQo+ ICtoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSd1bnN1cHBvcnRlZCcNCj4gK2hhcmRjb2RlX2F1dG9t YXRpYz0nbm8nDQo+ICtpbmhlcml0X3JwYXRoPSdubycNCj4gK2xpbmtfYWxsX2RlcGxpYnM9J3Vu a25vd24nDQo+ICtmaXhfc3JjZmlsZV9wYXRoPScnDQo+ICthbHdheXNfZXhwb3J0X3N5bWJvbHM9 J25vJw0KPiArZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8 ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlx ID4gJGV4cG9ydF9zeW1ib2xzJw0KPiArZXhjbHVkZV9leHBzeW1zPSdfR0xPQkFMX09GRlNFVF9U QUJMRV98X0dMT0JBTF9fRltJRF1fLionDQo+ICtpbmNsdWRlX2V4cHN5bXM9JycNCj4gK3ByZWxp bmtfY21kcz0nJw0KPiArZmlsZV9saXN0X3NwZWM9JycNCj4gK3ZhcmlhYmxlc19zYXZlZF9mb3Jf cmVsaW5rPSdQQVRIIExEX0xJQlJBUllfUEFUSCBMRF9SVU5fUEFUSCBHQ0NfRVhFQ19QUkVGSVgg Q09NUElMRVJfUEFUSCBMSUJSQVJZX1BBVEgnDQo+ICtuZWVkX2xpYl9wcmVmaXg9J25vJw0KPiAr bmVlZF92ZXJzaW9uPSdubycNCj4gK3ZlcnNpb25fdHlwZT0nbGludXgnDQo+ICtydW5wYXRoX3Zh cj0nTERfUlVOX1BBVEgnDQo+ICtzaGxpYnBhdGhfdmFyPSdMRF9MSUJSQVJZX1BBVEgnDQo+ICtz aGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9J3llcycNCj4gK2xpYm5hbWVfc3BlYz0nbGliJG5h bWUnDQo+ICtsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRf ZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRs aWJuYW1lJHtzaGFyZWRfZXh0fScNCj4gK3NvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNl fSR7c2hhcmVkX2V4dH0kbWFqb3InDQo+ICtpbnN0YWxsX292ZXJyaWRlX21vZGU9JycNCj4gK3Bv c3RpbnN0YWxsX2NtZHM9JycNCj4gK3Bvc3R1bmluc3RhbGxfY21kcz0nJw0KPiArZmluaXNoX2Nt ZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW4gJGxpYmRpcicNCj4gK2ZpbmlzaF9l dmFsPScnDQo+ICtoYXJkY29kZV9pbnRvX2xpYnM9J3llcycNCj4gK3N5c19saWJfc2VhcmNoX3Bh dGhfc3BlYz0nL3Vzci9saWIvZ2NjL3g4Nl82NC1saW51eC1nbnUvMTEgL3Vzci9saWIveDg2XzY0 LWxpbnV4LWdudSAvdXNyL2xpYiAvbGliL3g4Nl82NC1saW51eC1nbnUgL2xpYiAnDQo+ICtzeXNf bGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2xpYiAvdXNyL2xpYiAvdXNyL2xpYi94ODZfNjQtbGlu dXgtZ251L2xpYmZha2Vyb290IC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL3g4Nl82NC1s aW51eC1nbnUgL2xpYi94ODZfNjQtbGludXgtZ251IC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUg L2xpYjMyIC91c3IvbGliMzIgJw0KPiAraGFyZGNvZGVfYWN0aW9uPSdpbW1lZGlhdGUnDQo+ICtl bmFibGVfZGxvcGVuPSd1bmtub3duJw0KPiArZW5hYmxlX2Rsb3Blbl9zZWxmPSd1bmtub3duJw0K PiArZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz0ndW5rbm93bicNCj4gK29sZF9zdHJpcGxpYj0n c3RyaXAgLS1zdHJpcC1kZWJ1ZycNCj4gK3N0cmlwbGliPSdzdHJpcCAtLXN0cmlwLXVubmVlZGVk Jw0KPiArY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzPScnDQo+ICtwcmVkZXBfb2JqZWN0cz0nJw0K PiArcG9zdGRlcF9vYmplY3RzPScnDQo+ICtwcmVkZXBzPScnDQo+ICtwb3N0ZGVwcz0nJw0KPiAr Y29tcGlsZXJfbGliX3NlYXJjaF9wYXRoPScnDQo+ICtMRF9DWFg9J2xkIC1tIGVsZl94ODZfNjQn DQo+ICtyZWxvYWRfZmxhZ19DWFg9JyAtcicNCj4gK3JlbG9hZF9jbWRzX0NYWD0nJExEJHJlbG9h ZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnDQo+ICtvbGRfYXJjaGl2ZV9jbWRzX0NYWD0n JEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianN+JFJBTkxJQiAkb2xkbGliJw0KPiArY29tcGls ZXJfQ1hYPSdnKysnDQo+ICtHQ0NfQ1hYPSd5ZXMnDQo+ICtsdF9wcm9nX2NvbXBpbGVyX25vX2J1 aWx0aW5fZmxhZ19DWFg9JyAtZm5vLWJ1aWx0aW4nDQo+ICtsdF9wcm9nX2NvbXBpbGVyX3dsX0NY WD0nLVdsLCcNCj4gK2x0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nIC1mUElDIC1EUElDJw0KPiAr bHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSctc3RhdGljJw0KPiArbHRfY3ZfcHJvZ19jb21w aWxlcl9jX29fQ1hYPSd5ZXMnDQo+ICthcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9J25vJw0KPiAr ZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9J25vJw0KPiArZXhwb3J0X2R5 bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHt3bH0tLWV4cG9ydC1keW5hbWljJw0KPiArd2hvbGVfYXJj aGl2ZV9mbGFnX3NwZWNfQ1hYPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3ds fS0tbm8td2hvbGUtYXJjaGl2ZScNCj4gK2NvbXBpbGVyX25lZWRzX29iamVjdF9DWFg9J25vJw0K PiArb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kc19DWFg9JycNCj4gK29sZF9hcmNoaXZlX2Zyb21f ZXhwc3ltc19jbWRzX0NYWD0nJw0KPiArYXJjaGl2ZV9jbWRzX0NYWD0nJENDICRwaWNfZmxhZyAt c2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3Rk ZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxp YicNCj4gK2FyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSckQ0MgJHBpY19mbGFnIC1zaGFyZWQgLW5v c3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3Rz ICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3lt Ym9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJw0KPiArbW9kdWxlX2NtZHNfQ1hY PScnDQo+ICttb2R1bGVfZXhwc3ltX2NtZHNfQ1hYPScnDQo+ICt3aXRoX2dudV9sZF9DWFg9J3ll cycNCj4gK2FsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD0nJw0KPiArbm9fdW5kZWZpbmVkX2ZsYWdf Q1hYPScnDQo+ICtoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tcnBhdGggJHt3 bH0kbGliZGlyJw0KPiAraGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZF9DWFg9JycNCj4gK2hh cmRjb2RlX2xpYmRpcl9zZXBhcmF0b3JfQ1hYPScnDQo+ICtoYXJkY29kZV9kaXJlY3RfQ1hYPSdu bycNCj4gK2hhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZV9DWFg9J25vJw0KPiAraGFyZGNvZGVfbWlu dXNfTF9DWFg9J25vJw0KPiAraGFyZGNvZGVfc2hsaWJwYXRoX3Zhcl9DWFg9J3Vuc3VwcG9ydGVk Jw0KPiAraGFyZGNvZGVfYXV0b21hdGljX0NYWD0nbm8nDQo+ICtpbmhlcml0X3JwYXRoX0NYWD0n bm8nDQo+ICtsaW5rX2FsbF9kZXBsaWJzX0NYWD0ndW5rbm93bicNCj4gK2ZpeF9zcmNmaWxlX3Bh dGhfQ1hYPScnDQo+ICthbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYPSdubycNCj4gK2V4cG9ydF9z eW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1i b2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5 bWJvbHMnDQo+ICtleGNsdWRlX2V4cHN5bXNfQ1hYPSdfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dM T0JBTF9fRltJRF1fLionDQo+ICtpbmNsdWRlX2V4cHN5bXNfQ1hYPScnDQo+ICtwcmVsaW5rX2Nt ZHNfQ1hYPScnDQo+ICtmaWxlX2xpc3Rfc3BlY19DWFg9JycNCj4gK2hhcmRjb2RlX2FjdGlvbl9D WFg9J2ltbWVkaWF0ZScNCj4gK2NvbXBpbGVyX2xpYl9zZWFyY2hfZGlyc19DWFg9Jy91c3IvbGli L2djYy94ODZfNjQtbGludXgtZ251LzExIC91c3IvbGliL2djYy94ODZfNjQtbGludXgtZ251LzEx Ly4uLy4uLy4uL3g4Nl82NC1saW51eC1nbnUgL3Vzci9saWIvZ2NjL3g4Nl82NC1saW51eC1nbnUv MTEvLi4vLi4vLi4vLi4vbGliIC9saWIveDg2XzY0LWxpbnV4LWdudSAvbGliLy4uL2xpYiAvdXNy L2xpYi94ODZfNjQtbGludXgtZ251IC91c3IvbGliLy4uL2xpYiAvdXNyL2xpYi9nY2MveDg2XzY0 LWxpbnV4LWdudS8xMS8uLi8uLi8uLicNCj4gK3ByZWRlcF9vYmplY3RzX0NYWD0nL3Vzci9saWIv Z2NjL3g4Nl82NC1saW51eC1nbnUvMTEvLi4vLi4vLi4veDg2XzY0LWxpbnV4LWdudS9jcnRpLm8g L3Vzci9saWIvZ2NjL3g4Nl82NC1saW51eC1nbnUvMTEvY3J0YmVnaW5TLm8nDQo+ICtwb3N0ZGVw X29iamVjdHNfQ1hYPScvdXNyL2xpYi9nY2MveDg2XzY0LWxpbnV4LWdudS8xMS9jcnRlbmRTLm8g L3Vzci9saWIvZ2NjL3g4Nl82NC1saW51eC1nbnUvMTEvLi4vLi4vLi4veDg2XzY0LWxpbnV4LWdu dS9jcnRuLm8nDQo+ICtwcmVkZXBzX0NYWD0nJw0KPiArcG9zdGRlcHNfQ1hYPSctbHN0ZGMrKyAt bG0gLWxnY2NfcyAtbGMgLWxnY2NfcycNCj4gK2NvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aF9DWFg9 Jy1ML3Vzci9saWIvZ2NjL3g4Nl82NC1saW51eC1nbnUvMTEgLUwvdXNyL2xpYi9nY2MveDg2XzY0 LWxpbnV4LWdudS8xMS8uLi8uLi8uLi94ODZfNjQtbGludXgtZ251IC1ML3Vzci9saWIvZ2NjL3g4 Nl82NC1saW51eC1nbnUvMTEvLi4vLi4vLi4vLi4vbGliIC1ML2xpYi94ODZfNjQtbGludXgtZ251 IC1ML2xpYi8uLi9saWIgLUwvdXNyL2xpYi94ODZfNjQtbGludXgtZ251IC1ML3Vzci9saWIvLi4v bGliIC1ML3Vzci9saWIvZ2NjL3g4Nl82NC1saW51eC1nbnUvMTEvLi4vLi4vLi4nDQo+ICsNCj4g K0xUQ0M9J2djYycNCj4gK0xUQ0ZMQUdTPSctZyAtTzIgICAgJw0KPiArY29tcGlsZXI9J2djYycN Cj4gKw0KPiArIyBBIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB3aGVuIHRoZXJlIGlzIG5vIHByaW50 IGJ1aWx0aW4gb3IgcHJpbnRmLg0KPiArZnVuY19mYWxsYmFja19lY2hvICgpDQo+ICt7DQo+ICsg IGV2YWwgJ2NhdCA8PF9MVEVDSE9fRU9GDQo+ICskMQ0KPiArX0xURUNIT19FT0YnDQo+ICt9DQo+ ICsNCj4gKyMgUXVvdGUgZXZhbGVkIHN0cmluZ3MuDQo+ICtmb3IgdmFyIGluIFNIRUxMIEVDSE8g U0VEIEdSRVAgRUdSRVAgRkdSRVAgTEQgTk0gTE5fUyBsdF9TUDJOTCBsdF9OTDJTUCByZWxvYWRf ZmxhZyBPQkpEVU1QIGRlcGxpYnNfY2hlY2tfbWV0aG9kIGZpbGVfbWFnaWNfY21kIEFSIEFSX0ZM QUdTIFNUUklQIFJBTkxJQiBDQyBDRkxBR1MgY29tcGlsZXIgbHRfY3Zfc3lzX2dsb2JhbF9zeW1i b2xfcGlwZSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBsdF9jdl9zeXNfZ2xvYmFs X3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25h bWVfYWRkcmVzc19saWJfcHJlZml4IGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIGx0 X3Byb2dfY29tcGlsZXJfd2wgbHRfcHJvZ19jb21waWxlcl9waWMgbHRfcHJvZ19jb21waWxlcl9z dGF0aWMgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gbmVlZF9sb2NrcyBEU1lNVVRJTCBOTUVESVQg TElQTyBPVE9PTCBPVE9PTDY0IHNocmV4dF9jbWRzIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYyB3 aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyBjb21waWxlcl9uZWVkc19vYmplY3Qgd2l0aF9nbnVfbGQg YWxsb3dfdW5kZWZpbmVkX2ZsYWcgbm9fdW5kZWZpbmVkX2ZsYWcgaGFyZGNvZGVfbGliZGlyX2Zs YWdfc3BlYyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIGhhcmRjb2RlX2xpYmRpcl9zZXBh cmF0b3IgZml4X3NyY2ZpbGVfcGF0aCBleGNsdWRlX2V4cHN5bXMgaW5jbHVkZV9leHBzeW1zIGZp bGVfbGlzdF9zcGVjIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIGxpYm5hbWVfc3BlYyBsaWJy YXJ5X25hbWVzX3NwZWMgc29uYW1lX3NwZWMgaW5zdGFsbF9vdmVycmlkZV9tb2RlIGZpbmlzaF9l dmFsIG9sZF9zdHJpcGxpYiBzdHJpcGxpYiBjb21waWxlcl9saWJfc2VhcmNoX2RpcnMgcHJlZGVw X29iamVjdHMgcG9zdGRlcF9vYmplY3RzIHByZWRlcHMgcG9zdGRlcHMgY29tcGlsZXJfbGliX3Nl YXJjaF9wYXRoIExEX0NYWCByZWxvYWRfZmxhZ19DWFggY29tcGlsZXJfQ1hYIGx0X3Byb2dfY29t cGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWCBsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCBsdF9wcm9n X2NvbXBpbGVyX3BpY19DWFggbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYIGx0X2N2X3Byb2df Y29tcGlsZXJfY19vX0NYWCBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYIHdob2xlX2FyY2hp dmVfZmxhZ19zcGVjX0NYWCBjb21waWxlcl9uZWVkc19vYmplY3RfQ1hYIHdpdGhfZ251X2xkX0NY WCBhbGxvd191bmRlZmluZWRfZmxhZ19DWFggbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYIGhhcmRjb2Rl X2xpYmRpcl9mbGFnX3NwZWNfQ1hYIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRfQ1hYIGhh cmRjb2RlX2xpYmRpcl9zZXBhcmF0b3JfQ1hYIGZpeF9zcmNmaWxlX3BhdGhfQ1hYIGV4Y2x1ZGVf ZXhwc3ltc19DWFggaW5jbHVkZV9leHBzeW1zX0NYWCBmaWxlX2xpc3Rfc3BlY19DWFggY29tcGls ZXJfbGliX3NlYXJjaF9kaXJzX0NYWCBwcmVkZXBfb2JqZWN0c19DWFggcG9zdGRlcF9vYmplY3Rz X0NYWCBwcmVkZXBzX0NYWCBwb3N0ZGVwc19DWFggY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoX0NY WDsgZG8NCj4gKyAgICBjYXNlIGBldmFsIFxcJEVDSE8gXFwiIlxcJCR2YXIiXFwiYCBpbg0KPiAr ICAgICpbXFxcYFwiXCRdKikNCj4gKyAgICAgIGV2YWwgImx0XyR2YXI9XFxcIlxgXCRFQ0hPIFwi XCQkdmFyXCIgfCBcJFNFRCBcIlwkc2VkX3F1b3RlX3N1YnN0XCJcYFxcXCIiDQo+ICsgICAgICA7 Ow0KPiArICAgICopDQo+ICsgICAgICBldmFsICJsdF8kdmFyPVxcXCJcJCR2YXJcXFwiIg0KPiAr ICAgICAgOzsNCj4gKyAgICBlc2FjDQo+ICtkb25lDQo+ICsNCj4gKyMgRG91YmxlLXF1b3RlIGRv dWJsZS1ldmFsZWQgc3RyaW5ncy4NCj4gK2ZvciB2YXIgaW4gcmVsb2FkX2NtZHMgb2xkX3Bvc3Rp bnN0YWxsX2NtZHMgb2xkX3Bvc3R1bmluc3RhbGxfY21kcyBvbGRfYXJjaGl2ZV9jbWRzIGV4dHJh Y3RfZXhwc3ltc19jbWRzIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMgb2xkX2FyY2hpdmVfZnJv bV9leHBzeW1zX2NtZHMgYXJjaGl2ZV9jbWRzIGFyY2hpdmVfZXhwc3ltX2NtZHMgbW9kdWxlX2Nt ZHMgbW9kdWxlX2V4cHN5bV9jbWRzIGV4cG9ydF9zeW1ib2xzX2NtZHMgcHJlbGlua19jbWRzIHBv c3RpbnN0YWxsX2NtZHMgcG9zdHVuaW5zdGFsbF9jbWRzIGZpbmlzaF9jbWRzIHN5c19saWJfc2Vh cmNoX3BhdGhfc3BlYyBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYyByZWxvYWRfY21kc19DWFgg b2xkX2FyY2hpdmVfY21kc19DWFggb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kc19DWFggb2xkX2Fy Y2hpdmVfZnJvbV9leHBzeW1zX2NtZHNfQ1hYIGFyY2hpdmVfY21kc19DWFggYXJjaGl2ZV9leHBz eW1fY21kc19DWFggbW9kdWxlX2NtZHNfQ1hYIG1vZHVsZV9leHBzeW1fY21kc19DWFggZXhwb3J0 X3N5bWJvbHNfY21kc19DWFggcHJlbGlua19jbWRzX0NYWDsgZG8NCj4gKyAgICBjYXNlIGBldmFs IFxcJEVDSE8gXFwiIlxcJCR2YXIiXFwiYCBpbg0KPiArICAgICpbXFxcYFwiXCRdKikNCj4gKyAg ICAgIGV2YWwgImx0XyR2YXI9XFxcIlxgXCRFQ0hPIFwiXCQkdmFyXCIgfCBcJFNFRCAtZSBcIlwk ZG91YmxlX3F1b3RlX3N1YnN0XCIgLWUgXCJcJHNlZF9xdW90ZV9zdWJzdFwiIC1lIFwiXCRkZWxh eV92YXJpYWJsZV9zdWJzdFwiXGBcXFwiIg0KPiArICAgICAgOzsNCj4gKyAgICAqKQ0KPiArICAg ICAgZXZhbCAibHRfJHZhcj1cXFwiXCQkdmFyXFxcIiINCj4gKyAgICAgIDs7DQo+ICsgICAgZXNh Yw0KPiArZG9uZQ0KPiArDQo+ICthY19hdXhfZGlyPScuLicNCj4gK3hzaV9zaGVsbD0neWVzJw0K PiArbHRfc2hlbGxfYXBwZW5kPSd5ZXMnDQo+ICsNCj4gKyMgU2VlIGlmIHdlIGFyZSBydW5uaW5n IG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB3aGljaCBhbGxvdyBvdXINCj4gKyMgY29tbWFu ZHMgdGhyb3VnaCB3aXRob3V0IHJlbW92YWwgb2YgXCBlc2NhcGVzIElOSVQuDQo+ICtpZiB0ZXN0 IC1uICIke1pTSF9WRVJTSU9OK3NldH0iIDsgdGhlbg0KPiArICAgc2V0b3B0IE5PX0dMT0JfU1VC U1QNCj4gK2ZpDQo+ICsNCj4gKw0KPiArICAgIFBBQ0tBR0U9JycNCj4gKyAgICBWRVJTSU9OPScn DQo+ICsgICAgVElNRVNUQU1QPScnDQo+ICsgICAgUk09J3JtIC1mJw0KPiArICAgIG9maWxlPSds aWJ0b29sJw0KPiArDQo+ICsNCj4gKw0KPiArDQo+ICsNCj4gK3sgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY3JlYXRpbmcgJG9maWxlIiA+JjUNCj4gKyRhc19lY2hvICIk YXNfbWU6IGNyZWF0aW5nICRvZmlsZSIgPiY2O30NCj4gKw0KPiArDQo+ICsgICAgIyBTZWUgaWYg d2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91 cg0KPiArICAgICMgY29tbWFuZHMgdGhyb3VnaCB3aXRob3V0IHJlbW92YWwgb2YgXCBlc2NhcGVz Lg0KPiArICAgIGlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgOyB0aGVuDQo+ICsgICAg ICBzZXRvcHQgTk9fR0xPQl9TVUJTVA0KPiArICAgIGZpDQo+ICsNCj4gKyAgICBjZmdmaWxlPSIk e29maWxlfVQiDQo+ICsgICAgdHJhcCAiJFJNIFwiJGNmZ2ZpbGVcIjsgZXhpdCAxIiAxIDIgMTUN Cj4gKyAgICAkUk0gIiRjZmdmaWxlIg0KPiArDQo+ICsgICAgY2F0IDw8X0xUX0VPRiA+PiAiJGNm Z2ZpbGUiDQo+ICsjISAkU0hFTEwNCj4gKw0KPiArIyBgJEVDSE8gIiRvZmlsZSIgfCBzZWQgJ3Ml Xi4qLyUlJ2AgLSBQcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVpbGRpbmcgc3VwcG9ydCBz ZXJ2aWNlcy4NCj4gKyMgR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgJGFzX21lICgkUEFDS0FH RSRUSU1FU1RBTVApICRWRVJTSU9ODQo+ICsjIExpYnRvb2wgd2FzIGNvbmZpZ3VyZWQgb24gaG9z dCBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWA6DQo+ICsjIE5P VEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFp bi5zaC4NCj4gKyMNCj4gKyMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTks IDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsDQo+ICsjICAgICAgICAgICAgICAgICAyMDA2 LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KPiArIyAg IFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYNCj4gKyMNCj4gKyMgICBUaGlzIGZp bGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4NCj4gKyMNCj4gKyMgR05VIExpYnRvb2wgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQo+ICsjIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzDQo+ ICsjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyIG9mDQo+ICsjIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLg0KPiArIw0KPiArIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSwNCj4gKyMgaWYgeW91IGRpc3RyaWJ1dGUgdGhpcyBmaWxl IGFzIHBhcnQgb2YgYSBwcm9ncmFtIG9yIGxpYnJhcnkgdGhhdA0KPiArIyBpcyBidWlsdCB1c2lu ZyBHTlUgTGlidG9vbCwgeW91IG1heSBpbmNsdWRlIHRoaXMgZmlsZSB1bmRlciB0aGUNCj4gKyMg c2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0 IHByb2dyYW0uDQo+ICsjDQo+ICsjIEdOVSBMaWJ0b29sIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ICsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+ICsjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCj4gKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCj4gKyMNCj4gKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UNCj4gKyMgYWxvbmcgd2l0aCBHTlUgTGlidG9vbDsgc2VlIHRoZSBmaWxlIENPUFlJ TkcuICBJZiBub3QsIGEgY29weQ0KPiArIyBjYW4gYmUgZG93bmxvYWRlZCBmcm9tIGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbCwgb3INCj4gKyMgb2J0YWluZWQgYnkgd3JpdGlu ZyB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLA0KPiArIyA1MSBGcmFua2xp biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4NCj4gKw0K PiArDQo+ICsjIFRoZSBuYW1lcyBvZiB0aGUgdGFnZ2VkIGNvbmZpZ3VyYXRpb25zIHN1cHBvcnRl ZCBieSB0aGlzIHNjcmlwdC4NCj4gK2F2YWlsYWJsZV90YWdzPSJDWFggIg0KPiArDQo+ICsjICMj IyBCRUdJTiBMSUJUT09MIENPTkZJRw0KPiArDQo+ICsjIFdoaWNoIHJlbGVhc2Ugb2YgbGlidG9v bC5tNCB3YXMgdXNlZD8NCj4gK21hY3JvX3ZlcnNpb249JG1hY3JvX3ZlcnNpb24NCj4gK21hY3Jv X3JldmlzaW9uPSRtYWNyb19yZXZpc2lvbg0KPiArDQo+ICsjIFdoZXRoZXIgb3Igbm90IHRvIGJ1 aWxkIHNoYXJlZCBsaWJyYXJpZXMuDQo+ICtidWlsZF9saWJ0b29sX2xpYnM9JGVuYWJsZV9zaGFy ZWQNCj4gKw0KPiArIyBXaGV0aGVyIG9yIG5vdCB0byBidWlsZCBzdGF0aWMgbGlicmFyaWVzLg0K PiArYnVpbGRfb2xkX2xpYnM9JGVuYWJsZV9zdGF0aWMNCj4gKw0KPiArIyBXaGF0IHR5cGUgb2Yg b2JqZWN0cyB0byBidWlsZC4NCj4gK3BpY19tb2RlPSRwaWNfbW9kZQ0KPiArDQo+ICsjIFdoZXRo ZXIgb3Igbm90IHRvIG9wdGltaXplIGZvciBmYXN0IGluc3RhbGxhdGlvbi4NCj4gK2Zhc3RfaW5z dGFsbD0kZW5hYmxlX2Zhc3RfaW5zdGFsbA0KPiArDQo+ICsjIFNoZWxsIHRvIHVzZSB3aGVuIGlu dm9raW5nIHNoZWxsIHNjcmlwdHMuDQo+ICtTSEVMTD0kbHRfU0hFTEwNCj4gKw0KPiArIyBBbiBl Y2hvIHByb2dyYW0gdGhhdCBwcm90ZWN0cyBiYWNrc2xhc2hlcy4NCj4gK0VDSE89JGx0X0VDSE8N Cj4gKw0KPiArIyBUaGUgaG9zdCBzeXN0ZW0uDQo+ICtob3N0X2FsaWFzPSRob3N0X2FsaWFzDQo+ ICtob3N0PSRob3N0DQo+ICtob3N0X29zPSRob3N0X29zDQo+ICsNCj4gKyMgVGhlIGJ1aWxkIHN5 c3RlbS4NCj4gK2J1aWxkX2FsaWFzPSRidWlsZF9hbGlhcw0KPiArYnVpbGQ9JGJ1aWxkDQo+ICti dWlsZF9vcz0kYnVpbGRfb3MNCj4gKw0KPiArIyBBIHNlZCBwcm9ncmFtIHRoYXQgZG9lcyBub3Qg dHJ1bmNhdGUgb3V0cHV0Lg0KPiArU0VEPSRsdF9TRUQNCj4gKw0KPiArIyBTZWQgdGhhdCBoZWxw cyB1cyBhdm9pZCBhY2NpZGVudGFsbHkgdHJpZ2dlcmluZyBlY2hvKDEpIG9wdGlvbnMgbGlrZSAt bi4NCj4gK1hzZWQ9IlwkU0VEIC1lIDFzL15YLy8iDQo+ICsNCj4gKyMgQSBncmVwIHByb2dyYW0g dGhhdCBoYW5kbGVzIGxvbmcgbGluZXMuDQo+ICtHUkVQPSRsdF9HUkVQDQo+ICsNCj4gKyMgQW4g RVJFIG1hdGNoZXIuDQo+ICtFR1JFUD0kbHRfRUdSRVANCj4gKw0KPiArIyBBIGxpdGVyYWwgc3Ry aW5nIG1hdGNoZXIuDQo+ICtGR1JFUD0kbHRfRkdSRVANCj4gKw0KPiArIyBBIEJTRC0gb3IgTVMt Y29tcGF0aWJsZSBuYW1lIGxpc3Rlci4NCj4gK05NPSRsdF9OTQ0KPiArDQo+ICsjIFdoZXRoZXIg d2UgbmVlZCBzb2Z0IG9yIGhhcmQgbGlua3MuDQo+ICtMTl9TPSRsdF9MTl9TDQo+ICsNCj4gKyMg V2hhdCBpcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgYSBjb21tYW5kPw0KPiArbWF4X2NtZF9sZW49 JG1heF9jbWRfbGVuDQo+ICsNCj4gKyMgT2JqZWN0IGZpbGUgc3VmZml4IChub3JtYWxseSAibyIp Lg0KPiArb2JqZXh0PSRhY19vYmpleHQNCj4gKw0KPiArIyBFeGVjdXRhYmxlIGZpbGUgc3VmZml4 IChub3JtYWxseSAiIikuDQo+ICtleGVleHQ9JGV4ZWV4dA0KPiArDQo+ICsjIHdoZXRoZXIgdGhl IHNoZWxsIHVuZGVyc3RhbmRzICJ1bnNldCIuDQo+ICtsdF91bnNldD0kbHRfdW5zZXQNCj4gKw0K PiArIyB0dXJuIHNwYWNlcyBpbnRvIG5ld2xpbmVzLg0KPiArU1AyTkw9JGx0X2x0X1NQMk5MDQo+ ICsNCj4gKyMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4NCj4gK05MMlNQPSRsdF9sdF9OTDJT UA0KPiArDQo+ICsjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLg0KPiArT0JKRFVNUD0kbHRfT0JK RFVNUA0KPiArDQo+ICsjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJp ZXMgYXJlIHNoYXJlZCBvYmplY3RzLg0KPiArZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxp YnNfY2hlY2tfbWV0aG9kDQo+ICsNCj4gKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2No ZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuDQo+ICtmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9t YWdpY19jbWQNCj4gKw0KPiArIyBUaGUgYXJjaGl2ZXIuDQo+ICtBUj0kbHRfQVINCj4gK0FSX0ZM QUdTPSRsdF9BUl9GTEFHUw0KPiArDQo+ICsjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLg0K PiArU1RSSVA9JGx0X1NUUklQDQo+ICsNCj4gKyMgQ29tbWFuZHMgdXNlZCB0byBpbnN0YWxsIGFu IG9sZC1zdHlsZSBhcmNoaXZlLg0KPiArUkFOTElCPSRsdF9SQU5MSUINCj4gK29sZF9wb3N0aW5z dGFsbF9jbWRzPSRsdF9vbGRfcG9zdGluc3RhbGxfY21kcw0KPiArb2xkX3Bvc3R1bmluc3RhbGxf Y21kcz0kbHRfb2xkX3Bvc3R1bmluc3RhbGxfY21kcw0KPiArDQo+ICsjIFdoZXRoZXIgdG8gdXNl IGEgbG9jayBmb3Igb2xkIGFyY2hpdmUgZXh0cmFjdGlvbi4NCj4gK2xvY2tfb2xkX2FyY2hpdmVf ZXh0cmFjdGlvbj0kbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uDQo+ICsNCj4gKyMgQSBDIGNv bXBpbGVyLg0KPiArTFRDQz0kbHRfQ0MNCj4gKw0KPiArIyBMVENDIGNvbXBpbGVyIGZsYWdzLg0K PiArTFRDRkxBR1M9JGx0X0NGTEFHUw0KPiArDQo+ICsjIFRha2UgdGhlIG91dHB1dCBvZiBubSBh bmQgcHJvZHVjZSBhIGxpc3Rpbmcgb2YgcmF3IHN5bWJvbHMgYW5kIEMgbmFtZXMuDQo+ICtnbG9i YWxfc3ltYm9sX3BpcGU9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUNCj4gKw0KPiAr IyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIHByb3BlciBDIGRlY2xhcmF0aW9uLg0K PiArZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9f Y2RlY2wNCj4gKw0KPiArIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBh ZGRyZXNzIHBhaXIuDQo+ICtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9j dl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcw0KPiArDQo+ICsjIFRyYW5zZm9y bSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVm aXggaXMgbmVlZGVkLg0KPiArZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJl Zml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJl Zml4DQo+ICsNCj4gKyMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRl bXBvcmFyeSBsaWJ0b29sIGZpbGVzLg0KPiArb2JqZGlyPSRvYmpkaXINCj4gKw0KPiArIyBVc2Vk IHRvIGV4YW1pbmUgbGlicmFyaWVzIHdoZW4gZmlsZV9tYWdpY19jbWQgYmVnaW5zIHdpdGggImZp bGUiLg0KPiArTUFHSUNfQ01EPSRNQUdJQ19DTUQNCj4gKw0KPiArIyBNdXN0IHdlIGxvY2sgZmls ZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8NCj4gK25lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MN Cj4gKw0KPiArIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9s IGZpbGVzIG9uIE1hYyBPUyBYLg0KPiArRFNZTVVUSUw9JGx0X0RTWU1VVElMDQo+ICsNCj4gKyMg VG9vbCB0byBjaGFuZ2UgZ2xvYmFsIHRvIGxvY2FsIHN5bWJvbHMgb24gTWFjIE9TIFguDQo+ICtO TUVESVQ9JGx0X05NRURJVA0KPiArDQo+ICsjIFRvb2wgdG8gbWFuaXB1bGF0ZSBmYXQgb2JqZWN0 cyBhbmQgYXJjaGl2ZXMgb24gTWFjIE9TIFguDQo+ICtMSVBPPSRsdF9MSVBPDQo+ICsNCj4gKyMg bGRkL3JlYWRlbGYgbGlrZSB0b29sIGZvciBNYWNoLU8gYmluYXJpZXMgb24gTWFjIE9TIFguDQo+ ICtPVE9PTD0kbHRfT1RPT0wNCj4gKw0KPiArIyBsZGQvcmVhZGVsZiBsaWtlIHRvb2wgZm9yIDY0 IGJpdCBNYWNoLU8gYmluYXJpZXMgb24gTWFjIE9TIFggMTAuNC4NCj4gK09UT09MNjQ9JGx0X09U T09MNjQNCj4gKw0KPiArIyBPbGQgYXJjaGl2ZSBzdWZmaXggKG5vcm1hbGx5ICJhIikuDQo+ICts aWJleHQ9JGxpYmV4dA0KPiArDQo+ICsjIFNoYXJlZCBsaWJyYXJ5IHN1ZmZpeCAobm9ybWFsbHkg Ii5zbyIpLg0KPiArc2hyZXh0X2NtZHM9JGx0X3NocmV4dF9jbWRzDQo+ICsNCj4gKyMgVGhlIGNv bW1hbmRzIHRvIGV4dHJhY3QgdGhlIGV4cG9ydGVkIHN5bWJvbCBsaXN0IGZyb20gYSBzaGFyZWQg YXJjaGl2ZS4NCj4gK2V4dHJhY3RfZXhwc3ltc19jbWRzPSRsdF9leHRyYWN0X2V4cHN5bXNfY21k cw0KPiArDQo+ICsjIFZhcmlhYmxlcyB3aG9zZSB2YWx1ZXMgc2hvdWxkIGJlIHNhdmVkIGluIGxp YnRvb2wgd3JhcHBlciBzY3JpcHRzIGFuZA0KPiArIyByZXN0b3JlZCBhdCBsaW5rIHRpbWUuDQo+ ICt2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0kbHRfdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxp bmsNCj4gKw0KPiArIyBEbyB3ZSBuZWVkIHRoZSAibGliIiBwcmVmaXggZm9yIG1vZHVsZXM/DQo+ ICtuZWVkX2xpYl9wcmVmaXg9JG5lZWRfbGliX3ByZWZpeA0KPiArDQo+ICsjIERvIHdlIG5lZWQg YSB2ZXJzaW9uIGZvciBsaWJyYXJpZXM/DQo+ICtuZWVkX3ZlcnNpb249JG5lZWRfdmVyc2lvbg0K PiArDQo+ICsjIExpYnJhcnkgdmVyc2lvbmluZyB0eXBlLg0KPiArdmVyc2lvbl90eXBlPSR2ZXJz aW9uX3R5cGUNCj4gKw0KPiArIyBTaGFyZWQgbGlicmFyeSBydW50aW1lIHBhdGggdmFyaWFibGUu DQo+ICtydW5wYXRoX3Zhcj0kcnVucGF0aF92YXINCj4gKw0KPiArIyBTaGFyZWQgbGlicmFyeSBw YXRoIHZhcmlhYmxlLg0KPiArc2hsaWJwYXRoX3Zhcj0kc2hsaWJwYXRoX3Zhcg0KPiArDQo+ICsj IElzIHNobGlicGF0aCBzZWFyY2hlZCBiZWZvcmUgdGhlIGhhcmQtY29kZWQgbGlicmFyeSBzZWFy Y2ggcGF0aD8NCj4gK3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD0kc2hsaWJwYXRoX292ZXJy aWRlc19ydW5wYXRoDQo+ICsNCj4gKyMgRm9ybWF0IG9mIGxpYnJhcnkgbmFtZSBwcmVmaXguDQo+ ICtsaWJuYW1lX3NwZWM9JGx0X2xpYm5hbWVfc3BlYw0KPiArDQo+ICsjIExpc3Qgb2YgYXJjaGl2 ZSBuYW1lcy4gIEZpcnN0IG5hbWUgaXMgdGhlIHJlYWwgb25lLCB0aGUgcmVzdCBhcmUgbGlua3Mu DQo+ICsjIFRoZSBsYXN0IG5hbWUgaXMgdGhlIG9uZSB0aGF0IHRoZSBsaW5rZXIgZmluZHMgd2l0 aCAtbE5BTUUNCj4gK2xpYnJhcnlfbmFtZXNfc3BlYz0kbHRfbGlicmFyeV9uYW1lc19zcGVjDQo+ ICsNCj4gKyMgVGhlIGNvZGVkIG5hbWUgb2YgdGhlIGxpYnJhcnksIGlmIGRpZmZlcmVudCBmcm9t IHRoZSByZWFsIG5hbWUuDQo+ICtzb25hbWVfc3BlYz0kbHRfc29uYW1lX3NwZWMNCj4gKw0KPiAr IyBQZXJtaXNzaW9uIG1vZGUgb3ZlcnJpZGUgZm9yIGluc3RhbGxhdGlvbiBvZiBzaGFyZWQgbGli cmFyaWVzLg0KPiAraW5zdGFsbF9vdmVycmlkZV9tb2RlPSRsdF9pbnN0YWxsX292ZXJyaWRlX21v ZGUNCj4gKw0KPiArIyBDb21tYW5kIHRvIHVzZSBhZnRlciBpbnN0YWxsYXRpb24gb2YgYSBzaGFy ZWQgYXJjaGl2ZS4NCj4gK3Bvc3RpbnN0YWxsX2NtZHM9JGx0X3Bvc3RpbnN0YWxsX2NtZHMNCj4g Kw0KPiArIyBDb21tYW5kIHRvIHVzZSBhZnRlciB1bmluc3RhbGxhdGlvbiBvZiBhIHNoYXJlZCBh cmNoaXZlLg0KPiArcG9zdHVuaW5zdGFsbF9jbWRzPSRsdF9wb3N0dW5pbnN0YWxsX2NtZHMNCj4g Kw0KPiArIyBDb21tYW5kcyB1c2VkIHRvIGZpbmlzaCBhIGxpYnRvb2wgbGlicmFyeSBpbnN0YWxs YXRpb24gaW4gYSBkaXJlY3RvcnkuDQo+ICtmaW5pc2hfY21kcz0kbHRfZmluaXNoX2NtZHMNCj4g Kw0KPiArIyBBcyAiZmluaXNoX2NtZHMiLCBleGNlcHQgYSBzaW5nbGUgc2NyaXB0IGZyYWdtZW50 IHRvIGJlIGV2YWxlZCBidXQNCj4gKyMgbm90IHNob3duLg0KPiArZmluaXNoX2V2YWw9JGx0X2Zp bmlzaF9ldmFsDQo+ICsNCj4gKyMgV2hldGhlciB3ZSBzaG91bGQgaGFyZGNvZGUgbGlicmFyeSBw YXRocyBpbnRvIGxpYnJhcmllcy4NCj4gK2hhcmRjb2RlX2ludG9fbGlicz0kaGFyZGNvZGVfaW50 b19saWJzDQo+ICsNCj4gKyMgQ29tcGlsZS10aW1lIHN5c3RlbSBzZWFyY2ggcGF0aCBmb3IgbGli cmFyaWVzLg0KPiArc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSRsdF9zeXNfbGliX3NlYXJjaF9w YXRoX3NwZWMNCj4gKw0KPiArIyBSdW4tdGltZSBzeXN0ZW0gc2VhcmNoIHBhdGggZm9yIGxpYnJh cmllcy4NCj4gK3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSRsdF9zeXNfbGliX2Rsc2VhcmNo X3BhdGhfc3BlYw0KPiArDQo+ICsjIFdoZXRoZXIgZGxvcGVuIGlzIHN1cHBvcnRlZC4NCj4gK2Rs b3Blbl9zdXBwb3J0PSRlbmFibGVfZGxvcGVuDQo+ICsNCj4gKyMgV2hldGhlciBkbG9wZW4gb2Yg cHJvZ3JhbXMgaXMgc3VwcG9ydGVkLg0KPiArZGxvcGVuX3NlbGY9JGVuYWJsZV9kbG9wZW5fc2Vs Zg0KPiArDQo+ICsjIFdoZXRoZXIgZGxvcGVuIG9mIHN0YXRpY2FsbHkgbGlua2VkIHByb2dyYW1z IGlzIHN1cHBvcnRlZC4NCj4gK2Rsb3Blbl9zZWxmX3N0YXRpYz0kZW5hYmxlX2Rsb3Blbl9zZWxm X3N0YXRpYw0KPiArDQo+ICsjIENvbW1hbmRzIHRvIHN0cmlwIGxpYnJhcmllcy4NCj4gK29sZF9z dHJpcGxpYj0kbHRfb2xkX3N0cmlwbGliDQo+ICtzdHJpcGxpYj0kbHRfc3RyaXBsaWINCj4gKw0K PiArDQo+ICsjIFRoZSBsaW5rZXIgdXNlZCB0byBidWlsZCBsaWJyYXJpZXMuDQo+ICtMRD0kbHRf TEQNCj4gKw0KPiArIyBIb3cgdG8gY3JlYXRlIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzLg0KPiAr cmVsb2FkX2ZsYWc9JGx0X3JlbG9hZF9mbGFnDQo+ICtyZWxvYWRfY21kcz0kbHRfcmVsb2FkX2Nt ZHMNCj4gKw0KPiArIyBDb21tYW5kcyB1c2VkIHRvIGJ1aWxkIGFuIG9sZC1zdHlsZSBhcmNoaXZl Lg0KPiArb2xkX2FyY2hpdmVfY21kcz0kbHRfb2xkX2FyY2hpdmVfY21kcw0KPiArDQo+ICsjIEEg bGFuZ3VhZ2Ugc3BlY2lmaWMgY29tcGlsZXIuDQo+ICtDQz0kbHRfY29tcGlsZXINCj4gKw0KPiAr IyBJcyB0aGUgY29tcGlsZXIgdGhlIEdOVSBjb21waWxlcj8NCj4gK3dpdGhfZ2NjPSRHQ0MNCj4g Kw0KPiArIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLg0KPiAr bm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZw0KPiAr DQo+ICsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuDQo+ ICt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bA0KPiArDQo+ICsjIEFkZGl0aW9uYWwgY29tcGls ZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4NCj4gK3BpY19mbGFnPSRsdF9s dF9wcm9nX2NvbXBpbGVyX3BpYw0KPiArDQo+ICsjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBk eW5hbWljIGxpbmtpbmcuDQo+ICtsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVy X3N0YXRpYw0KPiArDQo+ICsjIERvZXMgY29tcGlsZXIgc2ltdWx0YW5lb3VzbHkgc3VwcG9ydCAt YyBhbmQgLW8gb3B0aW9ucz8NCj4gK2NvbXBpbGVyX2Nfbz0kbHRfbHRfY3ZfcHJvZ19jb21waWxl cl9jX28NCj4gKw0KPiArIyBXaGV0aGVyIG9yIG5vdCB0byBhZGQgLWxjIGZvciBidWlsZGluZyBz aGFyZWQgbGlicmFyaWVzLg0KPiArYnVpbGRfbGlidG9vbF9uZWVkX2xjPSRhcmNoaXZlX2NtZHNf bmVlZF9sYw0KPiArDQo+ICsjIFdoZXRoZXIgb3Igbm90IHRvIGRpc2FsbG93IHNoYXJlZCBsaWJz IHdoZW4gcnVudGltZSBsaWJzIGFyZSBzdGF0aWMuDQo+ICthbGxvd19saWJ0b29sX2xpYnNfd2l0 aF9zdGF0aWNfcnVudGltZXM9JGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMNCj4g Kw0KPiArIyBDb21waWxlciBmbGFnIHRvIGFsbG93IHJlZmxleGl2ZSBkbG9wZW5zLg0KPiArZXhw b3J0X2R5bmFtaWNfZmxhZ19zcGVjPSRsdF9leHBvcnRfZHluYW1pY19mbGFnX3NwZWMNCj4gKw0K PiArIyBDb21waWxlciBmbGFnIHRvIGdlbmVyYXRlIHNoYXJlZCBvYmplY3RzIGRpcmVjdGx5IGZy b20gYXJjaGl2ZXMuDQo+ICt3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0kbHRfd2hvbGVfYXJjaGl2 ZV9mbGFnX3NwZWMNCj4gKw0KPiArIyBXaGV0aGVyIHRoZSBjb21waWxlciBjb3BlcyB3aXRoIHBh c3Npbmcgbm8gb2JqZWN0cyBkaXJlY3RseS4NCj4gK2NvbXBpbGVyX25lZWRzX29iamVjdD0kbHRf Y29tcGlsZXJfbmVlZHNfb2JqZWN0DQo+ICsNCj4gKyMgQ3JlYXRlIGFuIG9sZC1zdHlsZSBhcmNo aXZlIGZyb20gYSBzaGFyZWQgYXJjaGl2ZS4NCj4gK29sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9 JGx0X29sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMNCj4gKw0KPiArIyBDcmVhdGUgYSB0ZW1wb3Jh cnkgb2xkLXN0eWxlIGFyY2hpdmUgdG8gbGluayBpbnN0ZWFkIG9mIGEgc2hhcmVkIGFyY2hpdmUu DQo+ICtvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcz0kbHRfb2xkX2FyY2hpdmVfZnJvbV9l eHBzeW1zX2NtZHMNCj4gKw0KPiArIyBDb21tYW5kcyB1c2VkIHRvIGJ1aWxkIGEgc2hhcmVkIGFy Y2hpdmUuDQo+ICthcmNoaXZlX2NtZHM9JGx0X2FyY2hpdmVfY21kcw0KPiArYXJjaGl2ZV9leHBz eW1fY21kcz0kbHRfYXJjaGl2ZV9leHBzeW1fY21kcw0KPiArDQo+ICsjIENvbW1hbmRzIHVzZWQg dG8gYnVpbGQgYSBsb2FkYWJsZSBtb2R1bGUgaWYgZGlmZmVyZW50IGZyb20gYnVpbGRpbmcNCj4g KyMgYSBzaGFyZWQgYXJjaGl2ZS4NCj4gK21vZHVsZV9jbWRzPSRsdF9tb2R1bGVfY21kcw0KPiAr bW9kdWxlX2V4cHN5bV9jbWRzPSRsdF9tb2R1bGVfZXhwc3ltX2NtZHMNCj4gKw0KPiArIyBXaGV0 aGVyIHdlIGFyZSBidWlsZGluZyB3aXRoIEdOVSBsZCBvciBub3QuDQo+ICt3aXRoX2dudV9sZD0k bHRfd2l0aF9nbnVfbGQNCj4gKw0KPiArIyBGbGFnIHRoYXQgYWxsb3dzIHNoYXJlZCBsaWJyYXJp ZXMgd2l0aCB1bmRlZmluZWQgc3ltYm9scyB0byBiZSBidWlsdC4NCj4gK2FsbG93X3VuZGVmaW5l ZF9mbGFnPSRsdF9hbGxvd191bmRlZmluZWRfZmxhZw0KPiArDQo+ICsjIEZsYWcgdGhhdCBlbmZv cmNlcyBubyB1bmRlZmluZWQgc3ltYm9scy4NCj4gK25vX3VuZGVmaW5lZF9mbGFnPSRsdF9ub191 bmRlZmluZWRfZmxhZw0KPiArDQo+ICsjIEZsYWcgdG8gaGFyZGNvZGUgXCRsaWJkaXIgaW50byBh IGJpbmFyeSBkdXJpbmcgbGlua2luZy4NCj4gKyMgVGhpcyBtdXN0IHdvcmsgZXZlbiBpZiBcJGxp YmRpciBkb2VzIG5vdCBleGlzdA0KPiAraGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0kbHRfaGFy ZGNvZGVfbGliZGlyX2ZsYWdfc3BlYw0KPiArDQo+ICsjIElmIGxkIGlzIHVzZWQgd2hlbiBsaW5r aW5nLCBmbGFnIHRvIGhhcmRjb2RlIFwkbGliZGlyIGludG8gYSBiaW5hcnkNCj4gKyMgZHVyaW5n IGxpbmtpbmcuICBUaGlzIG11c3Qgd29yayBldmVuIGlmIFwkbGliZGlyIGRvZXMgbm90IGV4aXN0 Lg0KPiAraGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0kbHRfaGFyZGNvZGVfbGliZGlyX2Zs YWdfc3BlY19sZA0KPiArDQo+ICsjIFdoZXRoZXIgd2UgbmVlZCBhIHNpbmdsZSAiLXJwYXRoIiBm bGFnIHdpdGggYSBzZXBhcmF0ZWQgYXJndW1lbnQuDQo+ICtoYXJkY29kZV9saWJkaXJfc2VwYXJh dG9yPSRsdF9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yDQo+ICsNCj4gKyMgU2V0IHRvICJ5ZXMi IGlmIHVzaW5nIERJUi9saWJOQU1FXCR7c2hhcmVkX2V4dH0gZHVyaW5nIGxpbmtpbmcgaGFyZGNv ZGVzDQo+ICsjIERJUiBpbnRvIHRoZSByZXN1bHRpbmcgYmluYXJ5Lg0KPiAraGFyZGNvZGVfZGly ZWN0PSRoYXJkY29kZV9kaXJlY3QNCj4gKw0KPiArIyBTZXQgdG8gInllcyIgaWYgdXNpbmcgRElS L2xpYk5BTUVcJHtzaGFyZWRfZXh0fSBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMNCj4gKyMgRElS IGludG8gdGhlIHJlc3VsdGluZyBiaW5hcnkgYW5kIHRoZSByZXN1bHRpbmcgbGlicmFyeSBkZXBl bmRlbmN5IGlzDQo+ICsjICJhYnNvbHV0ZSIsaS5lIGltcG9zc2libGUgdG8gY2hhbmdlIGJ5IHNl dHRpbmcgXCR7c2hsaWJwYXRoX3Zhcn0gaWYgdGhlDQo+ICsjIGxpYnJhcnkgaXMgcmVsb2NhdGVk Lg0KPiAraGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlPSRoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUN Cj4gKw0KPiArIyBTZXQgdG8gInllcyIgaWYgdXNpbmcgdGhlIC1MRElSIGZsYWcgZHVyaW5nIGxp bmtpbmcgaGFyZGNvZGVzIERJUg0KPiArIyBpbnRvIHRoZSByZXN1bHRpbmcgYmluYXJ5Lg0KPiAr aGFyZGNvZGVfbWludXNfTD0kaGFyZGNvZGVfbWludXNfTA0KPiArDQo+ICsjIFNldCB0byAieWVz IiBpZiB1c2luZyBTSExJQlBBVEhfVkFSPURJUiBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElS DQo+ICsjIGludG8gdGhlIHJlc3VsdGluZyBiaW5hcnkuDQo+ICtoYXJkY29kZV9zaGxpYnBhdGhf dmFyPSRoYXJkY29kZV9zaGxpYnBhdGhfdmFyDQo+ICsNCj4gKyMgU2V0IHRvICJ5ZXMiIGlmIGJ1 aWxkaW5nIGEgc2hhcmVkIGxpYnJhcnkgYXV0b21hdGljYWxseSBoYXJkY29kZXMgRElSDQo+ICsj IGludG8gdGhlIGxpYnJhcnkgYW5kIGFsbCBzdWJzZXF1ZW50IGxpYnJhcmllcyBhbmQgZXhlY3V0 YWJsZXMgbGlua2VkDQo+ICsjIGFnYWluc3QgaXQuDQo+ICtoYXJkY29kZV9hdXRvbWF0aWM9JGhh cmRjb2RlX2F1dG9tYXRpYw0KPiArDQo+ICsjIFNldCB0byB5ZXMgaWYgbGlua2VyIGFkZHMgcnVu dGltZSBwYXRocyBvZiBkZXBlbmRlbnQgbGlicmFyaWVzDQo+ICsjIHRvIHJ1bnRpbWUgcGF0aCBs aXN0Lg0KPiAraW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aA0KPiArDQo+ICsjIFdoZXRoZXIg bGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxp YnJhcmllcy4NCj4gK2xpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMNCj4gKw0KPiAr IyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLg0KPiAr Zml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aA0KPiArDQo+ICsjIFNldCB0byAi eWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4NCj4gK2Fsd2F5c19leHBvcnRf c3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzDQo+ICsNCj4gKyMgVGhlIGNvbW1hbmRzIHRv IGxpc3QgZXhwb3J0ZWQgc3ltYm9scy4NCj4gK2V4cG9ydF9zeW1ib2xzX2NtZHM9JGx0X2V4cG9y dF9zeW1ib2xzX2NtZHMNCj4gKw0KPiArIyBTeW1ib2xzIHRoYXQgc2hvdWxkIG5vdCBiZSBsaXN0 ZWQgaW4gdGhlIHByZWxvYWRlZCBzeW1ib2xzLg0KPiArZXhjbHVkZV9leHBzeW1zPSRsdF9leGNs dWRlX2V4cHN5bXMNCj4gKw0KPiArIyBTeW1ib2xzIHRoYXQgbXVzdCBhbHdheXMgYmUgZXhwb3J0 ZWQuDQo+ICtpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcw0KPiArDQo+ICsjIENv bW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMp IHdpdGggdGVtcGxhdGVzLg0KPiArcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMNCj4gKw0K PiArIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuDQo+ICtmaWxlX2xp c3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMNCj4gKw0KPiArIyBIb3cgdG8gaGFyZGNvZGUgYSBz aGFyZWQgbGlicmFyeSBwYXRoIGludG8gYW4gZXhlY3V0YWJsZS4NCj4gK2hhcmRjb2RlX2FjdGlv bj0kaGFyZGNvZGVfYWN0aW9uDQo+ICsNCj4gKyMgVGhlIGRpcmVjdG9yaWVzIHNlYXJjaGVkIGJ5 IHRoaXMgY29tcGlsZXIgd2hlbiBjcmVhdGluZyBhIHNoYXJlZCBsaWJyYXJ5Lg0KPiArY29tcGls ZXJfbGliX3NlYXJjaF9kaXJzPSRsdF9jb21waWxlcl9saWJfc2VhcmNoX2RpcnMNCj4gKw0KPiAr IyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgb2JqZWN0cyBiZWlu ZyBsaW5rZWQgdG8NCj4gKyMgY3JlYXRlIGEgc2hhcmVkIGxpYnJhcnkuDQo+ICtwcmVkZXBfb2Jq ZWN0cz0kbHRfcHJlZGVwX29iamVjdHMNCj4gK3Bvc3RkZXBfb2JqZWN0cz0kbHRfcG9zdGRlcF9v YmplY3RzDQo+ICtwcmVkZXBzPSRsdF9wcmVkZXBzDQo+ICtwb3N0ZGVwcz0kbHRfcG9zdGRlcHMN Cj4gKw0KPiArIyBUaGUgbGlicmFyeSBzZWFyY2ggcGF0aCB1c2VkIGludGVybmFsbHkgYnkgdGhl IGNvbXBpbGVyIHdoZW4gbGlua2luZw0KPiArIyBhIHNoYXJlZCBsaWJyYXJ5Lg0KPiArY29tcGls ZXJfbGliX3NlYXJjaF9wYXRoPSRsdF9jb21waWxlcl9saWJfc2VhcmNoX3BhdGgNCj4gKw0KPiAr IyAjIyMgRU5EIExJQlRPT0wgQ09ORklHDQo+ICsNCj4gK19MVF9FT0YNCj4gKw0KPiArICBjYXNl ICRob3N0X29zIGluDQo+ICsgIGFpeDMqKQ0KPiArICAgIGNhdCA8PFxfTFRfRU9GID4+ICIkY2Zn ZmlsZSINCj4gKyMgQUlYIHNvbWV0aW1lcyBoYXMgcHJvYmxlbXMgd2l0aCB0aGUgR0NDIGNvbGxl Y3QyIHByb2dyYW0uICBGb3Igc29tZQ0KPiArIyByZWFzb24sIGlmIHdlIHNldCB0aGUgQ09MTEVD VF9OQU1FUyBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlIHByb2JsZW1zDQo+ICsjIHZhbmlzaCBp biBhIHB1ZmYgb2Ygc21va2UuDQo+ICtpZiB0ZXN0ICJYJHtDT0xMRUNUX05BTUVTK3NldH0iICE9 IFhzZXQ7IHRoZW4NCj4gKyAgQ09MTEVDVF9OQU1FUz0NCj4gKyAgZXhwb3J0IENPTExFQ1RfTkFN RVMNCj4gK2ZpDQo+ICtfTFRfRU9GDQo+ICsgICAgOzsNCj4gKyAgZXNhYw0KPiArDQo+ICsNCj4g K2x0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIg0KPiArDQo+ICsNCj4gKyAgIyBXZSB1c2Ug c2VkIGluc3RlYWQgb2YgY2F0IGJlY2F1c2UgYmFzaCBvbiBESkdQUCBnZXRzIGNvbmZ1c2VkIGlm DQo+ICsgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBz ZWQgb3BlcmF0ZXMgaW4NCj4gKyAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxp bmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0NCj4gKyAgIyBpcyByZXBvcnRlZGx5IGZp eGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8NCj4gKyAgc2VkICcvXiMg R2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAi JGNmZ2ZpbGUiIFwNCj4gKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQ0KPiArDQo+ ICsgIGNhc2UgJHhzaV9zaGVsbCBpbg0KPiArICB5ZXMpDQo+ICsgICAgY2F0IDw8IFxfTFRfRU9G ID4+ICIkY2ZnZmlsZSINCj4gKw0KPiArIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGly X3JlcGxhY2VtZW50DQo+ICsjIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVt cHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsDQo+ICsjIG90aGVyd2lzZSBzZXQgcmVzdWx0 IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4NCj4gK2Z1bmNfZGlybmFtZSAoKQ0KPiArew0KPiArICBj YXNlICR7MX0gaW4NCj4gKyAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9 IiA7Ow0KPiArICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsNCj4gKyAgZXNh Yw0KPiArfQ0KPiArDQo+ICsjIGZ1bmNfYmFzZW5hbWUgZmlsZQ0KPiArZnVuY19iYXNlbmFtZSAo KQ0KPiArew0KPiArICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iDQo+ICt9DQo+ICsN Cj4gKyMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFj ZW1lbnQNCj4gKyMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBz aW5nbGUgZnVuY3Rpb24NCj4gKyMgY2FsbDoNCj4gKyMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUg ZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksDQo+ICsjICAgICAgICAgICAgIGFkZCBBUFBF TkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQNCj4gKyMgICAgICAgICAgICAg dG8gTk9ORElSX1JFUExBQ0VNRU5ULg0KPiArIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBp biAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiDQo+ICsjICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5h bWUgb2YgRklMRS4NCj4gKyMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFz ZW5hbWVfcmVzdWx0Ig0KPiArIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25p emVkIHdpdGggZnVuY19kaXJuYW1lDQo+ICsjIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNp ZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvDQo+ICsjIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5z dGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4NCj4gK2Z1bmNfZGlybmFtZV9h bmRfYmFzZW5hbWUgKCkNCj4gK3sNCj4gKyAgY2FzZSAkezF9IGluDQo+ICsgICAgKi8qKSBmdW5j X2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsNCj4gKyAgICAqICApIGZ1bmNfZGlybmFt ZV9yZXN1bHQ9IiR7M30iIDs7DQo+ICsgIGVzYWMNCj4gKyAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9 IiR7MSMjKi99Ig0KPiArfQ0KPiArDQo+ICsjIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXgg bmFtZQ0KPiArIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4NCj4gKyMgUFJF RklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFs DQo+ICsjIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkg Y29udGFpbiBhIGxlYWRpbmcNCj4gKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBv bmx5IGEgZG90KS4NCj4gK2Z1bmNfc3RyaXBuYW1lICgpDQo+ICt7DQo+ICsgICMgcGRrc2ggNS4y LjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUNCj4g KyAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFy YW1ldGVyIGZpcnN0Lg0KPiArICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQ0KPiArICBmdW5j X3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQ0KPiArICBm dW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQ0KPiAr fQ0KPiArDQo+ICsjIGZ1bmNfb3B0X3NwbGl0DQo+ICtmdW5jX29wdF9zcGxpdCAoKQ0KPiArew0K PiArICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0NCj4gKyAgZnVuY19vcHRfc3BsaXRfYXJn PSR7MSMqPX0NCj4gK30NCj4gKw0KPiArIyBmdW5jX2xvMm8gb2JqZWN0DQo+ICtmdW5jX2xvMm8g KCkNCj4gK3sNCj4gKyAgY2FzZSAkezF9IGluDQo+ICsgICAgKi5sbykgZnVuY19sbzJvX3Jlc3Vs dD0kezElLmxvfS4ke29iamV4dH0gOzsNCj4gKyAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7 MX0gOzsNCj4gKyAgZXNhYw0KPiArfQ0KPiArDQo+ICsjIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNv dXJjZQ0KPiArZnVuY194Zm9ybSAoKQ0KPiArew0KPiArICBmdW5jX3hmb3JtX3Jlc3VsdD0kezEl Lip9LmxvDQo+ICt9DQo+ICsNCj4gKyMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4NCj4g K2Z1bmNfYXJpdGggKCkNCj4gK3sNCj4gKyAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpDQo+ ICt9DQo+ICsNCj4gKyMgZnVuY19sZW4gc3RyaW5nDQo+ICsjIFNUUklORyBtYXkgbm90IHN0YXJ0 IHdpdGggYSBoeXBoZW4uDQo+ICtmdW5jX2xlbiAoKQ0KPiArew0KPiArICBmdW5jX2xlbl9yZXN1 bHQ9JHsjMX0NCj4gK30NCj4gKw0KPiArX0xUX0VPRg0KPiArICAgIDs7DQo+ICsgICopICMgQm91 cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLg0KPiArICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNm Z2ZpbGUiDQo+ICsNCj4gKyMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNl bWVudA0KPiArIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRk IEFQUEVORCB0byB0aGUgcmVzdWx0LA0KPiArIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05E SVJfUkVQTEFDRU1FTlQuDQo+ICtmdW5jX2Rpcm5hbWUgKCkNCj4gK3sNCj4gKyAgIyBFeHRyYWN0 IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4NCj4gKyAgZnVuY19kaXJuYW1lX3Jlc3Vs dD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYA0KPiArICBpZiB0ZXN0ICJYJGZ1bmNf ZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbg0KPiArICAgIGZ1bmNfZGlybmFtZV9yZXN1 bHQ9IiR7M30iDQo+ICsgIGVsc2UNCj4gKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19k aXJuYW1lX3Jlc3VsdCR7Mn0iDQo+ICsgIGZpDQo+ICt9DQo+ICsNCj4gKyMgZnVuY19iYXNlbmFt ZSBmaWxlDQo+ICtmdW5jX2Jhc2VuYW1lICgpDQo+ICt7DQo+ICsgIGZ1bmNfYmFzZW5hbWVfcmVz dWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYA0KPiArfQ0KPiArDQo+ICsNCj4g KyMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lDQo+ICsjIHN0cmlwIFBSRUZJWCBh bmQgU1VGRklYIG9mZiBvZiBOQU1FLg0KPiArIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBj b250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwNCj4gKyMgY2hhcmFjdGVycywgaGFzaGVz LCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZw0KPiArIyBk b3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLg0KPiArIyBmdW5jX3N0 cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQ0KPiArZnVuY19zdHJpcG5hbWUgKCkNCj4gK3sNCj4gKyAg Y2FzZSAkezJ9IGluDQo+ICsgICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7 M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsNCj4gKyAgICAqKSAgZnVu Y19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsy fVwkJSUiYDs7DQo+ICsgIGVzYWMNCj4gK30NCj4gKw0KPiArIyBzZWQgc2NyaXB0czoNCj4gK215 X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnDQo+ICtteV9zZWRfbG9uZ19h cmc9JzFzL14tW149XSo9Ly8nDQo+ICsNCj4gKyMgZnVuY19vcHRfc3BsaXQNCj4gK2Z1bmNfb3B0 X3NwbGl0ICgpDQo+ICt7DQo+ICsgIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwg JFNFRCAiJG15X3NlZF9sb25nX29wdCJgDQo+ICsgIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8g IiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgDQo+ICt9DQo+ICsNCj4gKyMgZnVuY19s bzJvIG9iamVjdA0KPiArZnVuY19sbzJvICgpDQo+ICt7DQo+ICsgIGZ1bmNfbG8yb19yZXN1bHQ9 YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImANCj4gK30NCj4gKw0KPiArIyBmdW5jX3hmb3Jt IGxpYm9iai1vci1zb3VyY2UNCj4gK2Z1bmNfeGZvcm0gKCkNCj4gK3sNCj4gKyAgZnVuY194Zm9y bV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgDQo+ICt9DQo+ ICsNCj4gKyMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4NCj4gK2Z1bmNfYXJpdGggKCkN Cj4gK3sNCj4gKyAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImANCj4gK30NCj4gKw0KPiAr IyBmdW5jX2xlbiBzdHJpbmcNCj4gKyMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhl bi4NCj4gK2Z1bmNfbGVuICgpDQo+ICt7DQo+ICsgIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEi IDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmANCj4gK30NCj4gKw0KPiAr X0xUX0VPRg0KPiArZXNhYw0KPiArDQo+ICtjYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4NCj4gKyAg eWVzKQ0KPiArICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiDQo+ICsNCj4gKyMgZnVu Y19hcHBlbmQgdmFyIHZhbHVlDQo+ICsjIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxs IHZhcmlhYmxlIFZBUi4NCj4gK2Z1bmNfYXBwZW5kICgpDQo+ICt7DQo+ICsgIGV2YWwgIiQxKz1c JDIiDQo+ICt9DQo+ICtfTFRfRU9GDQo+ICsgICAgOzsNCj4gKyAgKikNCj4gKyAgICBjYXQgPDwg XF9MVF9FT0YgPj4gIiRjZmdmaWxlIg0KPiArDQo+ICsjIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQ0K PiArIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuDQo+ICtm dW5jX2FwcGVuZCAoKQ0KPiArew0KPiArICBldmFsICIkMT1cJCQxXCQyIg0KPiArfQ0KPiArDQo+ ICtfTFRfRU9GDQo+ICsgICAgOzsNCj4gKyAgZXNhYw0KPiArDQo+ICsNCj4gKyAgc2VkIC1uICcv XiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4i ID4+ICIkY2ZnZmlsZSIgXA0KPiArICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpDQo+ ICsNCj4gKyAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fA0KPiArICAgIChybSAtZiAiJG9m aWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpDQo+ICsg IGNobW9kICt4ICIkb2ZpbGUiDQo+ICsNCj4gKw0KPiArICAgIGNhdCA8PF9MVF9FT0YgPj4gIiRv ZmlsZSINCj4gKw0KPiArIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiBDWFgNCj4gKw0K PiArIyBUaGUgbGlua2VyIHVzZWQgdG8gYnVpbGQgbGlicmFyaWVzLg0KPiArTEQ9JGx0X0xEX0NY WA0KPiArDQo+ICsjIEhvdyB0byBjcmVhdGUgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMuDQo+ICty ZWxvYWRfZmxhZz0kbHRfcmVsb2FkX2ZsYWdfQ1hYDQo+ICtyZWxvYWRfY21kcz0kbHRfcmVsb2Fk X2NtZHNfQ1hYDQo+ICsNCj4gKyMgQ29tbWFuZHMgdXNlZCB0byBidWlsZCBhbiBvbGQtc3R5bGUg YXJjaGl2ZS4NCj4gK29sZF9hcmNoaXZlX2NtZHM9JGx0X29sZF9hcmNoaXZlX2NtZHNfQ1hYDQo+ ICsNCj4gKyMgQSBsYW5ndWFnZSBzcGVjaWZpYyBjb21waWxlci4NCj4gK0NDPSRsdF9jb21waWxl cl9DWFgNCj4gKw0KPiArIyBJcyB0aGUgY29tcGlsZXIgdGhlIEdOVSBjb21waWxlcj8NCj4gK3dp dGhfZ2NjPSRHQ0NfQ1hYDQo+ICsNCj4gKyMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWls dGluIGZ1bmN0aW9ucy4NCj4gK25vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9u b19idWlsdGluX2ZsYWdfQ1hYDQo+ICsNCj4gKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0 aHJvdWdoIHRoZSBjb21waWxlci4NCj4gK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWA0K PiArDQo+ICsjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkg b2JqZWN0cy4NCj4gK3BpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgNCj4gKw0K PiArIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLg0KPiArbGlua19z dGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYDQo+ICsNCj4gKyMgRG9l cyBjb21waWxlciBzaW11bHRhbmVvdXNseSBzdXBwb3J0IC1jIGFuZCAtbyBvcHRpb25zPw0KPiAr Y29tcGlsZXJfY19vPSRsdF9sdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb19DWFgNCj4gKw0KPiArIyBX aGV0aGVyIG9yIG5vdCB0byBhZGQgLWxjIGZvciBidWlsZGluZyBzaGFyZWQgbGlicmFyaWVzLg0K PiArYnVpbGRfbGlidG9vbF9uZWVkX2xjPSRhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFgNCj4gKw0K PiArIyBXaGV0aGVyIG9yIG5vdCB0byBkaXNhbGxvdyBzaGFyZWQgbGlicyB3aGVuIHJ1bnRpbWUg bGlicyBhcmUgc3RhdGljLg0KPiArYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRp bWVzPSRlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzX0NYWA0KPiArDQo+ICsjIENv bXBpbGVyIGZsYWcgdG8gYWxsb3cgcmVmbGV4aXZlIGRsb3BlbnMuDQo+ICtleHBvcnRfZHluYW1p Y19mbGFnX3NwZWM9JGx0X2V4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFgNCj4gKw0KPiArIyBD b21waWxlciBmbGFnIHRvIGdlbmVyYXRlIHNoYXJlZCBvYmplY3RzIGRpcmVjdGx5IGZyb20gYXJj aGl2ZXMuDQo+ICt3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0kbHRfd2hvbGVfYXJjaGl2ZV9mbGFn X3NwZWNfQ1hYDQo+ICsNCj4gKyMgV2hldGhlciB0aGUgY29tcGlsZXIgY29wZXMgd2l0aCBwYXNz aW5nIG5vIG9iamVjdHMgZGlyZWN0bHkuDQo+ICtjb21waWxlcl9uZWVkc19vYmplY3Q9JGx0X2Nv bXBpbGVyX25lZWRzX29iamVjdF9DWFgNCj4gKw0KPiArIyBDcmVhdGUgYW4gb2xkLXN0eWxlIGFy Y2hpdmUgZnJvbSBhIHNoYXJlZCBhcmNoaXZlLg0KPiArb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21k cz0kbHRfb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kc19DWFgNCj4gKw0KPiArIyBDcmVhdGUgYSB0 ZW1wb3Jhcnkgb2xkLXN0eWxlIGFyY2hpdmUgdG8gbGluayBpbnN0ZWFkIG9mIGEgc2hhcmVkIGFy Y2hpdmUuDQo+ICtvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcz0kbHRfb2xkX2FyY2hpdmVf ZnJvbV9leHBzeW1zX2NtZHNfQ1hYDQo+ICsNCj4gKyMgQ29tbWFuZHMgdXNlZCB0byBidWlsZCBh IHNoYXJlZCBhcmNoaXZlLg0KPiArYXJjaGl2ZV9jbWRzPSRsdF9hcmNoaXZlX2NtZHNfQ1hYDQo+ ICthcmNoaXZlX2V4cHN5bV9jbWRzPSRsdF9hcmNoaXZlX2V4cHN5bV9jbWRzX0NYWA0KPiArDQo+ ICsjIENvbW1hbmRzIHVzZWQgdG8gYnVpbGQgYSBsb2FkYWJsZSBtb2R1bGUgaWYgZGlmZmVyZW50 IGZyb20gYnVpbGRpbmcNCj4gKyMgYSBzaGFyZWQgYXJjaGl2ZS4NCj4gK21vZHVsZV9jbWRzPSRs dF9tb2R1bGVfY21kc19DWFgNCj4gK21vZHVsZV9leHBzeW1fY21kcz0kbHRfbW9kdWxlX2V4cHN5 bV9jbWRzX0NYWA0KPiArDQo+ICsjIFdoZXRoZXIgd2UgYXJlIGJ1aWxkaW5nIHdpdGggR05VIGxk IG9yIG5vdC4NCj4gK3dpdGhfZ251X2xkPSRsdF93aXRoX2dudV9sZF9DWFgNCj4gKw0KPiArIyBG bGFnIHRoYXQgYWxsb3dzIHNoYXJlZCBsaWJyYXJpZXMgd2l0aCB1bmRlZmluZWQgc3ltYm9scyB0 byBiZSBidWlsdC4NCj4gK2FsbG93X3VuZGVmaW5lZF9mbGFnPSRsdF9hbGxvd191bmRlZmluZWRf ZmxhZ19DWFgNCj4gKw0KPiArIyBGbGFnIHRoYXQgZW5mb3JjZXMgbm8gdW5kZWZpbmVkIHN5bWJv bHMuDQo+ICtub191bmRlZmluZWRfZmxhZz0kbHRfbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYDQo+ICsN Cj4gKyMgRmxhZyB0byBoYXJkY29kZSBcJGxpYmRpciBpbnRvIGEgYmluYXJ5IGR1cmluZyBsaW5r aW5nLg0KPiArIyBUaGlzIG11c3Qgd29yayBldmVuIGlmIFwkbGliZGlyIGRvZXMgbm90IGV4aXN0 DQo+ICtoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSRsdF9oYXJkY29kZV9saWJkaXJfZmxhZ19z cGVjX0NYWA0KPiArDQo+ICsjIElmIGxkIGlzIHVzZWQgd2hlbiBsaW5raW5nLCBmbGFnIHRvIGhh cmRjb2RlIFwkbGliZGlyIGludG8gYSBiaW5hcnkNCj4gKyMgZHVyaW5nIGxpbmtpbmcuICBUaGlz IG11c3Qgd29yayBldmVuIGlmIFwkbGliZGlyIGRvZXMgbm90IGV4aXN0Lg0KPiAraGFyZGNvZGVf bGliZGlyX2ZsYWdfc3BlY19sZD0kbHRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZF9DWFgN Cj4gKw0KPiArIyBXaGV0aGVyIHdlIG5lZWQgYSBzaW5nbGUgIi1ycGF0aCIgZmxhZyB3aXRoIGEg c2VwYXJhdGVkIGFyZ3VtZW50Lg0KPiAraGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0kbHRfaGFy ZGNvZGVfbGliZGlyX3NlcGFyYXRvcl9DWFgNCj4gKw0KPiArIyBTZXQgdG8gInllcyIgaWYgdXNp bmcgRElSL2xpYk5BTUVcJHtzaGFyZWRfZXh0fSBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMNCj4g KyMgRElSIGludG8gdGhlIHJlc3VsdGluZyBiaW5hcnkuDQo+ICtoYXJkY29kZV9kaXJlY3Q9JGhh cmRjb2RlX2RpcmVjdF9DWFgNCj4gKw0KPiArIyBTZXQgdG8gInllcyIgaWYgdXNpbmcgRElSL2xp Yk5BTUVcJHtzaGFyZWRfZXh0fSBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMNCj4gKyMgRElSIGlu dG8gdGhlIHJlc3VsdGluZyBiaW5hcnkgYW5kIHRoZSByZXN1bHRpbmcgbGlicmFyeSBkZXBlbmRl bmN5IGlzDQo+ICsjICJhYnNvbHV0ZSIsaS5lIGltcG9zc2libGUgdG8gY2hhbmdlIGJ5IHNldHRp bmcgXCR7c2hsaWJwYXRoX3Zhcn0gaWYgdGhlDQo+ICsjIGxpYnJhcnkgaXMgcmVsb2NhdGVkLg0K PiAraGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlPSRoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGVfQ1hY DQo+ICsNCj4gKyMgU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIHRoZSAtTERJUiBmbGFnIGR1cmluZyBs aW5raW5nIGhhcmRjb2RlcyBESVINCj4gKyMgaW50byB0aGUgcmVzdWx0aW5nIGJpbmFyeS4NCj4g K2hhcmRjb2RlX21pbnVzX0w9JGhhcmRjb2RlX21pbnVzX0xfQ1hYDQo+ICsNCj4gKyMgU2V0IHRv ICJ5ZXMiIGlmIHVzaW5nIFNITElCUEFUSF9WQVI9RElSIGR1cmluZyBsaW5raW5nIGhhcmRjb2Rl cyBESVINCj4gKyMgaW50byB0aGUgcmVzdWx0aW5nIGJpbmFyeS4NCj4gK2hhcmRjb2RlX3NobGli cGF0aF92YXI9JGhhcmRjb2RlX3NobGlicGF0aF92YXJfQ1hYDQo+ICsNCj4gKyMgU2V0IHRvICJ5 ZXMiIGlmIGJ1aWxkaW5nIGEgc2hhcmVkIGxpYnJhcnkgYXV0b21hdGljYWxseSBoYXJkY29kZXMg RElSDQo+ICsjIGludG8gdGhlIGxpYnJhcnkgYW5kIGFsbCBzdWJzZXF1ZW50IGxpYnJhcmllcyBh bmQgZXhlY3V0YWJsZXMgbGlua2VkDQo+ICsjIGFnYWluc3QgaXQuDQo+ICtoYXJkY29kZV9hdXRv bWF0aWM9JGhhcmRjb2RlX2F1dG9tYXRpY19DWFgNCj4gKw0KPiArIyBTZXQgdG8geWVzIGlmIGxp bmtlciBhZGRzIHJ1bnRpbWUgcGF0aHMgb2YgZGVwZW5kZW50IGxpYnJhcmllcw0KPiArIyB0byBy dW50aW1lIHBhdGggbGlzdC4NCj4gK2luaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGhfQ1hYDQo+ ICsNCj4gKyMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwg aXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLg0KPiArbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxf ZGVwbGlic19DWFgNCj4gKw0KPiArIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBm b3IgdGhlIGNvbXBpbGVyLg0KPiArZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0 aF9DWFgNCj4gKw0KPiArIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVx dWlyZWQuDQo+ICthbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9sc19D WFgNCj4gKw0KPiArIyBUaGUgY29tbWFuZHMgdG8gbGlzdCBleHBvcnRlZCBzeW1ib2xzLg0KPiAr ZXhwb3J0X3N5bWJvbHNfY21kcz0kbHRfZXhwb3J0X3N5bWJvbHNfY21kc19DWFgNCj4gKw0KPiAr IyBTeW1ib2xzIHRoYXQgc2hvdWxkIG5vdCBiZSBsaXN0ZWQgaW4gdGhlIHByZWxvYWRlZCBzeW1i b2xzLg0KPiArZXhjbHVkZV9leHBzeW1zPSRsdF9leGNsdWRlX2V4cHN5bXNfQ1hYDQo+ICsNCj4g KyMgU3ltYm9scyB0aGF0IG11c3QgYWx3YXlzIGJlIGV4cG9ydGVkLg0KPiAraW5jbHVkZV9leHBz eW1zPSRsdF9pbmNsdWRlX2V4cHN5bXNfQ1hYDQo+ICsNCj4gKyMgQ29tbWFuZHMgbmVjZXNzYXJ5 IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMu DQo+ICtwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kc19DWFgNCj4gKw0KPiArIyBTcGVjaWZ5 IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuDQo+ICtmaWxlX2xpc3Rfc3BlYz0kbHRf ZmlsZV9saXN0X3NwZWNfQ1hYDQo+ICsNCj4gKyMgSG93IHRvIGhhcmRjb2RlIGEgc2hhcmVkIGxp YnJhcnkgcGF0aCBpbnRvIGFuIGV4ZWN1dGFibGUuDQo+ICtoYXJkY29kZV9hY3Rpb249JGhhcmRj b2RlX2FjdGlvbl9DWFgNCj4gKw0KPiArIyBUaGUgZGlyZWN0b3JpZXMgc2VhcmNoZWQgYnkgdGhp cyBjb21waWxlciB3aGVuIGNyZWF0aW5nIGEgc2hhcmVkIGxpYnJhcnkuDQo+ICtjb21waWxlcl9s aWJfc2VhcmNoX2RpcnM9JGx0X2NvbXBpbGVyX2xpYl9zZWFyY2hfZGlyc19DWFgNCj4gKw0KPiAr IyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgb2JqZWN0cyBiZWlu ZyBsaW5rZWQgdG8NCj4gKyMgY3JlYXRlIGEgc2hhcmVkIGxpYnJhcnkuDQo+ICtwcmVkZXBfb2Jq ZWN0cz0kbHRfcHJlZGVwX29iamVjdHNfQ1hYDQo+ICtwb3N0ZGVwX29iamVjdHM9JGx0X3Bvc3Rk ZXBfb2JqZWN0c19DWFgNCj4gK3ByZWRlcHM9JGx0X3ByZWRlcHNfQ1hYDQo+ICtwb3N0ZGVwcz0k bHRfcG9zdGRlcHNfQ1hYDQo+ICsNCj4gKyMgVGhlIGxpYnJhcnkgc2VhcmNoIHBhdGggdXNlZCBp bnRlcm5hbGx5IGJ5IHRoZSBjb21waWxlciB3aGVuIGxpbmtpbmcNCj4gKyMgYSBzaGFyZWQgbGli cmFyeS4NCj4gK2NvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aD0kbHRfY29tcGlsZXJfbGliX3NlYXJj aF9wYXRoX0NYWA0KPiArDQo+ICsjICMjIyBFTkQgTElCVE9PTCBUQUcgQ09ORklHOiBDWFgNCj4g K19MVF9FT0YNCj4gKw0KPiArDQo+ICthc19mbl9leGl0IDANCj4gZGlmZiAtLWdpdCBhL2dkYi9y aXNjdi1jYW5vbmljYWxpemUtc3lzY2FsbC1nZW4uYyBiL2dkYi9yaXNjdi1jYW5vbmljYWxpemUt c3lzY2FsbC1nZW4uYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAw MC4uNjBkODBhYWUwYTYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nZGIvcmlzY3YtY2Fub25p Y2FsaXplLXN5c2NhbGwtZ2VuLmMNCj4gQEAgLTAsMCArMSwzMzggQEANCj4gKy8qIERPIE5PVCBF RElUOiBBdXRvZ2VuZXJhdGVkIGJ5IHJpc2N2LWNhbm9uaWNhbGl6ZS1zeXNjYWxsLWdlbi5weQ0K PiArDQo+ICsgICBDb3B5cmlnaHQgKEMpIDIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuDQo+ICsNCj4gKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4NCj4gKw0KPiArICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkNCj4gKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQo+ICsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcg0KPiArICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCj4gKw0KPiArICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ICsgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZg0KPiArICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQ0KPiArICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4NCj4gKw0KPiArICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCj4gKyAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8N Cj4gKw0KPiArI2luY2x1ZGUgImRlZnMuaCINCj4gKyNpbmNsdWRlICJyaXNjdi1saW51eC10ZGVw LmgiDQo+ICsNCj4gK2VudW0gZ2RiX3N5c2NhbGwNCj4gK3Jpc2N2NjRfY2Fub25pY2FsaXplX3N5 c2NhbGwgKGludCBzeXNjYWxsKQ0KPiArew0KPiArICBzd2l0Y2ggKHN5c2NhbGwpDQo+ICsgICAg ew0KPiArICAgIGNhc2UgMDogcmV0dXJuIGdkYl9zeXNfaW9fc2V0dXA7DQo+ICsgICAgY2FzZSAx OiByZXR1cm4gZ2RiX3N5c19pb19kZXN0cm95Ow0KPiArICAgIGNhc2UgMjogcmV0dXJuIGdkYl9z eXNfaW9fc3VibWl0Ow0KPiArICAgIGNhc2UgMzogcmV0dXJuIGdkYl9zeXNfaW9fY2FuY2VsOw0K PiArICAgIGNhc2UgNDogcmV0dXJuIGdkYl9zeXNfaW9fZ2V0ZXZlbnRzOw0KPiArICAgIGNhc2Ug NTogcmV0dXJuIGdkYl9zeXNfc2V0eGF0dHI7DQo+ICsgICAgY2FzZSA2OiByZXR1cm4gZ2RiX3N5 c19sc2V0eGF0dHI7DQo+ICsgICAgY2FzZSA3OiByZXR1cm4gZ2RiX3N5c19mc2V0eGF0dHI7DQo+ ICsgICAgY2FzZSA4OiByZXR1cm4gZ2RiX3N5c19nZXR4YXR0cjsNCj4gKyAgICBjYXNlIDk6IHJl dHVybiBnZGJfc3lzX2xnZXR4YXR0cjsNCj4gKyAgICBjYXNlIDEwOiByZXR1cm4gZ2RiX3N5c19m Z2V0eGF0dHI7DQo+ICsgICAgY2FzZSAxMTogcmV0dXJuIGdkYl9zeXNfbGlzdHhhdHRyOw0KPiAr ICAgIGNhc2UgMTI6IHJldHVybiBnZGJfc3lzX2xsaXN0eGF0dHI7DQo+ICsgICAgY2FzZSAxMzog cmV0dXJuIGdkYl9zeXNfZmxpc3R4YXR0cjsNCj4gKyAgICBjYXNlIDE0OiByZXR1cm4gZ2RiX3N5 c19yZW1vdmV4YXR0cjsNCj4gKyAgICBjYXNlIDE1OiByZXR1cm4gZ2RiX3N5c19scmVtb3ZleGF0 dHI7DQo+ICsgICAgY2FzZSAxNjogcmV0dXJuIGdkYl9zeXNfZnJlbW92ZXhhdHRyOw0KPiArICAg IGNhc2UgMTc6IHJldHVybiBnZGJfc3lzX2dldGN3ZDsNCj4gKyAgICBjYXNlIDE4OiByZXR1cm4g Z2RiX3N5c19sb29rdXBfZGNvb2tpZTsNCj4gKyAgICBjYXNlIDE5OiByZXR1cm4gZ2RiX3N5c19l dmVudGZkMjsNCj4gKyAgICBjYXNlIDIwOiByZXR1cm4gZ2RiX3N5c19lcG9sbF9jcmVhdGUxOw0K PiArICAgIGNhc2UgMjE6IHJldHVybiBnZGJfc3lzX2Vwb2xsX2N0bDsNCj4gKyAgICBjYXNlIDIy OiByZXR1cm4gZ2RiX3N5c19lcG9sbF9wd2FpdDsNCj4gKyAgICBjYXNlIDIzOiByZXR1cm4gZ2Ri X3N5c19kdXA7DQo+ICsgICAgY2FzZSAyNDogcmV0dXJuIGdkYl9zeXNfZHVwMzsNCj4gKyAgICBj YXNlIDI1OiByZXR1cm4gZ2RiX3N5c19mY250bDsNCj4gKyAgICBjYXNlIDI2OiByZXR1cm4gZ2Ri X3N5c19pbm90aWZ5X2luaXQxOw0KPiArICAgIGNhc2UgMjc6IHJldHVybiBnZGJfc3lzX2lub3Rp ZnlfYWRkX3dhdGNoOw0KPiArICAgIGNhc2UgMjg6IHJldHVybiBnZGJfc3lzX2lub3RpZnlfcm1f d2F0Y2g7DQo+ICsgICAgY2FzZSAyOTogcmV0dXJuIGdkYl9zeXNfaW9jdGw7DQo+ICsgICAgY2Fz ZSAzMDogcmV0dXJuIGdkYl9zeXNfaW9wcmlvX3NldDsNCj4gKyAgICBjYXNlIDMxOiByZXR1cm4g Z2RiX3N5c19pb3ByaW9fZ2V0Ow0KPiArICAgIGNhc2UgMzI6IHJldHVybiBnZGJfc3lzX2Zsb2Nr Ow0KPiArICAgIGNhc2UgMzM6IHJldHVybiBnZGJfc3lzX21rbm9kYXQ7DQo+ICsgICAgY2FzZSAz NDogcmV0dXJuIGdkYl9zeXNfbWtkaXJhdDsNCj4gKyAgICBjYXNlIDM1OiByZXR1cm4gZ2RiX3N5 c191bmxpbmthdDsNCj4gKyAgICBjYXNlIDM2OiByZXR1cm4gZ2RiX3N5c19zeW1saW5rYXQ7DQo+ ICsgICAgY2FzZSAzNzogcmV0dXJuIGdkYl9zeXNfbGlua2F0Ow0KPiArICAgIC8qIGNhc2UgMzk6 IHJldHVybiBnZGJfc3lzX3Vtb3VudDI7ICAqLw0KPiArICAgIGNhc2UgNDA6IHJldHVybiBnZGJf c3lzX21vdW50Ow0KPiArICAgIGNhc2UgNDE6IHJldHVybiBnZGJfc3lzX3Bpdm90X3Jvb3Q7DQo+ ICsgICAgY2FzZSA0MjogcmV0dXJuIGdkYl9zeXNfbmZzc2VydmN0bDsNCj4gKyAgICBjYXNlIDQz OiByZXR1cm4gZ2RiX3N5c19zdGF0ZnM7DQo+ICsgICAgY2FzZSA0NDogcmV0dXJuIGdkYl9zeXNf ZnN0YXRmczsNCj4gKyAgICBjYXNlIDQ1OiByZXR1cm4gZ2RiX3N5c190cnVuY2F0ZTsNCj4gKyAg ICBjYXNlIDQ2OiByZXR1cm4gZ2RiX3N5c19mdHJ1bmNhdGU7DQo+ICsgICAgY2FzZSA0NzogcmV0 dXJuIGdkYl9zeXNfZmFsbG9jYXRlOw0KPiArICAgIGNhc2UgNDg6IHJldHVybiBnZGJfc3lzX2Zh Y2Nlc3NhdDsNCj4gKyAgICBjYXNlIDQ5OiByZXR1cm4gZ2RiX3N5c19jaGRpcjsNCj4gKyAgICBj YXNlIDUwOiByZXR1cm4gZ2RiX3N5c19mY2hkaXI7DQo+ICsgICAgY2FzZSA1MTogcmV0dXJuIGdk Yl9zeXNfY2hyb290Ow0KPiArICAgIGNhc2UgNTI6IHJldHVybiBnZGJfc3lzX2ZjaG1vZDsNCj4g KyAgICBjYXNlIDUzOiByZXR1cm4gZ2RiX3N5c19mY2htb2RhdDsNCj4gKyAgICBjYXNlIDU0OiBy ZXR1cm4gZ2RiX3N5c19mY2hvd25hdDsNCj4gKyAgICBjYXNlIDU1OiByZXR1cm4gZ2RiX3N5c19m Y2hvd247DQo+ICsgICAgY2FzZSA1NjogcmV0dXJuIGdkYl9zeXNfb3BlbmF0Ow0KPiArICAgIGNh c2UgNTc6IHJldHVybiBnZGJfc3lzX2Nsb3NlOw0KPiArICAgIGNhc2UgNTg6IHJldHVybiBnZGJf c3lzX3ZoYW5ndXA7DQo+ICsgICAgY2FzZSA1OTogcmV0dXJuIGdkYl9zeXNfcGlwZTI7DQo+ICsg ICAgY2FzZSA2MDogcmV0dXJuIGdkYl9zeXNfcXVvdGFjdGw7DQo+ICsgICAgY2FzZSA2MTogcmV0 dXJuIGdkYl9zeXNfZ2V0ZGVudHM2NDsNCj4gKyAgICBjYXNlIDYyOiByZXR1cm4gZ2RiX3N5c19s c2VlazsNCj4gKyAgICBjYXNlIDYzOiByZXR1cm4gZ2RiX3N5c19yZWFkOw0KPiArICAgIGNhc2Ug NjQ6IHJldHVybiBnZGJfc3lzX3dyaXRlOw0KPiArICAgIGNhc2UgNjU6IHJldHVybiBnZGJfc3lz X3JlYWR2Ow0KPiArICAgIGNhc2UgNjY6IHJldHVybiBnZGJfc3lzX3dyaXRldjsNCj4gKyAgICBj YXNlIDY3OiByZXR1cm4gZ2RiX3N5c19wcmVhZDY0Ow0KPiArICAgIGNhc2UgNjg6IHJldHVybiBn ZGJfc3lzX3B3cml0ZTY0Ow0KPiArICAgIC8qIGNhc2UgNjk6IHJldHVybiBnZGJfc3lzX3ByZWFk djsgICovDQo+ICsgICAgLyogY2FzZSA3MDogcmV0dXJuIGdkYl9zeXNfcHdyaXRldjsgICovDQo+ ICsgICAgY2FzZSA3MTogcmV0dXJuIGdkYl9zeXNfc2VuZGZpbGU7DQo+ICsgICAgY2FzZSA3Mjog cmV0dXJuIGdkYl9zeXNfcHNlbGVjdDY7DQo+ICsgICAgY2FzZSA3MzogcmV0dXJuIGdkYl9zeXNf cHBvbGw7DQo+ICsgICAgLyogY2FzZSA3NDogcmV0dXJuIGdkYl9zeXNfc2lnbmFsZmQ0OyAgKi8N Cj4gKyAgICBjYXNlIDc1OiByZXR1cm4gZ2RiX3N5c192bXNwbGljZTsNCj4gKyAgICBjYXNlIDc2 OiByZXR1cm4gZ2RiX3N5c19zcGxpY2U7DQo+ICsgICAgY2FzZSA3NzogcmV0dXJuIGdkYl9zeXNf dGVlOw0KPiArICAgIGNhc2UgNzg6IHJldHVybiBnZGJfc3lzX3JlYWRsaW5rYXQ7DQo+ICsgICAg Y2FzZSA3OTogcmV0dXJuIGdkYl9zeXNfbmV3ZnN0YXRhdDsNCj4gKyAgICBjYXNlIDgwOiByZXR1 cm4gZ2RiX3N5c19mc3RhdDsNCj4gKyAgICBjYXNlIDgxOiByZXR1cm4gZ2RiX3N5c19zeW5jOw0K PiArICAgIGNhc2UgODI6IHJldHVybiBnZGJfc3lzX2ZzeW5jOw0KPiArICAgIGNhc2UgODM6IHJl dHVybiBnZGJfc3lzX2ZkYXRhc3luYzsNCj4gKyAgICBjYXNlIDg0OiByZXR1cm4gZ2RiX3N5c19z eW5jX2ZpbGVfcmFuZ2U7DQo+ICsgICAgLyogY2FzZSA4NTogcmV0dXJuIGdkYl9zeXNfdGltZXJm ZF9jcmVhdGU7ICAqLw0KPiArICAgIC8qIGNhc2UgODY6IHJldHVybiBnZGJfc3lzX3RpbWVyZmRf c2V0dGltZTsgICovDQo+ICsgICAgLyogY2FzZSA4NzogcmV0dXJuIGdkYl9zeXNfdGltZXJmZF9n ZXR0aW1lOyAgKi8NCj4gKyAgICAvKiBjYXNlIDg4OiByZXR1cm4gZ2RiX3N5c191dGltZW5zYXQ7 ICAqLw0KPiArICAgIGNhc2UgODk6IHJldHVybiBnZGJfc3lzX2FjY3Q7DQo+ICsgICAgY2FzZSA5 MDogcmV0dXJuIGdkYl9zeXNfY2FwZ2V0Ow0KPiArICAgIGNhc2UgOTE6IHJldHVybiBnZGJfc3lz X2NhcHNldDsNCj4gKyAgICBjYXNlIDkyOiByZXR1cm4gZ2RiX3N5c19wZXJzb25hbGl0eTsNCj4g KyAgICBjYXNlIDkzOiByZXR1cm4gZ2RiX3N5c19leGl0Ow0KPiArICAgIGNhc2UgOTQ6IHJldHVy biBnZGJfc3lzX2V4aXRfZ3JvdXA7DQo+ICsgICAgY2FzZSA5NTogcmV0dXJuIGdkYl9zeXNfd2Fp dGlkOw0KPiArICAgIGNhc2UgOTY6IHJldHVybiBnZGJfc3lzX3NldF90aWRfYWRkcmVzczsNCj4g KyAgICBjYXNlIDk3OiByZXR1cm4gZ2RiX3N5c191bnNoYXJlOw0KPiArICAgIGNhc2UgOTg6IHJl dHVybiBnZGJfc3lzX2Z1dGV4Ow0KPiArICAgIGNhc2UgOTk6IHJldHVybiBnZGJfc3lzX3NldF9y b2J1c3RfbGlzdDsNCj4gKyAgICBjYXNlIDEwMDogcmV0dXJuIGdkYl9zeXNfZ2V0X3JvYnVzdF9s aXN0Ow0KPiArICAgIGNhc2UgMTAxOiByZXR1cm4gZ2RiX3N5c19uYW5vc2xlZXA7DQo+ICsgICAg Y2FzZSAxMDI6IHJldHVybiBnZGJfc3lzX2dldGl0aW1lcjsNCj4gKyAgICBjYXNlIDEwMzogcmV0 dXJuIGdkYl9zeXNfc2V0aXRpbWVyOw0KPiArICAgIGNhc2UgMTA0OiByZXR1cm4gZ2RiX3N5c19r ZXhlY19sb2FkOw0KPiArICAgIGNhc2UgMTA1OiByZXR1cm4gZ2RiX3N5c19pbml0X21vZHVsZTsN Cj4gKyAgICBjYXNlIDEwNjogcmV0dXJuIGdkYl9zeXNfZGVsZXRlX21vZHVsZTsNCj4gKyAgICBj YXNlIDEwNzogcmV0dXJuIGdkYl9zeXNfdGltZXJfY3JlYXRlOw0KPiArICAgIGNhc2UgMTA4OiBy ZXR1cm4gZ2RiX3N5c190aW1lcl9nZXR0aW1lOw0KPiArICAgIGNhc2UgMTA5OiByZXR1cm4gZ2Ri X3N5c190aW1lcl9nZXRvdmVycnVuOw0KPiArICAgIGNhc2UgMTEwOiByZXR1cm4gZ2RiX3N5c190 aW1lcl9zZXR0aW1lOw0KPiArICAgIGNhc2UgMTExOiByZXR1cm4gZ2RiX3N5c190aW1lcl9kZWxl dGU7DQo+ICsgICAgY2FzZSAxMTI6IHJldHVybiBnZGJfc3lzX2Nsb2NrX3NldHRpbWU7DQo+ICsg ICAgY2FzZSAxMTM6IHJldHVybiBnZGJfc3lzX2Nsb2NrX2dldHRpbWU7DQo+ICsgICAgY2FzZSAx MTQ6IHJldHVybiBnZGJfc3lzX2Nsb2NrX2dldHJlczsNCj4gKyAgICBjYXNlIDExNTogcmV0dXJu IGdkYl9zeXNfY2xvY2tfbmFub3NsZWVwOw0KPiArICAgIGNhc2UgMTE2OiByZXR1cm4gZ2RiX3N5 c19zeXNsb2c7DQo+ICsgICAgY2FzZSAxMTc6IHJldHVybiBnZGJfc3lzX3B0cmFjZTsNCj4gKyAg ICBjYXNlIDExODogcmV0dXJuIGdkYl9zeXNfc2NoZWRfc2V0cGFyYW07DQo+ICsgICAgY2FzZSAx MTk6IHJldHVybiBnZGJfc3lzX3NjaGVkX3NldHNjaGVkdWxlcjsNCj4gKyAgICBjYXNlIDEyMDog cmV0dXJuIGdkYl9zeXNfc2NoZWRfZ2V0c2NoZWR1bGVyOw0KPiArICAgIGNhc2UgMTIxOiByZXR1 cm4gZ2RiX3N5c19zY2hlZF9nZXRwYXJhbTsNCj4gKyAgICBjYXNlIDEyMjogcmV0dXJuIGdkYl9z eXNfc2NoZWRfc2V0YWZmaW5pdHk7DQo+ICsgICAgY2FzZSAxMjM6IHJldHVybiBnZGJfc3lzX3Nj aGVkX2dldGFmZmluaXR5Ow0KPiArICAgIGNhc2UgMTI0OiByZXR1cm4gZ2RiX3N5c19zY2hlZF95 aWVsZDsNCj4gKyAgICBjYXNlIDEyNTogcmV0dXJuIGdkYl9zeXNfc2NoZWRfZ2V0X3ByaW9yaXR5 X21heDsNCj4gKyAgICBjYXNlIDEyNjogcmV0dXJuIGdkYl9zeXNfc2NoZWRfZ2V0X3ByaW9yaXR5 X21pbjsNCj4gKyAgICBjYXNlIDEyNzogcmV0dXJuIGdkYl9zeXNfc2NoZWRfcnJfZ2V0X2ludGVy dmFsOw0KPiArICAgIGNhc2UgMTI4OiByZXR1cm4gZ2RiX3N5c19yZXN0YXJ0X3N5c2NhbGw7DQo+ ICsgICAgY2FzZSAxMjk6IHJldHVybiBnZGJfc3lzX2tpbGw7DQo+ICsgICAgY2FzZSAxMzA6IHJl dHVybiBnZGJfc3lzX3RraWxsOw0KPiArICAgIGNhc2UgMTMxOiByZXR1cm4gZ2RiX3N5c190Z2tp bGw7DQo+ICsgICAgY2FzZSAxMzI6IHJldHVybiBnZGJfc3lzX3NpZ2FsdHN0YWNrOw0KPiArICAg IGNhc2UgMTMzOiByZXR1cm4gZ2RiX3N5c19ydF9zaWdzdXNwZW5kOw0KPiArICAgIGNhc2UgMTM0 OiByZXR1cm4gZ2RiX3N5c19ydF9zaWdhY3Rpb247DQo+ICsgICAgY2FzZSAxMzU6IHJldHVybiBn ZGJfc3lzX3J0X3NpZ3Byb2NtYXNrOw0KPiArICAgIGNhc2UgMTM2OiByZXR1cm4gZ2RiX3N5c19y dF9zaWdwZW5kaW5nOw0KPiArICAgIGNhc2UgMTM3OiByZXR1cm4gZ2RiX3N5c19ydF9zaWd0aW1l ZHdhaXQ7DQo+ICsgICAgY2FzZSAxMzg6IHJldHVybiBnZGJfc3lzX3J0X3NpZ3F1ZXVlaW5mbzsN Cj4gKyAgICBjYXNlIDEzOTogcmV0dXJuIGdkYl9zeXNfcnRfc2lncmV0dXJuOw0KPiArICAgIGNh c2UgMTQwOiByZXR1cm4gZ2RiX3N5c19zZXRwcmlvcml0eTsNCj4gKyAgICBjYXNlIDE0MTogcmV0 dXJuIGdkYl9zeXNfZ2V0cHJpb3JpdHk7DQo+ICsgICAgY2FzZSAxNDI6IHJldHVybiBnZGJfc3lz X3JlYm9vdDsNCj4gKyAgICBjYXNlIDE0MzogcmV0dXJuIGdkYl9zeXNfc2V0cmVnaWQ7DQo+ICsg ICAgY2FzZSAxNDQ6IHJldHVybiBnZGJfc3lzX3NldGdpZDsNCj4gKyAgICBjYXNlIDE0NTogcmV0 dXJuIGdkYl9zeXNfc2V0cmV1aWQ7DQo+ICsgICAgY2FzZSAxNDY6IHJldHVybiBnZGJfc3lzX3Nl dHVpZDsNCj4gKyAgICBjYXNlIDE0NzogcmV0dXJuIGdkYl9zeXNfc2V0cmVzdWlkOw0KPiArICAg IGNhc2UgMTQ4OiByZXR1cm4gZ2RiX3N5c19nZXRyZXN1aWQ7DQo+ICsgICAgY2FzZSAxNDk6IHJl dHVybiBnZGJfc3lzX3NldHJlc2dpZDsNCj4gKyAgICBjYXNlIDE1MDogcmV0dXJuIGdkYl9zeXNf Z2V0cmVzZ2lkOw0KPiArICAgIGNhc2UgMTUxOiByZXR1cm4gZ2RiX3N5c19zZXRmc3VpZDsNCj4g KyAgICBjYXNlIDE1MjogcmV0dXJuIGdkYl9zeXNfc2V0ZnNnaWQ7DQo+ICsgICAgY2FzZSAxNTM6 IHJldHVybiBnZGJfc3lzX3RpbWVzOw0KPiArICAgIGNhc2UgMTU0OiByZXR1cm4gZ2RiX3N5c19z ZXRwZ2lkOw0KPiArICAgIGNhc2UgMTU1OiByZXR1cm4gZ2RiX3N5c19nZXRwZ2lkOw0KPiArICAg IGNhc2UgMTU2OiByZXR1cm4gZ2RiX3N5c19nZXRzaWQ7DQo+ICsgICAgY2FzZSAxNTc6IHJldHVy biBnZGJfc3lzX3NldHNpZDsNCj4gKyAgICBjYXNlIDE1ODogcmV0dXJuIGdkYl9zeXNfZ2V0Z3Jv dXBzOw0KPiArICAgIGNhc2UgMTU5OiByZXR1cm4gZ2RiX3N5c19zZXRncm91cHM7DQo+ICsgICAg Y2FzZSAxNjA6IHJldHVybiBnZGJfc3lzX3VuYW1lOw0KPiArICAgIGNhc2UgMTYxOiByZXR1cm4g Z2RiX3N5c19zZXRob3N0bmFtZTsNCj4gKyAgICBjYXNlIDE2MjogcmV0dXJuIGdkYl9zeXNfc2V0 ZG9tYWlubmFtZTsNCj4gKyAgICBjYXNlIDE2MzogcmV0dXJuIGdkYl9zeXNfZ2V0cmxpbWl0Ow0K PiArICAgIGNhc2UgMTY0OiByZXR1cm4gZ2RiX3N5c19zZXRybGltaXQ7DQo+ICsgICAgY2FzZSAx NjU6IHJldHVybiBnZGJfc3lzX2dldHJ1c2FnZTsNCj4gKyAgICBjYXNlIDE2NjogcmV0dXJuIGdk Yl9zeXNfdW1hc2s7DQo+ICsgICAgY2FzZSAxNjc6IHJldHVybiBnZGJfc3lzX3ByY3RsOw0KPiAr ICAgIGNhc2UgMTY4OiByZXR1cm4gZ2RiX3N5c19nZXRjcHU7DQo+ICsgICAgY2FzZSAxNjk6IHJl dHVybiBnZGJfc3lzX2dldHRpbWVvZmRheTsNCj4gKyAgICBjYXNlIDE3MDogcmV0dXJuIGdkYl9z eXNfc2V0dGltZW9mZGF5Ow0KPiArICAgIGNhc2UgMTcxOiByZXR1cm4gZ2RiX3N5c19hZGp0aW1l eDsNCj4gKyAgICBjYXNlIDE3MjogcmV0dXJuIGdkYl9zeXNfZ2V0cGlkOw0KPiArICAgIGNhc2Ug MTczOiByZXR1cm4gZ2RiX3N5c19nZXRwcGlkOw0KPiArICAgIGNhc2UgMTc0OiByZXR1cm4gZ2Ri X3N5c19nZXR1aWQ7DQo+ICsgICAgY2FzZSAxNzU6IHJldHVybiBnZGJfc3lzX2dldGV1aWQ7DQo+ ICsgICAgY2FzZSAxNzY6IHJldHVybiBnZGJfc3lzX2dldGdpZDsNCj4gKyAgICBjYXNlIDE3Nzog cmV0dXJuIGdkYl9zeXNfZ2V0ZWdpZDsNCj4gKyAgICBjYXNlIDE3ODogcmV0dXJuIGdkYl9zeXNf Z2V0dGlkOw0KPiArICAgIGNhc2UgMTc5OiByZXR1cm4gZ2RiX3N5c19zeXNpbmZvOw0KPiArICAg IGNhc2UgMTgwOiByZXR1cm4gZ2RiX3N5c19tcV9vcGVuOw0KPiArICAgIGNhc2UgMTgxOiByZXR1 cm4gZ2RiX3N5c19tcV91bmxpbms7DQo+ICsgICAgY2FzZSAxODI6IHJldHVybiBnZGJfc3lzX21x X3RpbWVkc2VuZDsNCj4gKyAgICBjYXNlIDE4MzogcmV0dXJuIGdkYl9zeXNfbXFfdGltZWRyZWNl aXZlOw0KPiArICAgIGNhc2UgMTg0OiByZXR1cm4gZ2RiX3N5c19tcV9ub3RpZnk7DQo+ICsgICAg Y2FzZSAxODU6IHJldHVybiBnZGJfc3lzX21xX2dldHNldGF0dHI7DQo+ICsgICAgY2FzZSAxODY6 IHJldHVybiBnZGJfc3lzX21zZ2dldDsNCj4gKyAgICBjYXNlIDE4NzogcmV0dXJuIGdkYl9zeXNf bXNnY3RsOw0KPiArICAgIGNhc2UgMTg4OiByZXR1cm4gZ2RiX3N5c19tc2dyY3Y7DQo+ICsgICAg Y2FzZSAxODk6IHJldHVybiBnZGJfc3lzX21zZ3NuZDsNCj4gKyAgICBjYXNlIDE5MDogcmV0dXJu IGdkYl9zeXNfc2VtZ2V0Ow0KPiArICAgIGNhc2UgMTkxOiByZXR1cm4gZ2RiX3N5c19zZW1jdGw7 DQo+ICsgICAgY2FzZSAxOTI6IHJldHVybiBnZGJfc3lzX3NlbXRpbWVkb3A7DQo+ICsgICAgY2Fz ZSAxOTM6IHJldHVybiBnZGJfc3lzX3NlbW9wOw0KPiArICAgIGNhc2UgMTk0OiByZXR1cm4gZ2Ri X3N5c19zaG1nZXQ7DQo+ICsgICAgY2FzZSAxOTU6IHJldHVybiBnZGJfc3lzX3NobWN0bDsNCj4g KyAgICBjYXNlIDE5NjogcmV0dXJuIGdkYl9zeXNfc2htYXQ7DQo+ICsgICAgY2FzZSAxOTc6IHJl dHVybiBnZGJfc3lzX3NobWR0Ow0KPiArICAgIGNhc2UgMTk4OiByZXR1cm4gZ2RiX3N5c19zb2Nr ZXQ7DQo+ICsgICAgY2FzZSAxOTk6IHJldHVybiBnZGJfc3lzX3NvY2tldHBhaXI7DQo+ICsgICAg Y2FzZSAyMDA6IHJldHVybiBnZGJfc3lzX2JpbmQ7DQo+ICsgICAgY2FzZSAyMDE6IHJldHVybiBn ZGJfc3lzX2xpc3RlbjsNCj4gKyAgICBjYXNlIDIwMjogcmV0dXJuIGdkYl9zeXNfYWNjZXB0Ow0K PiArICAgIGNhc2UgMjAzOiByZXR1cm4gZ2RiX3N5c19jb25uZWN0Ow0KPiArICAgIGNhc2UgMjA0 OiByZXR1cm4gZ2RiX3N5c19nZXRzb2NrbmFtZTsNCj4gKyAgICBjYXNlIDIwNTogcmV0dXJuIGdk Yl9zeXNfZ2V0cGVlcm5hbWU7DQo+ICsgICAgY2FzZSAyMDY6IHJldHVybiBnZGJfc3lzX3NlbmR0 bzsNCj4gKyAgICBjYXNlIDIwNzogcmV0dXJuIGdkYl9zeXNfcmVjdmZyb207DQo+ICsgICAgY2Fz ZSAyMDg6IHJldHVybiBnZGJfc3lzX3NldHNvY2tvcHQ7DQo+ICsgICAgY2FzZSAyMDk6IHJldHVy biBnZGJfc3lzX2dldHNvY2tvcHQ7DQo+ICsgICAgY2FzZSAyMTA6IHJldHVybiBnZGJfc3lzX3No dXRkb3duOw0KPiArICAgIGNhc2UgMjExOiByZXR1cm4gZ2RiX3N5c19zZW5kbXNnOw0KPiArICAg IGNhc2UgMjEyOiByZXR1cm4gZ2RiX3N5c19yZWN2bXNnOw0KPiArICAgIGNhc2UgMjEzOiByZXR1 cm4gZ2RiX3N5c19yZWFkYWhlYWQ7DQo+ICsgICAgY2FzZSAyMTQ6IHJldHVybiBnZGJfc3lzX2Jy azsNCj4gKyAgICBjYXNlIDIxNTogcmV0dXJuIGdkYl9zeXNfbXVubWFwOw0KPiArICAgIGNhc2Ug MjE2OiByZXR1cm4gZ2RiX3N5c19tcmVtYXA7DQo+ICsgICAgY2FzZSAyMTc6IHJldHVybiBnZGJf c3lzX2FkZF9rZXk7DQo+ICsgICAgY2FzZSAyMTg6IHJldHVybiBnZGJfc3lzX3JlcXVlc3Rfa2V5 Ow0KPiArICAgIGNhc2UgMjE5OiByZXR1cm4gZ2RiX3N5c19rZXljdGw7DQo+ICsgICAgY2FzZSAy MjA6IHJldHVybiBnZGJfc3lzX2Nsb25lOw0KPiArICAgIGNhc2UgMjIxOiByZXR1cm4gZ2RiX3N5 c19leGVjdmU7DQo+ICsgICAgY2FzZSAyMjI6IHJldHVybiBnZGJfb2xkX21tYXA7DQo+ICsgICAg Y2FzZSAyMjM6IHJldHVybiBnZGJfc3lzX2ZhZHZpc2U2NDsNCj4gKyAgICBjYXNlIDIyNDogcmV0 dXJuIGdkYl9zeXNfc3dhcG9uOw0KPiArICAgIGNhc2UgMjI1OiByZXR1cm4gZ2RiX3N5c19zd2Fw b2ZmOw0KPiArICAgIGNhc2UgMjI2OiByZXR1cm4gZ2RiX3N5c19tcHJvdGVjdDsNCj4gKyAgICBj YXNlIDIyNzogcmV0dXJuIGdkYl9zeXNfbXN5bmM7DQo+ICsgICAgY2FzZSAyMjg6IHJldHVybiBn ZGJfc3lzX21sb2NrOw0KPiArICAgIGNhc2UgMjI5OiByZXR1cm4gZ2RiX3N5c19tdW5sb2NrOw0K PiArICAgIGNhc2UgMjMwOiByZXR1cm4gZ2RiX3N5c19tbG9ja2FsbDsNCj4gKyAgICBjYXNlIDIz MTogcmV0dXJuIGdkYl9zeXNfbXVubG9ja2FsbDsNCj4gKyAgICBjYXNlIDIzMjogcmV0dXJuIGdk Yl9zeXNfbWluY29yZTsNCj4gKyAgICBjYXNlIDIzMzogcmV0dXJuIGdkYl9zeXNfbWFkdmlzZTsN Cj4gKyAgICBjYXNlIDIzNDogcmV0dXJuIGdkYl9zeXNfcmVtYXBfZmlsZV9wYWdlczsNCj4gKyAg ICBjYXNlIDIzNTogcmV0dXJuIGdkYl9zeXNfbWJpbmQ7DQo+ICsgICAgY2FzZSAyMzY6IHJldHVy biBnZGJfc3lzX2dldF9tZW1wb2xpY3k7DQo+ICsgICAgY2FzZSAyMzc6IHJldHVybiBnZGJfc3lz X3NldF9tZW1wb2xpY3k7DQo+ICsgICAgY2FzZSAyMzg6IHJldHVybiBnZGJfc3lzX21pZ3JhdGVf cGFnZXM7DQo+ICsgICAgY2FzZSAyMzk6IHJldHVybiBnZGJfc3lzX21vdmVfcGFnZXM7DQo+ICsg ICAgLyogY2FzZSAyNDA6IHJldHVybiBnZGJfc3lzX3J0X3Rnc2lncXVldWVpbmZvOyAgKi8NCj4g KyAgICAvKiBjYXNlIDI0MTogcmV0dXJuIGdkYl9zeXNfcGVyZl9ldmVudF9vcGVuOyAgKi8NCj4g KyAgICAvKiBjYXNlIDI0MjogcmV0dXJuIGdkYl9zeXNfYWNjZXB0NDsgICovDQo+ICsgICAgLyog Y2FzZSAyNDM6IHJldHVybiBnZGJfc3lzX3JlY3ZtbXNnOyAgKi8NCj4gKyAgICAvKiBjYXNlIDI1 ODogcmV0dXJuIGdkYl9zeXNfcmlzY3ZfaHdwcm9iZTsgICovDQo+ICsgICAgLyogY2FzZSAyNTk6 IHJldHVybiBnZGJfc3lzX3Jpc2N2X2ZsdXNoX2ljYWNoZTsgICovDQo+ICsgICAgY2FzZSAyNjA6 IHJldHVybiBnZGJfc3lzX3dhaXQ0Ow0KPiArICAgIC8qIGNhc2UgMjYxOiByZXR1cm4gZ2RiX3N5 c19wcmxpbWl0NjQ7ICAqLw0KPiArICAgIC8qIGNhc2UgMjYyOiByZXR1cm4gZ2RiX3N5c19mYW5v dGlmeV9pbml0OyAgKi8NCj4gKyAgICAvKiBjYXNlIDI2MzogcmV0dXJuIGdkYl9zeXNfZmFub3Rp ZnlfbWFyazsgICovDQo+ICsgICAgLyogY2FzZSAyNjQ6IHJldHVybiBnZGJfc3lzX25hbWVfdG9f aGFuZGxlX2F0OyAgKi8NCj4gKyAgICAvKiBjYXNlIDI2NTogcmV0dXJuIGdkYl9zeXNfb3Blbl9i eV9oYW5kbGVfYXQ7ICAqLw0KPiArICAgIC8qIGNhc2UgMjY2OiByZXR1cm4gZ2RiX3N5c19jbG9j a19hZGp0aW1lOyAgKi8NCj4gKyAgICAvKiBjYXNlIDI2NzogcmV0dXJuIGdkYl9zeXNfc3luY2Zz OyAgKi8NCj4gKyAgICAvKiBjYXNlIDI2ODogcmV0dXJuIGdkYl9zeXNfc2V0bnM7ICAqLw0KPiAr ICAgIC8qIGNhc2UgMjY5OiByZXR1cm4gZ2RiX3N5c19zZW5kbW1zZzsgICovDQo+ICsgICAgLyog Y2FzZSAyNzA6IHJldHVybiBnZGJfc3lzX3Byb2Nlc3Nfdm1fcmVhZHY7ICAqLw0KPiArICAgIC8q IGNhc2UgMjcxOiByZXR1cm4gZ2RiX3N5c19wcm9jZXNzX3ZtX3dyaXRldjsgICovDQo+ICsgICAg LyogY2FzZSAyNzI6IHJldHVybiBnZGJfc3lzX2tjbXA7ICAqLw0KPiArICAgIC8qIGNhc2UgMjcz OiByZXR1cm4gZ2RiX3N5c19maW5pdF9tb2R1bGU7ICAqLw0KPiArICAgIC8qIGNhc2UgMjc0OiBy ZXR1cm4gZ2RiX3N5c19zY2hlZF9zZXRhdHRyOyAgKi8NCj4gKyAgICAvKiBjYXNlIDI3NTogcmV0 dXJuIGdkYl9zeXNfc2NoZWRfZ2V0YXR0cjsgICovDQo+ICsgICAgLyogY2FzZSAyNzY6IHJldHVy biBnZGJfc3lzX3JlbmFtZWF0MjsgICovDQo+ICsgICAgLyogY2FzZSAyNzc6IHJldHVybiBnZGJf c3lzX3NlY2NvbXA7ICAqLw0KPiArICAgIGNhc2UgMjc4OiByZXR1cm4gZ2RiX3N5c19nZXRyYW5k b207DQo+ICsgICAgLyogY2FzZSAyNzk6IHJldHVybiBnZGJfc3lzX21lbWZkX2NyZWF0ZTsgICov DQo+ICsgICAgLyogY2FzZSAyODA6IHJldHVybiBnZGJfc3lzX2JwZjsgICovDQo+ICsgICAgLyog Y2FzZSAyODE6IHJldHVybiBnZGJfc3lzX2V4ZWN2ZWF0OyAgKi8NCj4gKyAgICAvKiBjYXNlIDI4 MjogcmV0dXJuIGdkYl9zeXNfdXNlcmZhdWx0ZmQ7ICAqLw0KPiArICAgIC8qIGNhc2UgMjgzOiBy ZXR1cm4gZ2RiX3N5c19tZW1iYXJyaWVyOyAgKi8NCj4gKyAgICAvKiBjYXNlIDI4NDogcmV0dXJu IGdkYl9zeXNfbWxvY2syOyAgKi8NCj4gKyAgICAvKiBjYXNlIDI4NTogcmV0dXJuIGdkYl9zeXNf Y29weV9maWxlX3JhbmdlOyAgKi8NCj4gKyAgICAvKiBjYXNlIDI4NjogcmV0dXJuIGdkYl9zeXNf cHJlYWR2MjsgICovDQo+ICsgICAgLyogY2FzZSAyODc6IHJldHVybiBnZGJfc3lzX3B3cml0ZXYy OyAgKi8NCj4gKyAgICAvKiBjYXNlIDI4ODogcmV0dXJuIGdkYl9zeXNfcGtleV9tcHJvdGVjdDsg ICovDQo+ICsgICAgLyogY2FzZSAyODk6IHJldHVybiBnZGJfc3lzX3BrZXlfYWxsb2M7ICAqLw0K PiArICAgIC8qIGNhc2UgMjkwOiByZXR1cm4gZ2RiX3N5c19wa2V5X2ZyZWU7ICAqLw0KPiArICAg IGNhc2UgMjkxOiByZXR1cm4gZ2RiX3N5c19zdGF0eDsNCj4gKyAgICAvKiBjYXNlIDI5MjogcmV0 dXJuIGdkYl9zeXNfaW9fcGdldGV2ZW50czsgICovDQo+ICsgICAgLyogY2FzZSAyOTM6IHJldHVy biBnZGJfc3lzX3JzZXE7ICAqLw0KPiArICAgIC8qIGNhc2UgMjk0OiByZXR1cm4gZ2RiX3N5c19r ZXhlY19maWxlX2xvYWQ7ICAqLw0KPiArICAgIC8qIGNhc2UgNDI0OiByZXR1cm4gZ2RiX3N5c19w aWRmZF9zZW5kX3NpZ25hbDsgICovDQo+ICsgICAgLyogY2FzZSA0MjU6IHJldHVybiBnZGJfc3lz X2lvX3VyaW5nX3NldHVwOyAgKi8NCj4gKyAgICAvKiBjYXNlIDQyNjogcmV0dXJuIGdkYl9zeXNf aW9fdXJpbmdfZW50ZXI7ICAqLw0KPiArICAgIC8qIGNhc2UgNDI3OiByZXR1cm4gZ2RiX3N5c19p b191cmluZ19yZWdpc3RlcjsgICovDQo+ICsgICAgLyogY2FzZSA0Mjg6IHJldHVybiBnZGJfc3lz X29wZW5fdHJlZTsgICovDQo+ICsgICAgLyogY2FzZSA0Mjk6IHJldHVybiBnZGJfc3lzX21vdmVf bW91bnQ7ICAqLw0KPiArICAgIC8qIGNhc2UgNDMwOiByZXR1cm4gZ2RiX3N5c19mc29wZW47ICAq Lw0KPiArICAgIC8qIGNhc2UgNDMxOiByZXR1cm4gZ2RiX3N5c19mc2NvbmZpZzsgICovDQo+ICsg ICAgLyogY2FzZSA0MzI6IHJldHVybiBnZGJfc3lzX2ZzbW91bnQ7ICAqLw0KPiArICAgIC8qIGNh c2UgNDMzOiByZXR1cm4gZ2RiX3N5c19mc3BpY2s7ICAqLw0KPiArICAgIC8qIGNhc2UgNDM0OiBy ZXR1cm4gZ2RiX3N5c19waWRmZF9vcGVuOyAgKi8NCj4gKyAgICAvKiBjYXNlIDQzNTogcmV0dXJu IGdkYl9zeXNfY2xvbmUzOyAgKi8NCj4gKyAgICAvKiBjYXNlIDQzNjogcmV0dXJuIGdkYl9zeXNf Y2xvc2VfcmFuZ2U7ICAqLw0KPiArICAgIC8qIGNhc2UgNDM3OiByZXR1cm4gZ2RiX3N5c19vcGVu YXQyOyAgKi8NCj4gKyAgICAvKiBjYXNlIDQzODogcmV0dXJuIGdkYl9zeXNfcGlkZmRfZ2V0ZmQ7 ICAqLw0KPiArICAgIC8qIGNhc2UgNDM5OiByZXR1cm4gZ2RiX3N5c19mYWNjZXNzYXQyOyAgKi8N Cj4gKyAgICAvKiBjYXNlIDQ0MDogcmV0dXJuIGdkYl9zeXNfcHJvY2Vzc19tYWR2aXNlOyAgKi8N Cj4gKyAgICAvKiBjYXNlIDQ0MTogcmV0dXJuIGdkYl9zeXNfZXBvbGxfcHdhaXQyOyAgKi8NCj4g KyAgICAvKiBjYXNlIDQ0MjogcmV0dXJuIGdkYl9zeXNfbW91bnRfc2V0YXR0cjsgICovDQo+ICsg ICAgLyogY2FzZSA0NDM6IHJldHVybiBnZGJfc3lzX3F1b3RhY3RsX2ZkOyAgKi8NCj4gKyAgICAv KiBjYXNlIDQ0NDogcmV0dXJuIGdkYl9zeXNfbGFuZGxvY2tfY3JlYXRlX3J1bGVzZXQ7ICAqLw0K PiArICAgIC8qIGNhc2UgNDQ1OiByZXR1cm4gZ2RiX3N5c19sYW5kbG9ja19hZGRfcnVsZTsgICov DQo+ICsgICAgLyogY2FzZSA0NDY6IHJldHVybiBnZGJfc3lzX2xhbmRsb2NrX3Jlc3RyaWN0X3Nl bGY7ICAqLw0KPiArICAgIC8qIGNhc2UgNDQ3OiByZXR1cm4gZ2RiX3N5c19tZW1mZF9zZWNyZXQ7 ICAqLw0KPiArICAgIC8qIGNhc2UgNDQ4OiByZXR1cm4gZ2RiX3N5c19wcm9jZXNzX21yZWxlYXNl OyAgKi8NCj4gKyAgICAvKiBjYXNlIDQ0OTogcmV0dXJuIGdkYl9zeXNfZnV0ZXhfd2FpdHY7ICAq Lw0KPiArICAgIC8qIGNhc2UgNDUwOiByZXR1cm4gZ2RiX3N5c19zZXRfbWVtcG9saWN5X2hvbWVf bm9kZTsgICovDQo+ICsgICAgZGVmYXVsdDoNCj4gKyAgICAgIHJldHVybiBnZGJfc3lzX25vX3N5 c2NhbGw7DQo+ICsgICAgfQ0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvZ2RiL3Jpc2N2LWxpbnV4LXRk ZXAuYyBiL2dkYi9yaXNjdi1saW51eC10ZGVwLmMNCj4gaW5kZXggMTJjYWIwNmYyNzYuLmViYWVk OWI0NTA4IDEwMDY0NA0KPiAtLS0gYS9nZGIvcmlzY3YtbGludXgtdGRlcC5jDQo+ICsrKyBiL2dk Yi9yaXNjdi1saW51eC10ZGVwLmMNCj4gQEAgLTE4Nyw5ICsxODcsMTEgQEAgc3RhdGljIGxpbnV4 X3JlY29yZF90ZGVwIHJpc2N2X2xpbnV4X3JlY29yZF90ZGVwOw0KPiAgIHVzaW5nIHJlZ251bV90 eXBlID0gaW50Ow0KPg0KPiAgIHN0YXRpYyBib29sDQo+IC1zYXZlX3JlZ2lzdGVycyAoc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSwgcmVnbnVtX3R5cGUgZmlyLCByZWdudW1fdHlwZSBsYXN0KQ0K PiArc2F2ZV9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHJlZ251bV90eXBl IGZpcnN0LCByZWdudW1fdHlwZSBsYXN0KQ0KPiAgIHsNCj4gLSAgZm9yIChyZWdudW1fdHlwZSBp ID0gZmlyOyBpICE9IGxhc3Q7ICsraSkNCj4gKyAgZ2RiX2Fzc2VydCAocmVnY2FjaGUgIT0gbnVs bHB0cik7DQo+ICsNCj4gKyAgZm9yIChyZWdudW1fdHlwZSBpID0gZmlyc3Q7IGkgIT0gbGFzdDsg KytpKQ0KPiAgICAgICBpZiAocmVjb3JkX2Z1bGxfYXJjaF9saXN0X2FkZF9yZWcgKHJlZ2NhY2hl LCBpKSkNCj4gICAgICAgICByZXR1cm4gZmFsc2U7DQo+ICAgICByZXR1cm4gdHJ1ZTsNCj4gQEAg LTE5OCw2ICsyMDAsOCBAQCBzYXZlX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgcmVnbnVtX3R5cGUgZmlyLCByZWdudW1fdHlwZSBsYXN0KQ0KPiAgIHN0YXRpYyBib29sDQo+ ICAgcmlzY3ZfYWxsX2J1dF9wY19yZWdpc3RlcnNfcmVjb3JkIChzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlKQ0KPiAgIHsNCj4gKyAgZ2RiX2Fzc2VydCAocmVnY2FjaGUgIT0gbnVsbHB0cik7DQo+ ICsNCj4gICAgIGF1dG8gJiZnZGJhcmNoID0gcmVnY2FjaGUtPmFyY2ggKCk7DQo+ICAgICBhdXRv ICYmdGRlcCA9IGdkYmFyY2hfdGRlcDxyaXNjdl9nZGJhcmNoX3RkZXA+IChnZGJhcmNoKTsNCj4g ICAgIGF1dG8gJiZmZWF0dXJlcyA9IHRkZXAtPmlzYV9mZWF0dXJlczsNCj4gQEAgLTIxOSwxMiAr MjIzLDEyIEBAIHN0YXRpYyBpbnQNCj4gICByaXNjdl9saW51eF9zeXNjYWxsX3JlY29yZCAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBzdmNfbnVtYmVyKQ0KPiAgIHsNCj4gKyAgZ2RiX2Fzc2VydCAocmVnY2Fj aGUgIT0gbnVsbHB0cik7DQo+ICsNCj4gICAgIGF1dG8gc3lzY2FsbF9nZGIgPSByaXNjdjY0X2Nh bm9uaWNhbGl6ZV9zeXNjYWxsIChzdmNfbnVtYmVyKTsNCj4NCj4gICAgIGlmIChyZWNvcmRfZGVi dWcgPiAxKQ0KPiAtICAgIHsNCj4gLSAgICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csICJNYWRl IHN5c2NhbGwgJXMuXG4iLCBwbG9uZ2VzdCAoc3ZjX251bWJlcikpOw0KPiAtICAgIH0NCj4gKyAg ICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLCAiTWFkZSBzeXNjYWxsICVzLlxuIiwgcGxvbmdlc3Qg KHN2Y19udW1iZXIpKTsNCj4NCj4gICAgIGlmIChzeXNjYWxsX2dkYiA9PSBnZGJfc3lzX25vX3N5 c2NhbGwpDQo+ICAgICAgIHsNCj4gQEAgLTI1OCw5ICsyNjIsMTEgQEAgcmlzY3ZfbGludXhfc3lz Y2FsbF9yZWNvcmQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsDQo+ICAgLyogVGhlc2UgdmFs dWVzIGFyZSB0aGUgc2l6ZSBvZiB0aGUgdHlwZSB0aGF0IHdpbGwgYmUgdXNlZCBpbiBhIHN5c3Rl bQ0KPiAgICAgICBjYWxsLiAgVGhleSBhcmUgb2J0YWluZWQgZnJvbSBMaW51eCBLZXJuZWwgc291 cmNlLiAgKi8NCj4gICBzdGF0aWMgdm9pZA0KPiAtcmlzY3Y2NF9saW51eF9yZWNvcmRfdGRlcF9p bml0ICgNCj4gLSAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IGxpbnV4X3JlY29y ZF90ZGVwICZyaXNjdl9saW51eF9yZWNvcmRfdGRlcCkNCj4gK3Jpc2N2NjRfbGludXhfcmVjb3Jk X3RkZXBfaW5pdCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsDQo+ICsgICAgICAgICAgc3RydWN0 IGxpbnV4X3JlY29yZF90ZGVwICZyaXNjdl9saW51eF9yZWNvcmRfdGRlcCkNCj4gICB7DQo+ICsg IGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gbnVsbHB0cik7DQo+ICsNCj4gICAgIC8qIEluaXRpYWxp emUgdGhlIHJpc2N2X2xpbnV4X3JlY29yZF90ZGVwLiAgKi8NCj4gICAgIC8qIFRoZXNlIHZhbHVl cyBhcmUgdGhlIHNpemUgb2YgdGhlIHR5cGUgdGhhdCB3aWxsIGJlIHVzZWQgaW4gYSBzeXN0ZW0N Cj4gICAgICAgIGNhbGwuICBUaGV5IGFyZSBvYnRhaW5lZCBmcm9tIExpbnV4IEtlcm5lbCBzb3Vy Y2UuICAqLw0KPiBAQCAtNDI3LDcgKzQzMyw3IEBAIHJpc2N2NjRfbGludXhfcmVjb3JkX3RkZXBf aW5pdCAoDQo+ICAgc3RhdGljIHZvaWQNCj4gICByaXNjdl9saW51eF9pbml0X2FiaSAoc3RydWN0 IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkNCj4gICB7DQo+IC0g IHJpc2N2X2dkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcDxyaXNjdl9nZGJhcmNoX3Rk ZXA+IChnZGJhcmNoKTsNCj4gKyAgYXV0byB0ZGVwID0gZ2RiYXJjaF90ZGVwPHJpc2N2X2dkYmFy Y2hfdGRlcD4gKGdkYmFyY2gpOw0KPg0KPiAgICAgbGludXhfaW5pdF9hYmkgKGluZm8sIGdkYmFy Y2gsIDApOw0KPg0KPiBkaWZmIC0tZ2l0IGEvZ2RiL3Jpc2N2LXRkZXAuYyBiL2dkYi9yaXNjdi10 ZGVwLmMNCj4gaW5kZXggYzZjN2I3YTYzZmQuLjM3ZWMzMGZmZjkxIDEwMDY0NA0KPiAtLS0gYS9n ZGIvcmlzY3YtdGRlcC5jDQo+ICsrKyBiL2dkYi9yaXNjdi10ZGVwLmMNCj4gQEAgLTQ4NDMsNyAr NDg0Myw3IEBAIHRoaXMgb3B0aW9uIGNhbiBiZSB1c2VkLiIpLA0KPiAgIHN0YXRpYyBib29sDQo+ ICAgdHJ5X3JlYWQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdudW0sIFVMT05H RVNUICZhZGRyKQ0KPiAgIHsNCj4gLSAgZ2RiX2Fzc2VydCAocmVnY2FjaGUpOw0KPiArICBnZGJf YXNzZXJ0IChyZWdjYWNoZSAhPSBudWxscHRyKTsNCj4NCj4gICAgIGlmIChyZWdjYWNoZS0+cmF3 X3JlYWQ8VUxPTkdFU1Q+IChyZWdudW0sICZhZGRyKQ0KPiAgICAgICAgICE9IHJlZ2lzdGVyX3N0 YXR1czo6UkVHX1ZBTElEKQ0KPiBAQCAtNDk2NCwxMiArNDk2NCwxMCBAQCBjbGFzcyByaXNjdl9y ZWNvcmRlZF9pbnNuIGZpbmFsDQo+ICAgICByZWFkX3JlZyAoc3RydWN0IHJlZ2NhY2hlICpyZWdj YWNoZSwgcmVnbnVtX3R5cGUgcmVnLA0KPiAgICAgICAgICAgICAgIFVMT05HRVNUICZhZGRyKSBu b2V4Y2VwdA0KPiAgICAgew0KPiAtICAgIGdkYl9hc3NlcnQgKHJlZ2NhY2hlKTsNCj4gKyAgICBn ZGJfYXNzZXJ0IChyZWdjYWNoZSAhPSBudWxscHRyKTsNCj4NCj4gICAgICAgaWYgKCF0cnlfcmVh ZCAocmVnY2FjaGUsIHJlZywgYWRkcikpDQo+IC0gICAgICB7DQo+IC0gICAgICAgIHJldHVybiBz ZXRfZXJyb3IgKCk7DQo+IC0gICAgICB9DQo+ICsgICAgICByZXR1cm4gc2V0X2Vycm9yICgpOw0K PiAgICAgICByZXR1cm4gdHJ1ZTsNCj4gICAgIH0NCj4NCj4gQEAgLTUxNDMsMTQgKzUxNDEsMTQg QEAgY2xhc3MgcmlzY3ZfcmVjb3JkZWRfaW5zbiBmaW5hbA0KPiAgICAgYm9vbA0KPiAgICAgdHJ5 X3NhdmVfcGNfbWVtIChVTE9OR0VTVCBpdmFsLCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKSBu b2V4Y2VwdA0KPiAgICAgew0KPiAtICAgIGdkYl9hc3NlcnQgKHJlZ2NhY2hlKTsNCj4gKyAgICBn ZGJfYXNzZXJ0IChyZWdjYWNoZSAhPSBudWxscHRyKTsNCj4NCj4gLSAgICBtZW1fYWRkciBhZGRy ID0gMDsNCj4gKyAgICBhdXRvIGFkZHIgPSBtZW1fYWRkcnt9Ow0KPiAgICAgICBhdXRvIGxlbiA9 IG5lZWRfc2F2ZV9wY19tZW0gKGl2YWwpOw0KPiAgICAgICBpZiAobGVuIDw9IDApDQo+ICAgICAg ICAgcmV0dXJuIGZhbHNlOw0KPg0KPiAtICAgIG1lbV9sZW4gb2Zmc2V0ID0gRVhUUkFDVF9TVFlQ RV9JTU0gKGl2YWwpOw0KPiArICAgIGF1dG8gb2Zmc2V0ID0gbWVtX2xlbntFWFRSQUNUX1NUWVBF X0lNTSAoaXZhbCl9Ow0KPiAgICAgICByZXR1cm4gIXJlYWRfcmVnIChyZWdjYWNoZSwgZGVjb2Rl X3JzMSAoaXZhbCksIGFkZHIpDQo+ICAgICAgICAgICAgICB8fCAhc2F2ZV9tZW0gKGFkZHIgKyBv ZmZzZXQsIGxlbikgfHwgc2V0X29yZGluYXJ5X3JlY29yZF90eXBlICgpOw0KPiAgICAgfQ0KPiBA QCAtNTE3OCwxMCArNTE3NiwxMCBAQCBjbGFzcyByaXNjdl9yZWNvcmRlZF9pbnNuIGZpbmFsDQo+ ICAgICBib29sDQo+ICAgICB0cnlfc2F2ZV9wY19yZF9tZW0gKFVMT05HRVNUIGl2YWwsIHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUpIG5vZXhjZXB0DQo+ICAgICB7DQo+IC0gICAgZ2RiX2Fzc2Vy dCAocmVnY2FjaGUpOw0KPiArICAgIGdkYl9hc3NlcnQgKHJlZ2NhY2hlICE9IG51bGxwdHIpOw0K Pg0KPiAgICAgICBhdXRvIGxlbiA9IG5lZWRfc2F2ZV9wY19yZF9tZW0gKGl2YWwpOw0KPiAtICAg IG1lbV9hZGRyIGFkZHIgPSAwOw0KPiArICAgIGF1dG8gYWRkciA9IG1lbV9hZGRye307DQo+ICAg ICAgIGlmIChsZW4gPD0gMCkNCj4gICAgICAgICByZXR1cm4gZmFsc2U7DQo+DQo+IEBAIC01MjA1 LDkgKzUyMDMsOSBAQCBjbGFzcyByaXNjdl9yZWNvcmRlZF9pbnNuIGZpbmFsDQo+ICAgICBib29s DQo+ICAgICB0cnlfc2F2ZV9wY19yczJfcmRfbWVtIChVTE9OR0VTVCBpdmFsLCBzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlKSBub2V4Y2VwdA0KPiAgICAgew0KPiAtICAgIGdkYl9hc3NlcnQgKHJl Z2NhY2hlKTsNCj4gKyAgICBnZGJfYXNzZXJ0IChyZWdjYWNoZSAhPSBudWxscHRyKTsNCj4NCj4g LSAgICBtZW1fYWRkciBhZGRyID0gMDsNCj4gKyAgICBhdXRvIGFkZHIgPSBtZW1fYWRkcnt9Ow0K PiAgICAgICBhdXRvIGxlbiA9IG5lZWRfc2F2ZV9wY19yczJfcmRfbWVtIChpdmFsKTsNCj4gICAg ICAgaWYgKGxlbiA8PSAwKQ0KPiAgICAgICAgIHJldHVybiBmYWxzZTsNCj4gQEAgLTUyMjIsNyAr NTIyMCw3IEBAIGNsYXNzIHJpc2N2X3JlY29yZGVkX2luc24gZmluYWwNCj4gICAgIGJvb2wNCj4g ICAgIHJlY29yZF9pbnNuX2xlbjQgKFVMT05HRVNUIGl2YWwsIHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUpIG5vZXhjZXB0DQo+ICAgICB7DQo+IC0gICAgZ2RiX2Fzc2VydCAocmVnY2FjaGUpOw0K PiArICAgIGdkYl9hc3NlcnQgKHJlZ2NhY2hlICE9IG51bGxwdHIpOw0KPg0KPiAgICAgICBpZiAo aXNfZWNhbGxfaW5zbiAoaXZhbCkpDQo+ICAgICAgICAgew0KPiBAQCAtNTI0MCw5ICs1MjM4LDcg QEAgY2xhc3MgcmlzY3ZfcmVjb3JkZWRfaW5zbiBmaW5hbA0KPiAgICAgICAgICAgfHwgdHJ5X3Nh dmVfcGNfcmRfY3NyIChpdmFsKSB8fCB0cnlfc2F2ZV9wY19tZW0gKGl2YWwsIHJlZ2NhY2hlKQ0K PiAgICAgICAgICAgfHwgdHJ5X3NhdmVfcGNfcmRfbWVtIChpdmFsLCByZWdjYWNoZSkNCj4gICAg ICAgICAgIHx8IHRyeV9zYXZlX3BjX3JzMl9yZF9tZW0gKGl2YWwsIHJlZ2NhY2hlKSkNCj4gLSAg ICAgIHsNCj4gLSAgICAgICAgcmV0dXJuICFoYXNfZXJyb3IgKCk7DQo+IC0gICAgICB9DQo+ICsg ICAgICByZXR1cm4gIWhhc19lcnJvciAoKTsNCj4NCj4gICAgICAgd2FybmluZyAoXyAoIkN1cnJl bnRseSB0aGlzIGluc3RydWN0aW9uIHdpdGggbGVuIDQoJWx4KSBpcyB1bnN1cHBvcnRlZCIpLA0K PiAgICAgICAgICAgICAgICBpdmFsKTsNCj4gQEAgLTUyNTUsMTAgKzUyNTEsMTAgQEAgY2xhc3Mg cmlzY3ZfcmVjb3JkZWRfaW5zbiBmaW5hbA0KPiAgICAgcmVjb3JkX2luc25fbGVuMiAoVUxPTkdF U1QgaXZhbCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwNCj4gICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKSBub2V4Y2VwdA0KPiAgICAgew0KPiAtICAgIGdk Yl9hc3NlcnQgKHJlZ2NhY2hlKTsNCj4gLSAgICBnZGJfYXNzZXJ0IChnZGJhcmNoKTsNCj4gKyAg ICBnZGJfYXNzZXJ0IChyZWdjYWNoZSAhPSBudWxscHRyKTsNCj4gKyAgICBnZGJfYXNzZXJ0IChn ZGJhcmNoICE9IG51bGxwdHIpOw0KPg0KPiAtICAgIG1lbV9hZGRyIGFkZHIgPSAwOw0KPiArICAg IGF1dG8gYWRkciA9IG1lbV9hZGRye307DQo+ICAgICAgIGF1dG8geGxlbiA9IHJpc2N2X2lzYV94 bGVuIChnZGJhcmNoKTsNCj4NCj4gICAgICAgLyogVGhlIG9yZGVyIGhlcmUgaXMgdmVyeSBpbXBv cnRhbnQsIGJlY2F1c2UNCj4gQEAgLTUyNjYsMTAwICs1MjYyLDcwIEBAIGNsYXNzIHJpc2N2X3Jl Y29yZGVkX2luc24gZmluYWwNCj4NCj4gICAgICAgaWYgKGlzX2NfYWRkaTRzcG5faW5zbiAoaXZh bCkgfHwgaXNfY19sd19pbnNuIChpdmFsKQ0KPiAgICAgICAgICAgfHwgKHhsZW4gPT0gOCAmJiBp c19jX2xkX2luc24gKGl2YWwpKSkNCj4gLSAgICAgIHsNCj4gLSAgICAgICAgcmV0dXJuICFzYXZl X3JlZyAoZGVjb2RlX2NyczJfc2hvcnQgKGl2YWwpKQ0KPiAtICAgICAgICAgICAgICAgfHwgc2V0 X29yZGluYXJ5X3JlY29yZF90eXBlICgpOw0KPiAtICAgICAgfQ0KPiArICAgICAgcmV0dXJuICFz YXZlX3JlZyAoZGVjb2RlX2NyczJfc2hvcnQgKGl2YWwpKQ0KPiArICAgICAgICAgICAgICB8fCBz ZXRfb3JkaW5hcnlfcmVjb3JkX3R5cGUgKCk7DQo+DQo+ICAgICAgIGlmIChpc19jX2ZsZF9pbnNu IChpdmFsKSB8fCAoeGxlbiA9PSA0ICYmIGlzX2NfZmx3X2luc24gKGl2YWwpKSkNCj4gLSAgICAg IHsNCj4gLSAgICAgICAgcmV0dXJuICFzYXZlX3JlZyAoUklTQ1ZfRklSU1RfRlBfUkVHTlVNICsg ZGVjb2RlX2NyczJfc2hvcnQgKGl2YWwpKQ0KPiAtICAgICAgICAgICAgICAgfHwgc2V0X29yZGlu YXJ5X3JlY29yZF90eXBlICgpOw0KPiAtICAgICAgfQ0KPiArICAgICAgcmV0dXJuICFzYXZlX3Jl ZyAoUklTQ1ZfRklSU1RfRlBfUkVHTlVNICsgZGVjb2RlX2NyczJfc2hvcnQgKGl2YWwpKQ0KPiAr ICAgICAgICAgICAgICB8fCBzZXRfb3JkaW5hcnlfcmVjb3JkX3R5cGUgKCk7DQo+DQo+ICAgICAg IGlmIChpc19jX2ZzZF9pbnNuIChpdmFsKSB8fCAoeGxlbiA9PSA4ICYmIGlzX2Nfc2RfaW5zbiAo aXZhbCkpKQ0KPiAgICAgICAgIHsNCj4gLSAgICAgICAgaW50IG9mZnNldCA9IEVYVFJBQ1RfQ0xU WVBFX0xEX0lNTSAoaXZhbCk7DQo+ICsgICAgICAgIGF1dG8gb2Zmc2V0ID0gaW50e0VYVFJBQ1Rf Q0xUWVBFX0xEX0lNTSAoaXZhbCl9Ow0KPiAgICAgICAgICAgcmV0dXJuICFyZWFkX3JlZyAocmVn Y2FjaGUsIGRlY29kZV9jcnMxX3Nob3J0IChpdmFsKSwgYWRkcikNCj4gICAgICAgICAgICAgICAg ICB8fCAhc2F2ZV9tZW0gKGFkZHIgKyBvZmZzZXQsIDgpIHx8IHNldF9vcmRpbmFyeV9yZWNvcmRf dHlwZSAoKTsNCj4gICAgICAgICB9DQo+DQo+ICAgICAgIGlmICgoeGxlbiA9PSA0ICYmIGlzX2Nf ZnN3X2luc24gKGl2YWwpKSB8fCBpc19jX3N3X2luc24gKGl2YWwpKQ0KPiAgICAgICAgIHsNCj4g LSAgICAgICAgaW50IG9mZnNldCA9IEVYVFJBQ1RfQ0xUWVBFX0xXX0lNTSAoaXZhbCk7DQo+ICsg ICAgICAgIGF1dG8gb2Zmc2V0ID0gaW50e0VYVFJBQ1RfQ0xUWVBFX0xXX0lNTSAoaXZhbCl9Ow0K PiAgICAgICAgICAgcmV0dXJuICFyZWFkX3JlZyAocmVnY2FjaGUsIGRlY29kZV9jcnMxX3Nob3J0 IChpdmFsKSwgYWRkcikNCj4gICAgICAgICAgICAgICAgICB8fCAhc2F2ZV9tZW0gKGFkZHIgKyBv ZmZzZXQsIDQpIHx8IHNldF9vcmRpbmFyeV9yZWNvcmRfdHlwZSAoKTsNCj4gICAgICAgICB9DQo+ DQo+ICAgICAgIGlmIChpc19jX25vcF9pbnNuIChpdmFsKSkNCj4gLSAgICAgIHsNCj4gLSAgICAg ICAgcmV0dXJuIHNldF9vcmRpbmFyeV9yZWNvcmRfdHlwZSAoKTsNCj4gLSAgICAgIH0NCj4gKyAg ICAgIHJldHVybiBzZXRfb3JkaW5hcnlfcmVjb3JkX3R5cGUgKCk7DQo+DQo+ICAgICAgIGlmIChp c19jX2FkZGlfaW5zbiAoaXZhbCkpDQo+IC0gICAgICB7DQo+IC0gICAgICAgIHJldHVybiAhc2F2 ZV9yZWcgKGRlY29kZV9jcnMxIChpdmFsKSkgfHwgc2V0X29yZGluYXJ5X3JlY29yZF90eXBlICgp Ow0KPiAtICAgICAgfQ0KPiArICAgICAgcmV0dXJuICFzYXZlX3JlZyAoZGVjb2RlX2NyczEgKGl2 YWwpKSB8fCBzZXRfb3JkaW5hcnlfcmVjb3JkX3R5cGUgKCk7DQo+DQo+ICAgICAgIGlmICh4bGVu ID09IDQgJiYgaXNfY19qYWxfaW5zbiAoaXZhbCkpDQo+IC0gICAgICB7DQo+IC0gICAgICAgIHJl dHVybiAhc2F2ZV9yZWcgKFJJU0NWX1JBX1JFR05VTSkgfHwgc2V0X29yZGluYXJ5X3JlY29yZF90 eXBlICgpOw0KPiAtICAgICAgfQ0KPiArICAgICAgcmV0dXJuICFzYXZlX3JlZyAoUklTQ1ZfUkFf UkVHTlVNKSB8fCBzZXRfb3JkaW5hcnlfcmVjb3JkX3R5cGUgKCk7DQo+DQo+ICAgICAgIGlmICgo eGxlbiA9PSA4ICYmIGlzX2NfYWRkaXdfaW5zbiAoaXZhbCkpIHx8IGlzX2NfbGlfaW5zbiAoaXZh bCkpDQo+IC0gICAgICB7DQo+IC0gICAgICAgIHJldHVybiAhc2F2ZV9yZWcgKGRlY29kZV9jcnMx IChpdmFsKSkgfHwgc2V0X29yZGluYXJ5X3JlY29yZF90eXBlICgpOw0KPiAtICAgICAgfQ0KPiAr ICAgICAgcmV0dXJuICFzYXZlX3JlZyAoZGVjb2RlX2NyczEgKGl2YWwpKSB8fCBzZXRfb3JkaW5h cnlfcmVjb3JkX3R5cGUgKCk7DQo+DQo+ICAgICAgIGlmIChpc19jX2FkZGkxNnNwX2luc24gKGl2 YWwpKQ0KPiAtICAgICAgew0KPiAtICAgICAgICByZXR1cm4gIXNhdmVfcmVnIChSSVNDVl9TUF9S RUdOVU0pIHx8IHNldF9vcmRpbmFyeV9yZWNvcmRfdHlwZSAoKTsNCj4gLSAgICAgIH0NCj4gKyAg ICAgIHJldHVybiAhc2F2ZV9yZWcgKFJJU0NWX1NQX1JFR05VTSkgfHwgc2V0X29yZGluYXJ5X3Jl Y29yZF90eXBlICgpOw0KPg0KPiAgICAgICBpZiAoaXNfY19sdWlfaW5zbiAoaXZhbCkpDQo+IC0g ICAgICB7DQo+IC0gICAgICAgIHJldHVybiAhc2F2ZV9yZWcgKGRlY29kZV9jcnMxIChpdmFsKSkg fHwgc2V0X29yZGluYXJ5X3JlY29yZF90eXBlICgpOw0KPiAtICAgICAgfQ0KPiArICAgICAgcmV0 dXJuICFzYXZlX3JlZyAoZGVjb2RlX2NyczEgKGl2YWwpKSB8fCBzZXRfb3JkaW5hcnlfcmVjb3Jk X3R5cGUgKCk7DQo+DQo+ICAgICAgIGlmIChpc19jX3NybGlfaW5zbiAoaXZhbCkgfHwgaXNfY19z cmFpX2luc24gKGl2YWwpIHx8IGlzX2NfYW5kaV9pbnNuIChpdmFsKQ0KPiAgICAgICAgICAgfHwg aXNfY19zdWJfaW5zbiAoaXZhbCkgfHwgaXNfY194b3JfaW5zbiAoaXZhbCkgfHwgaXNfY19vcl9p bnNuIChpdmFsKQ0KPiAgICAgICAgICAgfHwgaXNfY19hbmRfaW5zbiAoaXZhbCkgfHwgKHhsZW4g PT0gOCAmJiBpc19jX3N1YndfaW5zbiAoaXZhbCkpDQo+ICAgICAgICAgICB8fCAoeGxlbiA9PSA4 ICYmIGlzX2NfYWRkd19pbnNuIChpdmFsKSkpDQo+IC0gICAgICB7DQo+IC0gICAgICAgIHJldHVy biAhc2F2ZV9yZWcgKGRlY29kZV9jcnMxX3Nob3J0IChpdmFsKSkNCj4gLSAgICAgICAgICAgICAg IHx8IHNldF9vcmRpbmFyeV9yZWNvcmRfdHlwZSAoKTsNCj4gLSAgICAgIH0NCj4gKyAgICAgIHJl dHVybiAhc2F2ZV9yZWcgKGRlY29kZV9jcnMxX3Nob3J0IChpdmFsKSkNCj4gKyAgICAgICAgICAg ICAgfHwgc2V0X29yZGluYXJ5X3JlY29yZF90eXBlICgpOw0KPg0KPiAgICAgICBpZiAoaXNfY19q X2luc24gKGl2YWwpIHx8IGlzX2NfYmVxel9pbnNuIChpdmFsKSB8fCBpc19jX2JuZXpfaW5zbiAo aXZhbCkpDQo+IC0gICAgICB7DQo+IC0gICAgICAgIHJldHVybiBzZXRfb3JkaW5hcnlfcmVjb3Jk X3R5cGUgKCk7DQo+IC0gICAgICB9DQo+ICsgICAgICByZXR1cm4gc2V0X29yZGluYXJ5X3JlY29y ZF90eXBlICgpOw0KPg0KPiAgICAgICBpZiAoaXNfY19zbGxpX2luc24gKGl2YWwpKQ0KPiAtICAg ICAgew0KPiAtICAgICAgICByZXR1cm4gIXNhdmVfcmVnIChkZWNvZGVfY3JzMSAoaXZhbCkpIHx8 IHNldF9vcmRpbmFyeV9yZWNvcmRfdHlwZSAoKTsNCj4gLSAgICAgIH0NCj4gKyAgICAgIHJldHVy biAhc2F2ZV9yZWcgKGRlY29kZV9jcnMxIChpdmFsKSkgfHwgc2V0X29yZGluYXJ5X3JlY29yZF90 eXBlICgpOw0KPg0KPiAgICAgICBpZiAoaXNfY19mbGRzcF9pbnNuIChpdmFsKSB8fCAoeGxlbiA9 PSA0ICYmIGlzX2NfZmx3c3BfaW5zbiAoaXZhbCkpKQ0KPiAtICAgICAgew0KPiAtICAgICAgICBy ZXR1cm4gIXNhdmVfcmVnIChSSVNDVl9GSVJTVF9GUF9SRUdOVU0gKyBkZWNvZGVfY3JzMSAoaXZh bCkpDQo+IC0gICAgICAgICAgICAgICB8fCBzZXRfb3JkaW5hcnlfcmVjb3JkX3R5cGUgKCk7DQo+ IC0gICAgICB9DQo+ICsgICAgICByZXR1cm4gIXNhdmVfcmVnIChSSVNDVl9GSVJTVF9GUF9SRUdO VU0gKyBkZWNvZGVfY3JzMSAoaXZhbCkpDQo+ICsgICAgICAgICAgICAgIHx8IHNldF9vcmRpbmFy eV9yZWNvcmRfdHlwZSAoKTsNCj4NCj4gICAgICAgaWYgKGlzX2NfbHdzcF9pbnNuIChpdmFsKSB8 fCAoeGxlbiA9PSA4ICYmIGlzX2NfbGRzcF9pbnNuIChpdmFsKSkpDQo+IC0gICAgICB7DQo+IC0g ICAgICAgIHJldHVybiAhc2F2ZV9yZWcgKGRlY29kZV9jcnMxIChpdmFsKSkgfHwgc2V0X29yZGlu YXJ5X3JlY29yZF90eXBlICgpOw0KPiAtICAgICAgfQ0KPiArICAgICAgcmV0dXJuICFzYXZlX3Jl ZyAoZGVjb2RlX2NyczEgKGl2YWwpKSB8fCBzZXRfb3JkaW5hcnlfcmVjb3JkX3R5cGUgKCk7DQo+ DQo+ICAgICAgIGlmIChpc19jX2pyX2luc24gKGl2YWwpKQ0KPiAtICAgICAgew0KPiAtICAgICAg ICByZXR1cm4gc2V0X29yZGluYXJ5X3JlY29yZF90eXBlICgpOw0KPiAtICAgICAgfQ0KPiArICAg ICAgcmV0dXJuIHNldF9vcmRpbmFyeV9yZWNvcmRfdHlwZSAoKTsNCj4NCj4gICAgICAgaWYgKGlz X2NfbXZfaW5zbiAoaXZhbCkpDQo+IC0gICAgICB7DQo+IC0gICAgICAgIHJldHVybiAhc2F2ZV9y ZWcgKGRlY29kZV9jcnMxIChpdmFsKSkgfHwgc2V0X29yZGluYXJ5X3JlY29yZF90eXBlICgpOw0K PiAtICAgICAgfQ0KPiArICAgICAgcmV0dXJuICFzYXZlX3JlZyAoZGVjb2RlX2NyczEgKGl2YWwp KSB8fCBzZXRfb3JkaW5hcnlfcmVjb3JkX3R5cGUgKCk7DQo+DQo+ICAgICAgIGlmIChpc19jX2Vi cmVha19pbnNuIChpdmFsKSkNCj4gICAgICAgICB7DQo+IEBAIC01MzY4LDI1ICs1MzM0LDIxIEBA IGNsYXNzIHJpc2N2X3JlY29yZGVkX2luc24gZmluYWwNCj4gICAgICAgICB9DQo+DQo+ICAgICAg IGlmIChpc19jX2phbHJfaW5zbiAoaXZhbCkpDQo+IC0gICAgICB7DQo+IC0gICAgICAgIHJldHVy biAhc2F2ZV9yZWcgKFJJU0NWX1JBX1JFR05VTSkgfHwgc2V0X29yZGluYXJ5X3JlY29yZF90eXBl ICgpOw0KPiAtICAgICAgfQ0KPiArICAgICAgcmV0dXJuICFzYXZlX3JlZyAoUklTQ1ZfUkFfUkVH TlVNKSB8fCBzZXRfb3JkaW5hcnlfcmVjb3JkX3R5cGUgKCk7DQo+DQo+ICAgICAgIGlmIChpc19j X2FkZF9pbnNuIChpdmFsKSkNCj4gLSAgICAgIHsNCj4gLSAgICAgICAgcmV0dXJuICFzYXZlX3Jl ZyAoZGVjb2RlX2NyczEgKGl2YWwpKSB8fCBzZXRfb3JkaW5hcnlfcmVjb3JkX3R5cGUgKCk7DQo+ IC0gICAgICB9DQo+ICsgICAgICByZXR1cm4gIXNhdmVfcmVnIChkZWNvZGVfY3JzMSAoaXZhbCkp IHx8IHNldF9vcmRpbmFyeV9yZWNvcmRfdHlwZSAoKTsNCj4NCj4gICAgICAgaWYgKGlzX2NfZnNk c3BfaW5zbiAoaXZhbCkgfHwgKHhsZW4gPT0gOCAmJiBpc19jX3Nkc3BfaW5zbiAoaXZhbCkpKQ0K PiAgICAgICAgIHsNCj4gLSAgICAgICAgaW50IG9mZnNldCA9IEVYVFJBQ1RfQ1NTVFlQRV9TRFNQ X0lNTSAoaXZhbCk7DQo+ICsgICAgICAgIGF1dG8gb2Zmc2V0ID0gaW50e0VYVFJBQ1RfQ1NTVFlQ RV9TRFNQX0lNTSAoaXZhbCl9Ow0KPiAgICAgICAgICAgcmV0dXJuICFyZWFkX3JlZyAocmVnY2Fj aGUsIFJJU0NWX1NQX1JFR05VTSwgYWRkcikNCj4gICAgICAgICAgICAgICAgICB8fCAhc2F2ZV9t ZW0gKGFkZHIgKyBvZmZzZXQsIDgpIHx8IHNldF9vcmRpbmFyeV9yZWNvcmRfdHlwZSAoKTsNCj4g ICAgICAgICB9DQo+DQo+ICAgICAgIGlmIChpc19jX3N3c3BfaW5zbiAoaXZhbCkgfHwgKHhsZW4g PT0gNCAmJiBpc19jX2Zzd3NwX2luc24gKGl2YWwpKSkNCj4gICAgICAgICB7DQo+IC0gICAgICAg IGludCBvZmZzZXQgPSBFWFRSQUNUX0NTU1RZUEVfU1dTUF9JTU0gKGl2YWwpOw0KPiArICAgICAg ICBhdXRvIG9mZnNldCA9IGludHtFWFRSQUNUX0NTU1RZUEVfU1dTUF9JTU0gKGl2YWwpfTsNCj4g ICAgICAgICAgIHJldHVybiAhcmVhZF9yZWcgKHJlZ2NhY2hlLCBSSVNDVl9TUF9SRUdOVU0sIGFk ZHIpDQo+ICAgICAgICAgICAgICAgICAgfHwgIXNhdmVfbWVtIChhZGRyICsgb2Zmc2V0LCA0KSB8 fCBzZXRfb3JkaW5hcnlfcmVjb3JkX3R5cGUgKCk7DQo+ICAgICAgICAgfQ0KPiBAQCAtNTQwMyw3 ICs1MzY1LDEwIEBAIGNsYXNzIHJpc2N2X3JlY29yZGVkX2luc24gZmluYWwNCj4gICAgIGJvb2wN Cj4gICAgIHJlY29yZCAoZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgQ09SRV9BRERSIGFkZHIpIG5vZXhjZXB0DQo+ICAgICB7DQo+IC0gICAgaW50IG1fbGVuZ3Ro ID0gMDsNCj4gKyAgICBnZGJfYXNzZXJ0IChnZGJhcmNoICE9IG51bGxwdHIpOw0KPiArICAgIGdk Yl9hc3NlcnQgKHJlZ2NhY2hlICE9IG51bGxwdHIpOw0KPiArDQo+ICsgICAgYXV0byBtX2xlbmd0 aCA9IGludHt9Ow0KPiAgICAgICBhdXRvIGl2YWwgPSByaXNjdl9pbnNuOjpmZXRjaF9pbnN0cnVj dGlvbiAoZ2RiYXJjaCwgYWRkciwgJm1fbGVuZ3RoKTsNCj4gICAgICAgaWYgKCFzYXZlX3JlZyAo UklTQ1ZfUENfUkVHTlVNKSkNCj4gICAgICAgICByZXR1cm4gZmFsc2U7DQo+IEBAIC01NDU4LDkg KzU0MjMsMTAgQEAgc3RhdGljIGludA0KPiAgIHJpc2N2X21ha2VfcmVjb3JkX3Byb2Nlc3MgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLA0KPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJpc2N2X3JlY29yZGVkX2luc24gJmluc24p DQo+ICAgew0KPiAtICBnZGJfYXNzZXJ0IChnZGJhcmNoICYmIHJlZ2NhY2hlKTsNCj4gKyAgZ2Ri X2Fzc2VydCAoZ2RiYXJjaCAhPSBudWxscHRyKTsNCj4gKyAgZ2RiX2Fzc2VydCAocmVnY2FjaGUg IT0gbnVsbHB0cik7DQo+DQo+IC0gIHJpc2N2X2dkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hf dGRlcDxyaXNjdl9nZGJhcmNoX3RkZXA+IChnZGJhcmNoKTsNCj4gKyAgYXV0byB0ZGVwID0gZ2Ri YXJjaF90ZGVwPHJpc2N2X2dkYmFyY2hfdGRlcD4gKGdkYmFyY2gpOw0KPiAgICAgYXV0byByZWdz X2JlZ2luID0gaW5zbi5yZWdzX2JlZ2luICgpOw0KPiAgICAgYXV0byByZWdzX2VuZCA9IGluc24u cmVnc19lbmQgKCk7DQo+ICAgICBpZiAoc3RkOjphbnlfb2YgKHJlZ3NfYmVnaW4sIHJlZ3NfZW5k LCBbJnJlZ2NhY2hlXSAoYXV0byAmJnJlZ19pdCkgew0KPiBAQCAtNTQ4NywxMSArNTQ1Myw5IEBA IHJpc2N2X21ha2VfcmVjb3JkX3Byb2Nlc3MgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLA0KPiAgICAgICAgICAgICAgIHdhcm5pbmcgKF8gKCJTeXNj YWxsIHJlY29yZCBpcyBub3Qgc3VwcG9ydGVkIikpOw0KPiAgICAgICAgICAgICAgIHJldHVybiAt MTsNCj4gICAgICAgICAgICAgfQ0KPiAtICAgICAgICBVTE9OR0VTVCByZWdfdmFsID0gMDsNCj4g KyAgICAgICAgYXV0byByZWdfdmFsID0gVUxPTkdFU1R7fTsNCj4gICAgICAgICAgIGlmICghdHJ5 X3JlYWQgKHJlZ2NhY2hlLCBSSVNDVl9BN19SRUdOVU0sIHJlZ192YWwpKQ0KPiAtICAgICAgICAg IHsNCj4gLSAgICAgICAgICAgIHJldHVybiAtMTsNCj4gLSAgICAgICAgICB9DQo+ICsgICAgICAg ICAgcmV0dXJuIC0xOw0KPiAgICAgICAgICAgcmV0dXJuIHRkZXAtPnJpc2N2X3N5c2NhbGxfcmVj b3JkIChyZWdjYWNoZSwgcmVnX3ZhbCk7DQo+ICAgICAgICAgfQ0KPg0KPiBAQCAtNTUwOCw3ICs1 NDcyLDggQEAgaW50DQo+ICAgcmlzY3ZfcHJvY2Vzc19yZWNvcmQgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLA0KPiAgICAgICAgICAgICAgICAgICAg ICAgICBDT1JFX0FERFIgYWRkcikNCj4gICB7DQo+IC0gIGdkYl9hc3NlcnQgKGdkYmFyY2ggJiYg cmVnY2FjaGUpOw0KPiArICBnZGJfYXNzZXJ0IChnZGJhcmNoICE9IG51bGxwdHIpOw0KPiArICBn ZGJfYXNzZXJ0IChyZWdjYWNoZSAhPSBudWxscHRyKTsNCj4NCj4gICAgIHJpc2N2X3JlY29yZGVk X2luc24gaW5zbjsNCj4gICAgIGlmICghaW5zbi5yZWNvcmQgKGdkYmFyY2gsIHJlZ2NhY2hlLCBh ZGRyKSkNCj4gQEAgLTU1MjAsOSArNTQ4NSw3IEBAIHJpc2N2X3Byb2Nlc3NfcmVjb3JkIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwNCj4gICAgIGF1 dG8gcmV0X3ZhbCA9IHJpc2N2X21ha2VfcmVjb3JkX3Byb2Nlc3MgKGdkYmFyY2gsIHJlZ2NhY2hl LCBpbnNuKTsNCj4NCj4gICAgIGlmIChyZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkX2VuZCAoKSkN Cj4gLSAgICB7DQo+IC0gICAgICByZXR1cm4gLTE7DQo+IC0gICAgfQ0KPiArICAgIHJldHVybiAt MTsNCj4NCj4gICAgIHJldHVybiByZXRfdmFsOw0KPiAgIH0NCj4gLS0NCj4gMi4zNC4xDQo+DQo=