Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pjX74-0001P8-53 for pgsql-hackers@arkaria.postgresql.org; Tue, 04 Apr 2023 03:13:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pjX73-0007Ol-0p for pgsql-hackers@arkaria.postgresql.org; Tue, 04 Apr 2023 03:13:37 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pjX71-0007OP-8c for pgsql-hackers@lists.postgresql.org; Tue, 04 Apr 2023 03:13:36 +0000 Received: from esa17.fujitsucc.c3s2.iphmx.com ([216.71.158.34]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pjX6q-0002w7-KW for pgsql-hackers@lists.postgresql.org; Tue, 04 Apr 2023 03:13:34 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1680578005; x=1712114005; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=06iDHX14AiG9XnWmdq2Mpxl26lhbNHbokNQyVphi3+U=; b=N/hOcMjpgEty3adgQaUkxhWTkrkWVcBEaW8HZUKTY5wLh4XOJSqw2Ied 4l5MCq49oiVrhkmzekzzz3SUXoDEXmw09WJ4DON128k5KU0+mMG1B+55W /HknSe7cL4A4CYmfhvYaPt/lkURwpgpdhV3ber58WKh4fN+sAvhR6CmI7 CFONVOku5cKNUbNM0TeiDQuDny6iJsa+FUtwtWYJkS5zsHU/xor1Dacyy wB4A5eEZI6U83kSXvTcp7sZozprFgvLXhw57A0mYNY84gKjQuv+fhX28c 1d3E23YpKkf2HQH4PjaXumnmfC5MJQ4l1KLLpX2y0XM5jxcrSUDgwjrsr A==; X-IronPort-AV: E=McAfee;i="6600,9927,10669"; a="80903155" X-IronPort-AV: E=Sophos;i="5.98,316,1673881200"; d="scan'208,223";a="80903155" Received: from mail-os0jpn01lp2110.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.110]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Apr 2023 12:13:16 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=akjQZd7ay29dcz57rf1VRSfoQxTUbO0yOt9X8DBcOrwMHnyug4uUzSNGbgErnyuGRF7IMzThu5bYtR4moQIhNHK3YziLWgG46/Ajyo3ZvMo+W0B6yOOEfxd0KlaMvJ+v0cODvNFtGrgKUGoYjp2MT8Udw2OZjLDpJWVMPX6/K8gzBtgcnEq2B8nYe2XX7rSKaF49i1aOikxfqXCJ2ztO+k5TN/yZsExrydnAZbbwLRfY5wMMqHUP4GhvgKoVqDf+Q76am02iTU3YfdQkpRMfP9ubvysK1cco9ofp41KQlk0P8BCnjY6WVbAS6cXYwHk+MzvRD/91wlOnn8/dkJ823A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=hs1D7afEdhEGmCxqhTgQ3xHzsL/HCmrgMDlE9nldf+I=; b=CJjVDWeOdFjrMDB9eKEEd2TfOp6aCYdE+ozkUiY2dycB1P99dnnkKn9Og9pgDEQcmTMf5MgRTN05yWAtQcvSTPf1pLgLcji66oMZtVJLGcQycsR5KHRdCRP+Ye0vLkMeLeBc/g194BllazNwpOT00oojsNgJaCtlfclv8aNk8vKPvmRuxoJw0PXNtqRx7GxPjhXiBqpNaWIxsuKyDq9iurHS650Bdhmzzvxvh+IACBTmvWRsj5YuT4lCyAqw5lJHZuR3+1AoV8aiQj1HMsvfDGMtylGb6IdsTwkvjyBBq+MbsbDoit2fZVpdgM/kG9ajteqsfJwsvROLGVB5ZE4mKg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by TYWPR01MB11287.jpnprd01.prod.outlook.com (2603:1096:400:3f5::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.35; Tue, 4 Apr 2023 03:13:10 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::4110:d425:fa9b:cfe8]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::4110:d425:fa9b:cfe8%5]) with mapi id 15.20.6254.035; Tue, 4 Apr 2023 03:13:09 +0000 From: "houzj.fnst@fujitsu.com" To: vignesh C CC: Amit Kapila , Ajin Cherian , "wangw.fnst@fujitsu.com" , Runqi Tian , Peter Smith , Tom Lane , li jie , Dilip Kumar , Alvaro Herrera , Masahiko Sawada , Japin Li , rajesh singarapu , PostgreSQL Hackers , Zheng Li Subject: RE: Support logical replication of DDLs Thread-Topic: Support logical replication of DDLs Thread-Index: AQHYJz33AxvYRe/sGky7b41i8Vgxg6y9TlgAgAVZmgCAAA2xAIABMlkAgACE3QCAAKgDAIAAduOAgABm6oCABIs+AIACG98AgBfo2QCABsLLgIAyhVqAgBOd9QCAAOYWgIAAPoOAgAUH2oCABQvawIAPYMWAgAHJ99CAAn9yAIAAPzmAgAQqm4CAA6XiQIACJNSQgAsCywCAAPmNAIAAalXwgAAWjQCACT8UwIAEWbkAgAam+gCADNiE8IAMBWyAgAZSRYCAAW8VgIAE96WAgA0v9QCABHneQIAUEVWAgAuHbACAD5tTgIAIApwAgAGzQoCAB27XgIAGHO6AgAoC5QCAAAoEgIAARwGAgAAqS4CAACxlgIAAKQwAgAUIbgCAAc2DgIABFqCAgAr6zICACEvUAIADrYYAgAI89ICABMyogIAEr42AgAxiJwCANjIaAIAF3niAgAC/BoCAAuB0gIALWfiAgAACQgCACustgIAEUHmAgAjYlQCAAvxsgIABgogAgACtfoCABGf7gIAXCh4AgAoIzICACRPpgIAd/kGAgABvmoCABhsgAIAAzN0AgAKqbICAAmpWAIADCo0AgAa3EiCABFx7AIAAox8AgAS/ZwCAAHmiAIAAm1WAgABcKACAAQzjUIADR9EwgAAcFMCAAB6agIAHbDIA Date: Tue, 4 Apr 2023 03:13:09 +0000 Message-ID: References: <3032112.1679865718@sss.pgh.pa.us> In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9YTRhMDJiNDEtYmEwMS00ZDM5LWI0MjctZWI3YjU3NTE5?= =?utf-8?B?ZTFiO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMy0wNC0wNFQwMzowNzowM1o7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS0PR01MB5716:EE_|TYWPR01MB11287:EE_ x-ms-office365-filtering-correlation-id: 58a51742-88b7-4ca8-8446-08db34ba84b6 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: KdBZMBogjx2930fmIaQ/1ine+W0fjqlTbXcDKnwM8a4IaevcmZ6cc2F2rShrGhtc/8r3J8DvJ2L/nUwCtwA9ctyXoP14NWy5xOOk13cRZQfyIXQdN4eR76EvsJfkRLWvj6bkT9GiHiNROJ2YevNc3XlwyjfhGC7UMadNo4nEzuhiz1xZuzO3eCYKmxwAaReXZ38t4DXvEJxnbzMXx4sJmRPKC8bVOgWdNnGGIg81PcvD3/mMt3eUbgahp/rEXeDabOguQ6swk5kUdwCxeKcxRP2g6mtoeXN57G4jOw643kOQee1M2OemlNnBTstY9pwG94ThPmjpmGJadqbWHbavzk6IWTBLS9838DxCqylGRSZHGHGnlP4S3oG/CthynFQ5GLTY4l8HgT7aaHMGBxkUh30QcQ5kdk5Y5Fwq3L+jPE0oyC5hcR47y7tX0KI0hIPAMggQ74MTv4a6/2m4f2URfv/G0x6gQqraEEMAeUUU0E2rsbBZqqjqIUUysQBldA+G/Jm3Lkn9UPPXfsFJPqeWJsIbiCRMyHAcBTUBf+PGa0nPzPTNT5K+hSlBK5wfZGoXFcWWwahHmdMEeLnJYxeq9rg5MBhXDqEiAwjdW0Mnw6mg5zChwu4LTaWMUh06jVEa x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(376002)(346002)(136003)(39860400002)(366004)(396003)(1590799018)(451199021)(122000001)(82960400001)(99936003)(33656002)(71200400001)(55016003)(85182001)(38100700002)(86362001)(1580799015)(38070700005)(2906002)(966005)(7696005)(45080400002)(9686003)(26005)(6506007)(53546011)(52536014)(76116006)(64756008)(66946007)(66476007)(66556008)(4326008)(6916009)(8676002)(66446008)(41300700001)(478600001)(54906003)(316002)(7416002)(5660300002)(8936002)(83380400001)(186003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?c0E3N2xRd3pmUFJOaVp2azVpWFgydnB3RWo1NkRCc2R1RVJxcnBzdUJNbHBX?= =?utf-8?B?Njcxdzh5TzBDbTJUS0o0dWtlOXhYb3VWVlVBWHo2MnMwY0F5RGxXNCsrazJ6?= =?utf-8?B?VzEzZkJqbXNOSnJFQ3phcU9rSC9nS0NNekM5TmREejh4WnlHOEdBY0ZOUUxG?= =?utf-8?B?OUx3UTcrcnl3Vjl2YmxTd2VCNS9icG1Ub1JrUFUwSm5XdStSbEQ0ZXdzeG9h?= =?utf-8?B?eUR6YThRQ2RPLzRGc3Z6RW9zK1FZWEhFM1RHQzAyYkdaU3AwbEF5TWV5WDdH?= =?utf-8?B?MmplWmcwR2dPUzU2R0NsajhhQkdMNndmSHJpQ3l1eUNvZHFLVzNyeC9ab054?= =?utf-8?B?K1YwOHVGTDB5bjBCeVlBeDZJQ0lvNnJXVEk2cnF1S08wMng1RXpad2RiemNC?= =?utf-8?B?Wm9TR0M1UURjL0k3akZQMzVmUDlvK1JRSGFmZytLOTdnZTNZNWlvRnNiMThP?= =?utf-8?B?T3dwalo2dkVjdDc4TUdmMHhVcDNraExJSUROVUJZTWFCeEw0K2poRzlOVFlz?= =?utf-8?B?Z0YxaFNKTE9PZkMyUzdVNk1HMUllNmtGUnNUYmM4enU2d0EwR202NWFxYjRJ?= =?utf-8?B?Q3pQTklhYTJWbE9hbE5taXM3b2t1R3N0K09YV05vSWtyR2gzU1ZQYitxSGFB?= =?utf-8?B?VTBWbWd2dDdDQkdZRFA0MEpBamZkS0NaVzMvem5XTVI3eUkwZnhEU0VTaExG?= =?utf-8?B?SjZuL0NNYWZNSHlzb1lndEJ3a2NtajByUHA1V1JmbW5rUFdqUm1rNi9pelhC?= =?utf-8?B?YkZXNExyY2dSRE80dzM1RjVJelV5L3FwYUZwVGtGSHh3eGRRZWxaazVTWXBW?= =?utf-8?B?aEtYYzVLSjV6NkpnRExYTkJKRThmM0NRNHhoNUdvM1QvWjRNTm9ZQUhacmwz?= =?utf-8?B?amI2QXVzUldXbW1NRTJHZU1jSXJTU3loK0RUTjhjM1F5eU9RYXJoSmsxL0xT?= =?utf-8?B?OVFPSW1EanRyWTRHWTQ5VnM0QnYzZzRHZm1XNDBIREVNNVBtaG1scmRGZnhF?= =?utf-8?B?eWc0NVNxOTl6VDNvRXpDcFhnbGxiZHpES2pWbGlRM1JnUUxMWjFWUnZzMEE4?= =?utf-8?B?ZnI2aExvVTEybVpRMmFJbkNpajVuckJpbXBOcnZLRWE4M2FycVN1VGo0TFR6?= =?utf-8?B?a0JySEtIVEpPTWFHbldRbUh2VzM2dTQ2QVAwWGpFbm5mZnlZWWNYZlp2MDhw?= =?utf-8?B?bm16QVpSYWV0RFRRTkdlZ3JVTWRkYnZMSkFIdUtDNk9tR0Y0WmdTdHp2TWV4?= =?utf-8?B?SkdRSTA2ZXd5NnlQTHJ1MDdrZXRuTGRwdjZpb3htQUVvRnM0MVJ5UHVWQ1dM?= =?utf-8?B?ajAwL2lRKzljdG9XMTY1YjlFZ3BOSFNhQ0hCSlNYOUJwZ0FZZzI3eXNnRnRk?= =?utf-8?B?NnZVOXQ3YmUxMjBjY2s0SEFSVENwSEhFdFI3V1pHY1lYTGFuT29zb1k1dHAx?= =?utf-8?B?d0N6V0dyOWlBcy9FNlVTOHRaQnBoL001YzRQVGFTOThoR2FzK2o2MC8rSzRu?= =?utf-8?B?QnFkUllLNTRpbVptU3dFM1VJVTc1YjRYcjVmYjBteHVlbGdYZzRkUUd1YlJU?= =?utf-8?B?U2NEQkRBMGdzazZlMld6blp5Y3hZVTRjTXRoSWdjWnRIcmdVRWxNZ3NCejRT?= =?utf-8?B?VWdvZGszZzNOdTIyVW9Xb05HbXp6T3JCbkxaakdVdHcvV3k3bDUvRFJITGlG?= =?utf-8?B?dkhERFVGVllFZ3kwTjlpRkJOc1ErOHQ5VWdScHhTQ1UvQ0cwTnE1a2VoRUVl?= =?utf-8?B?TlFKWmozS3I5c2kyM0VZOGdQb21zaXhwRmtKVU5McWcwN0lrTko2dlZ1WkRG?= =?utf-8?B?RTFMRkhOS0VKY3VhY3llVDM4VTJzc3NLblRnQ1hOWGx4YTJTbU1McWk2RFpP?= =?utf-8?B?NTFqZEMxNWIyRzN3eFM3dUdOTnNncXQ1MUtsMW8xVFJ4dXhPZlJhOWlMMnBZ?= =?utf-8?B?amVzaVQ4Q2pJc0prUEx6ZDM4UDhDOXhyVFFQcWN1aVRqQ2V3TVAwSE1hZjRY?= =?utf-8?B?bHRYLytrL05vRnpOWkRiMWdnV0s2cjV1R2w5MXljSy8yajBWL2tTSHlLR2lH?= =?utf-8?B?ekwyTEpCTWRQcU9ReElqU0FVRU9iRDZ6MjFHeFZPSTgzVTdOcFIwOHRnVkF6?= =?utf-8?Q?3lUpRXOT5E2APqwDcxAB6fGsJ?= Content-Type: multipart/mixed; boundary="_007_OS0PR01MB571614EE7EEDBF7049DA4EAE94939OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: pwucXe+79w0+eBNgoFZf3TnPCeFPUridEDLDS+itHBGcZ2y2ATfYU0u7mU3AKq3Dkc7/JQmFiczYpaP/2RyVoSL+x2u5xEBWoyK1muyoYqb9Qbc5e4Z7AurcUbMPmQVpCU0j/thrlkEUUc71wJEKPnWk1KE35lM45bIJh8l+EdmxrNfLLkvF664giSagBOk5Qd53frT28x6+rK88GtuMB+mJp++fk1od3AtAivTmB/yx2i+jKiHrT/p1L23K7bjYcV4wN5dnkDgLD8ALAKWeE3QPWYB4g4z3UvH3Im3Tif65meuPKreRSSyionbvaO+QhIxZUxDSFlmLGIPdS4jKpx+feFXzKWMg16HMbp/V2BDVV2PgP0QovISh8dFl8EssU53YafVN/y5DdAHXOwVEP0t25VthQeOGiYHA+/dQjqUJqAYKHB72LyuBVdDG9RKTcsEXFD3iYLMtgFTpWWd8GrkkT5ma02Z8Mt9RsFUnL/t276Qa08QP0kSNQQcJIf+Pn5s0M2Gy12mOM2TKtHkG7G24aVbnyIMR4zelB8LwA/hbj1FFzb6RJqQyG5bUxm1BfngPc7Y4g+HDU+/nIgfwtiLYTBqlBU515g2sfr6pScSau5eglnyEzYluU69OdU/2YpwABhq8pDuCBiHNQdAdlYwGbOi5TiOeh/4NF8adgXpDVZ3yxInQ+B5aIjb/Za93gdl1U4ZzryrnBE4jO/hlmrQdEM0xrmCqpC6v+gyfEnLMjxFP1K0J9dTtM2CpedazRvLvbGW38Fz/cdAGd5MVe0l6madlBNqPXbei1SLpm+tO6XBlMm3tiVRwY23s62bxF/SKy5diZW6C/bQqEvIJRIy8iDbHJiKK1nHUdZGgTh5EHxZmiN1rr+uo8aaKEPU++hCs6NpR1yk1DKYmoW4qt5Gtv9uWBk7Kr9jwk7cDYUY= X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 58a51742-88b7-4ca8-8446-08db34ba84b6 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Apr 2023 03:13:09.7710 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: PtCdg5d5drm3TZsaKvidZx7+/XndNVZImZ1rFOf/99lh/82slE+Zki3mIZQvdWOEwgy80f+3KEDk9EkBXrhUAg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB11287 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_007_OS0PR01MB571614EE7EEDBF7049DA4EAE94939OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVGh1cnNkYXksIE1hcmNoIDMwLCAyMDIzIDU6NDYgUE0gdmlnbmVzaCBDIDx2aWduZXNoMjFA Z21haWwuY29tPiB3cm90ZToNCj4gDQo+IE9uIFRodSwgMzAgTWFyIDIwMjMgYXQgMTM6MjksIGhv dXpqLmZuc3RAZnVqaXRzdS5jb20NCj4gPGhvdXpqLmZuc3RAZnVqaXRzdS5jb20+IHdyb3RlOg0K PiA+DQo+ID4NCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZy b206IGhvdXpqLmZuc3RAZnVqaXRzdS5jb20gPGhvdXpqLmZuc3RAZnVqaXRzdS5jb20+DQo+ID4g PiBTZW50OiBUaHVyc2RheSwgTWFyY2ggMzAsIDIwMjMgMjozNyBQTQ0KPiA+ID4NCj4gPiA+IE9u IFR1ZXNkYXksIE1hcmNoIDI4LCAyMDIzIDEyOjEzIFBNIGhvdXpqLmZuc3RAZnVqaXRzdS5jb20N Cj4gPiA+IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPiB3cm90ZToNCj4gPiA+ID4NCj4gPiA+ID4g T24gTW9uZGF5LCBNYXJjaCAyNywgMjAyMyA4OjA4IFBNIEFtaXQgS2FwaWxhDQo+ID4gPiA8YW1p dC5rYXBpbGExNkBnbWFpbC5jb20+DQo+ID4gPiA+IHdyb3RlOg0KPiA+ID4gPiA+IE9uIE1vbiwg TWFyIDI3LCAyMDIzIGF0IDEyOjA34oCvUE0gQW1pdCBLYXBpbGENCj4gPiA+ID4gPiA8YW1pdC5r YXBpbGExNkBnbWFpbC5jb20+DQo+ID4gPiA+ID4gd3JvdGU6DQo+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gT24gTW9uLCBNYXIgMjcsIDIwMjMgYXQgMjo1MuKAr0FNIFRvbSBMYW5lIDx0Z2xAc3Nz LnBnaC5wYS51cz4NCj4gd3JvdGU6DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gPiBJIHN1Z2dlc3QgdGFraW5nIGEgY291cGxlIG9mIHN0ZXBzIGJhY2sgZnJvbSB0aGUg bWludXRpYWUgb2YNCj4gPiA+ID4gPiA+ID4gdGhlIHBhdGNoLCBhbmQgc3BlbmRpbmcgc29tZSBo YXJkIGVmZm9ydCB0aGlua2luZyBhYm91dCBob3cNCj4gPiA+ID4gPiA+ID4gdGhlIHRoaW5nIHdv dWxkIGJlIGNvbnRyb2xsZWQgaW4gYSB1c2VmdWwgZmFzaGlvbiAodGhhdCBpcywNCj4gPiA+ID4g PiA+ID4gYSByZWFsIGRlc2lnbiBmb3IgdGhlIGZpbHRlcmluZyB0aGF0IHdhcyBtZW50aW9uZWQg YXQgdGhlDQo+ID4gPiA+ID4gPiA+IHZlcnkgb3V0c2V0KSwgYW5kIGFib3V0IHRoZSBzZWN1cml0 eSBpc3N1ZXMsIGFuZCBhYm91dCBob3cNCj4gPiA+ID4gPiA+ID4gd2UgY291bGQgZ2V0IHRvIGEN Cj4gPiA+IGNvbW1pdHRhYmxlDQo+ID4gPiA+IHBhdGNoLg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+IEFncmVlZC4gSSdsbCB0cnkgdG8gc3VtbWFyaXplIHRoZSBkaXNj dXNzaW9uIHdlIGhhdmUgdGlsbCBub3cNCj4gPiA+ID4gPiA+IG9uIHRoaXMgYW5kIHNoYXJlIG15 IHRob3VnaHRzIG9uIHRoZSBzYW1lIGluIGEgc2VwYXJhdGUgZW1haWwuDQo+ID4gPiA+ID4gPg0K PiA+ID4gPiA+DQo+ID4gPiA+ID4gVGhlIGlkZWEgdG8gY29udHJvbCB3aGF0IGNvdWxkIGJlIHJl cGxpY2F0ZWQgaXMgdG8gaW50cm9kdWNlIGENCj4gPiA+ID4gPiBuZXcgcHVibGljYXRpb24gb3B0 aW9uICdkZGwnIGFsb25nIHdpdGggY3VycmVudCBvcHRpb25zDQo+ID4gPiA+ID4gJ3B1Ymxpc2gn IGFuZCAncHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QnLiBUaGUgdmFsdWVzIG9mIHRoaXMNCj4g PiA+ID4gPiBuZXcgb3B0aW9uIGNvdWxkIGJlICd0YWJsZScsICdmdW5jdGlvbicsICdhbGwnLCBl dGMuIEhlcmUgJ2FsbCcNCj4gPiA+ID4gPiBlbmFibGVzIHRoZSByZXBsaWNhdGlvbiBvZiBhbGwg c3VwcG9ydGVkIERETCBjb21tYW5kcy4gRXhhbXBsZQ0KPiB1c2FnZSBmb3IgdGhpcyB3b3VsZCBi ZToNCj4gPiA+ID4gPiBFeGFtcGxlOg0KPiA+ID4gPiA+IENyZWF0ZSBhIG5ldyBwdWJsaWNhdGlv biB3aXRoIGFsbCBkZGwgcmVwbGljYXRpb24gZW5hYmxlZDoNCj4gPiA+ID4gPiAgIENSRUFURSBQ VUJMSUNBVElPTiBwdWIxIEZPUiBBTEwgVEFCTEVTIHdpdGggKGRkbCA9ICdhbGwnKTsNCj4gPiA+ ID4gPg0KPiA+ID4gPiA+IEVuYWJsZSB0YWJsZSBkZGwgcmVwbGljYXRpb24gZm9yIGFuIGV4aXN0 aW5nIFB1YmxpY2F0aW9uOg0KPiA+ID4gPiA+ICAgQUxURVIgUFVCTElDQVRJT04gcHViMiBTRVQg KGRkbCA9ICd0YWJsZScpOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVGhpcyBpcyB3aGF0IHNlZW1z IHRvIGhhdmUgYmVlbiBkaXNjdXNzZWQgYnV0IEkgdGhpbmsgd2UgY2FuDQo+ID4gPiA+ID4gZXZl biBleHRlbmQgaXQgdG8gc3VwcG9ydCBiYXNlZCBvbiBvcGVyYXRpb25zL2NvbW1hbmRzLCBzYXkg b25lDQo+ID4gPiA+ID4gd291bGQgbGlrZSB0byBwdWJsaXNoIG9ubHkgJ2NyZWF0ZScgYW5kICdk cm9wJyBvZiB0YWJsZXMuIFRoZW4NCj4gPiA+ID4gPiB3ZSBjYW4gZXh0ZW5kIHRoZSBleGlzdGlu ZyBwdWJsaXNoIG9wdGlvbiB0byBoYXZlIHZhbHVlcyBsaWtlICdjcmVhdGUnLA0KPiAnYWx0ZXIn LCBhbmQgJ2Ryb3AnLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gQW5vdGhlciB0aGluZyB3ZSBhcmUg Y29uc2lkZXJpbmcgcmVsYXRlZCB0byB0aGlzIGlzIGF0IHdoYXQNCj4gPiA+ID4gPiBsZXZlbCB0 aGVzZSBhZGRpdGlvbmFsIG9wdGlvbnMgc2hvdWxkIGJlIHNwZWNpZmllZC4gV2UgaGF2ZQ0KPiA+ ID4gPiA+IHRocmVlIHZhcmlhbnRzIEZPUiBUQUJMRSwgRk9SIEFMTCBUQUJMRVMsIGFuZCBGT1Ig VEFCTEVTIElODQo+ID4gPiA+ID4gU0NIRU1BIHRoYXQgZW5hYmxlcyByZXBsaWNhdGlvbi4gTm93 LCBmb3IgdGhlIHNha2Ugb2YNCj4gPiA+ID4gPiBzaW1wbGljaXR5LCB0aGlzIG5ldyBvcHRpb24g aXMgZGlzY3Vzc2VkIHRvIGJlIHByb3ZpZGVkIG9ubHkNCj4gPiA+ID4gPiB3aXRoIEZPUiBBTEwg VEFCTEVTIHZhcmlhbnQgYnV0IEkgdGhpbmsgd2UgY2FuIHByb3ZpZGUgaXQgd2l0aA0KPiA+ID4g PiA+IG90aGVyIHZhcmlhbnRzIHdpdGggc29tZSBhZGRpdGlvbmFsIHJlc3RyaWN0aW9ucyBsaWtl IHdpdGggRk9SDQo+ID4gPiA+ID4gVEFCTEUsIHdlIGNhbiBvbmx5IHNwZWNpZnkgJ2FsdGVyJyBh bmQgJ2Ryb3AnIGZvciBwdWJsaXNoDQo+ID4gPiA+ID4gb3B0aW9uLiBOb3csIHRob3VnaCBwb3Nz aWJsZSwgaXQgYnJpbmdzIGFkZGl0aW9uYWwgY29tcGxleGl0eSB0bw0KPiA+ID4gPiA+IHN1cHBv cnQgaXQgd2l0aCB2YXJpYW50cyBvdGhlciB0aGFuIEZPUiBBTEwgVEFCTEVTIGJlY2F1c2UgdGhl bg0KPiA+ID4gPiA+IHdlIG5lZWQgdG8gZW5zdXJlIGFkZGl0aW9uYWwgZmlsdGVyaW5nIGFuZCBw b3NzaWJsZSBtb2RpZmljYXRpb24NCj4gPiA+ID4gPiBvZiB0aGUgY29udGVudCB3ZSBoYXZlIHRv IHNlbmQgdG8gZG93bnN0cmVhbS4gU28sIHdlIGNhbg0KPiA+ID4gZXZlbg0KPiA+ID4gPiBkZWNp ZGUgdG8gZmlyc3Qgc3VwcG9ydCBpdCBvbmx5IEZPUiBBTEwgVEFCTEVTIHZhcmlhbnQuDQo+ID4g PiA+ID4NCj4gPiA+ID4gPiBUaGUgb3RoZXIgcG9pbnQgdG8gY29uc2lkZXIgZm9yIHB1Ymxpc2gg b3B0aW9uICdkZGwgPSB0YWJsZScgaXMNCj4gPiA+ID4gPiB3aGV0aGVyIHdlIG5lZWQgdG8gYWxs b3cgcmVwbGljYXRpbmcgZGVwZW5kZW50IG9iamVjdHMgbGlrZSBzYXkNCj4gPiA+ID4gPiBzb21l IHVzZXItZGVmaW5lZCB0eXBlIGlzIHVzZWQgaW4gdGhlIHRhYmxlLiBJIGd1ZXNzIHRoZQ0KPiA+ ID4gPiA+IGRpZmZpY3VsdHkgaGVyZSB3b3VsZCBiZSB0byBpZGVudGlmeSB3aGljaCBkZXBlbmRl bnRzIHdlIHdhbnQgdG8gYWxsb3cuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBJIHRoaW5rIGluIHRo ZSBmaXJzdCB2ZXJzaW9uIHdlIHNob3VsZCBhbGxvdyB0byByZXBsaWNhdGUgb25seQ0KPiA+ID4g PiA+IHNvbWUgb2YgdGhlIG9iamVjdHMgaW5zdGVhZCBvZiBldmVyeXRoaW5nLiBGb3IgZXhhbXBs ZSwgY2FuIHdlDQo+ID4gPiA+ID4gY29uc2lkZXIgb25seSBhbGxvd2luZyB0YWJsZXMgYW5kIGlu ZGV4ZXMgaW4gdGhlIGZpcnN0IHZlcnNpb24/DQo+ID4gPiA+ID4gVGhlbiBleHRlbmQgaXQgaW4g YSBwaGFzZWQNCj4gPiA+ID4gbWFubmVyPw0KPiA+ID4gPg0KPiA+ID4gPiBJIHRoaW5rIHN1cHBv cnRpbmcgdGFibGUgcmVsYXRlZCBzdHVmZiBpbiB0aGUgZmlyc3QgdmVyc2lvbiBtYWtlcw0KPiA+ ID4gPiBzZW5zZSBhbmQgdGhlIHBhdGNoIHNpemUgY291bGQgYmUgcmVkdWNlZCB0byBhIHN1aXRh YmxlIHNpemUuDQo+ID4gPg0KPiA+ID4gQmFzZWQgb24gdGhlIGRpc2N1c3Npb24sIEkgc3BsaXQg dGhlIHBhdGNoIGludG8gZm91ciBwYXJ0czogVGFibGUNCj4gPiA+IERETCByZXBsaWNhdGlvbigw MDAxLDAwMDIpLCBJbmRleCBEREwgcmVwbGljYXRpb24oMDAwMyksIG93bmVyc2hpcA0KPiA+ID4g c3R1ZmYgZm9yIHRhYmxlIGFuZCBpbmRleCgwMDA0KSwgb3RoZXIgRERMJ3MgcmVwbGljYXRpb24o MDAwNSkuDQo+ID4gPg0KPiA+ID4gSW4gdGhpcyB2ZXJzaW9uLCBJIG1haW5seSB0cmllZCB0byBz cGxpdCB0aGUgcGF0Y2ggc2V0LCBhbmQgdGhlcmUNCj4gPiA+IGFyZSBmZXcgT1BFTiBpdGVtcyB3 ZSBuZWVkIHRvIGFkZHJlc3MgbGF0ZXI6DQo+ID4gPg0KPiA+ID4gMSkgVGhlIGN1cnJlbnQgcHVi bGljYXRpb24gImRkbCIgb3B0aW9uIG9ubHkgaGF2ZSB0d28gdmFsdWVzOiB0YWJsZSwgYWxsLiBX ZQ0KPiA+ID4gICAgYWxzbyBuZWVkIHRvIGFkZCBpbmRleCBhbmQgbWF5YmUgb3RoZXIgb2JqZWN0 cyBpbiB0aGUgbGlzdC4NCj4gPiA+DQo+ID4gPiAyKSBOZWVkIHRvIGltcHJvdmUgdGhlIHN5bnRh eCBzdHVmZi4gQ3VycmVudGx5LCB3ZSBzdG9yZSB0aGUgb3B0aW9uIHZhbHVlIG9mDQo+ID4gPiAg ICB0aGUgIndpdGggKGRkbCA9IHh4KSIgdmlhIGRpZmZlcmVudCBjb2x1bW5zIGluIHRoZSBjYXRh bG9nLCB0aGUNCj4gPiA+ICAgIGNhdGFsb2cocGdfcHVibGljYXRpb24pIHdpbGwgaGF2ZSBtb3Jl IGFuZCBtb3JlIGNvbHVtbnMgYXMgd2UgYWRkDQo+ID4gPiBzdXBwb3J0DQo+ID4gPiAgICBmb3Ig bG9naWNhbCByZXBsaWNhdGlvbiBvZiBvdGhlciBvYmplY3RzIGluIHRoZSBmdXR1cmUuIFdlIGNv dWxkIHN0b3JlIGl0IGFzDQo+ID4gPiAgICBhbiB0ZXh0IGFycmF5IGluc3RlYWQuDQo+ID4gPg0K PiA+ID4gICAgT1RPSCwgc2luY2Ugd2UgaGF2ZSBwcm9wb3NlZCBzb21lIG90aGVyIG1vcmUgZmxl eGlibGUgc3ludGF4IHRvDQo+ID4gPiAtaGFja2VycywgdGhlIGN1cnJlbnQNCj4gPiA+ICAgIHN5 bnRheCBtaWdodCBiZSBjaGFuZ2VkIHdoaWNoIG1pZ2h0IGFsc28gc29sdmUgdGhpcyBwcm9ibGVt Lg0KPiA+ID4NCj4gPiA+IDMpIFRoZSB0ZXN0X2RkbF9kZXBhcnNlX3JlZ3Jlc3MgdGVzdCBtb2R1 bGUgaXMgbm90IGluY2x1ZGVkIGluIHRoZQ0KPiA+ID4gc2V0LCBiZWNhdXNlDQo+ID4gPiAgICBJ IHRoaW5rIHdlIGFsc28gbmVlZCB0byBzcGxpdCBpdCBpbnRvIHRhYmxlIHN0dWZmLCBpbmRleCBz dHVmZiBhbmQgb3RoZXJzLA0KPiA+ID4gICAgd2UgY2FuIHNoYXJlIGl0IGFmdGVyIGZpbmlzaGlu ZyB0aGF0Lg0KPiA+ID4NCj4gPiA+IDQpIFRoZSBwYXRjaCBzZXQgY291bGQgYmUgc3BpdHRlZCBm dXJ0aGVyIHRvIG1ha2UgaXQgZWFzaWVyIGZvciByZXZpZXdlciBsaWtlOg0KPiA+ID4gICAgaW5m cmFzdHJ1Y3R1cmUgZm9yIGRlcGFyc2VyLCBkZXBhcnNlciwgbG9naWNhbC1kZWNvZGluZywgYnVp bHQtaW4gbG9naWNhbA0KPiA+ID4gICAgcmVwbGljYXRpb24sIFdlIGNhbiBkbyBpdCBhZnRlciBz b21lIGFuYWx5c2lzLg0KPiA+ID4NCj4gPiA+IFsxXQ0KPiA+ID4NCj4gaHR0cHM6Ly93d3cucG9z dGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9PUzBQUjAxTUI1NzE2NDY4NzRBM0UxNjVEOTM5DQo+ID4g PiA5OUE5RDk0ODg5JTQwT1MwUFIwMU1CNTcxNi5qcG5wcmQwMS5wcm9kLm91dGxvb2suY29tDQo+ ID4NCj4gPiBUaGUgcGF0Y2ggbmVlZHMgYSByZWJhc2UgZHVlIHRvIGEgcmVjZW50IGNvbW1pdCBk YTMyNGQ2LCBoZXJlIGlzIHRoZQ0KPiByZWJhc2VkIHZlcnNpb24uDQo+IA0KPiBUaGFua3MgZm9y IHRoZSBwYXRjaGVzLCBGZXcgY29tbWVudHM6DQo+IDE6IGNyZWF0ZSB1bmxvZ2dlZCBpcyByZXBs aWNhdGVkIGJ1dCB0aGUgaW5zZXJ0IG9uIHRoZSBzYW1lIGlzIG5vdCByZXBsaWNhdGVkOg0KPiBj cmVhdGUgdW5sb2dnZWQgdGFibGUgdDMoYzEgaW50KTsgLS0gVGhlIGluc2VydCBvbiB0aGlzIGlz IG5vdCByZXBsaWNhdGVkDQo+IA0KPiAyOiAiVXNpbmcgaW5kZXggdGFibGVzcGFjZSIgb3B0aW9u IGlzIG5vdCByZXBsaWNhdGVkOg0KPiBjcmVhdGUgdGFibGUgdDMgKGMxIGludCB1bmlxdWUgdXNp bmcgaW5kZXggdGFibGVzcGFjZSB0YnMxKTsNCj4gDQo+IHB1Ymxpc2hlcjoNCj4gXGQrIHQzDQo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHVibGlj LnQzIg0KPiAgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVs dCB8IFN0b3JhZ2UgfA0KPiBDb21wcmVzc2lvbiB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9u DQo+IC0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsNCj4gLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQ0K PiAgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBs YWluICAgfA0KPiAgICAgfCAgICAgICAgICAgICAgfA0KPiBJbmRleGVzOg0KPiAgICAgInQzX2Mx X2tleSIgVU5JUVVFIENPTlNUUkFJTlQsIGJ0cmVlIChjMSksIHRhYmxlc3BhY2UgInRiczEiDQo+ IFB1YmxpY2F0aW9uczoNCj4gICAgICJwdWIxIg0KPiBBY2Nlc3MgbWV0aG9kOiBoZWFwDQo+IA0K PiBTdWJzY3JpYmVyOg0KPiBcZCsgdDMNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudDMiDQo+ICBDb2x1bW4gfCAgVHlwZSAgIHwgQ29s bGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSB8DQo+IENvbXByZXNzaW9uIHwg U3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24NCj4gLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKw0KPiAtLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tDQo+ICBjMSAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAg IHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8DQo+ICAgICB8ICAgICAgICAgICAgICB8 DQo+IEluZGV4ZXM6DQo+ICAgICAidDNfYzFfa2V5IiBVTklRVUUgQ09OU1RSQUlOVCwgYnRyZWUg KGMxKSBBY2Nlc3MgbWV0aG9kOiBoZWFwDQo+IA0KPiAzOlRoZSBjcmVhdGUgdGFibGUgaXMgbm90 IHJlcGxpY2F0ZWQgd2hlcmVhcyB0aGUgZHJvcCB0YWJsZSBvZiB0aGUgc2FtZSBpcw0KPiByZXBs aWNhdGVkIHdpdGggUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1QgYXMgZGVmYXVsdCAoZmFsc2Up Og0KPiBjcmVhdGUgdGFibGUgdDEoYzEgaW50KSBwYXJ0aXRpb24gYnkgaGFzaCAoIGMxKTsgZHJv cCB0YWJsZSB0MTsNCj4gDQo+IDQ6IFNob3VsZCB3ZSBkb2N1bWVudCB0YWJsZXNwYWNlIGNyZWF0 aW9uIHNob3VsZCBiZSB0YWtlbiBjYXJlIG9mIGJ5IHVzZXI6DQo+IGNyZWF0ZSB0YWJsZSB0MShj MSBpbnQpIHRhYmxlc3BhY2UgdGJzMTsgLS0gQXMgdGFibGVzcGFjZSB0YnMxIGRvZXMgbm90IGV4 aXN0IGluIHRoZQ0KPiBzdWJzY3JpYmVyLCBzaG91bGQgd2UgYWRkIHNvbWUgZG9jdW1lbnRhdGlv biBmb3IgdGhpcy4NCj4gDQo+IDU6IHRlbXBvcmFyeSB0YWJsZSBpcyBub3QgcmVwbGljYXRlZCwg c2hvdWxkIHdlIGFkZCBzb21lIGRvY3VtZW50YXRpb24gZm9yDQo+IHRoaXM6DQo+IGNyZWF0ZSBn bG9iYWwgdGVtcG9yYXJ5IHRhYmxlIHQyKGMxIGludCk7IC0tIFNob3VsZCB3ZSBhZGQgc29tZQ0K PiBkb2N1bWVudGF0aW9uIGZvciB0aGlzDQoNClRoYW5rcyBmb3IgdGhlIGNvbW1lbnRzLg0KDQpB dHRhY2ggdGhlIG5ldyB2ZXJzaW9uIHBhdGNoIHNldCB3aGljaCBkaWQgdGhlIGZvbGxvd2luZyBj aGFuZ2VzOg0KDQoxLiBBbGxvdyBEREwgcmVwbGljYXRpb24gdG8gYmUgdXNlZCB3aXRoIEZPUiBU QUJMRVMgSU4gU0NIRU1BLg0KMi4gU3VwcG9ydCB0aGUgaW5kZXggb3B0aW9uIGluIHRoZSBwdWJs aWNhdGlvbiBkZGwgaW4gMDAwNCBwYXRjaCBhbmQgc2xpZ2h0bHkNCiAgIHJlZmFjdG9yIHRoZSBj b2RlIGluIHBnb3V0cHV0Lg0KMy4gQWRkcmVzcyB0aGUgY29tbWVudHMgaW4gWzFdLiAoVGhhbmtz IFZpZ25lc2ggZm9yIGhlbHBpbmcgYWRkcmVzcyB0aGUgY29tbWVudHMpDQoNCkJUVywgd2hpbGUg cmV2aWV3aW5nIHRoZSBwYXRjaCwgSSBmaW5kIGFub3RoZXIgcHJvYmxlbToNCg0KQ3VycmVudGx5 LCBXaGVuIERETCBpcyBleGVjdXRlZCwgd2Ugb25seSBjaG9vc2Ugb25lIERETCBldmVudCB0cmln Z2VyIHRvIGZpcmUgLA0KdGhpcyB3YXMgZG9uZSB0byBhdm9pZCBkdXBsaWNhdGUgZGVwYXJzaW5n IGFuZCBXQUwgaWYgdXNlciBjcmVhdGUgbXVsdGlwbGUNCnB1YmxpY2F0aW9ucyB3aXRoIG11bHRp cGxlIGV2ZW50IHRyaWdnZXJzLiBCdXQgdGhpcyBoYXMgYSBwcm9ibGVtIGlmIHVzZXINCmNyZWF0 ZSBtdWx0aXBsZSBwdWJsaWNhdGlvbnMgd2l0aCBkaWZmZXJlbnQgZGRsIG9wdGlvbjoNCg0KLS0g VGhpcyBjcmVhdGUgZGRsIHRyaWdnZXIgQSB3aGljaCBjYXRjaCBhbmQgV0FMIHRhYmxlIGRkbCBj b21tYW5kDQpDUkVBVEUgUFVCTElDQVRJT04gQSBGT1IgQUxMIFRBQkxFUyB3aXRoIChkZGwgPSAn dGFibGUnKTsNCg0KLS0gVGhpcyBjcmVhdGUgZGRsIHRyaWdnZXIgQSB3aGljaCBjYXRjaCBhbmQg V0FMIGluZGV4IGRkbCBjb21tYW5kDQpDUkVBVEUgUFVCTElDQVRJT04gQiBGT1IgQUxMIFRBQkxF UyB3aXRoIChkZGwgPSAnaW5kZXgnKTsNCg0KSWYgd2Ugb25seSBjaG9vc2Ugb25lIGV2ZW50IHRy aWdnZXIgdG8gZmlyZSwgd2Ugd2lsbCBtaXNzIFdBTCBsb2dnaW5nIG9uZSBraW5kDQpvZiBERExz Lg0KDQpJIGFtIHRoaW5raW5nIG1heWJlIHdlIG5lZWQgdG8gbGV0IHRoZSBkZGwgdHJpZ2dlciBj YXRjaCBhbGwgdGhlIHN1cHBvcnRlZCBkZGwNCmNvbW1hbmRzKGl0IG9ubHkgY2F0Y2ggdGhlIERE TCB0aGF0IHNwZWNpZmllZCBpbiB0aGUgJ2RkbCcgb3B0aW9uIGluIHRoZQ0KY3VycmVudCBwYXRj aCksIGFuZCB0ZWFjaCB0aGUgZGRsIHRyaWdnZXIgZnVuY3Rpb24gdG8gY29sbGVjdCB0aGUgYWxs IHRoZQ0KcHVibGljYXRpb24gaW5mb3JtYXRpb24gdG8gY2hlY2sgaWYgdGhlIGN1cnJlbnQgRERM IGlzIHB1Ymxpc2hlZCBpbiBhbnkNCnB1YmxpY2F0aW9ucywgYW5kIGlmIHNvLCBkZXBhcnNlIGFu ZCBXQUwgbG9nIGl0LiBUaGlzIHdheSwgZXZlbiBpZiB3ZSBvbmx5DQpjaG9vc2Ugb25lIGV2ZW50 IHRyaWdnZXIsIHRoYXQgdHJpZ2dlciBjYW4gZGVwYXJzZSBhbmQgV0FMIGxvZyB0aGUgbmVjZXNz YXJ5DQpEREwuDQoNClsxXSBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NB TERhTm0ydkJOOG9Ndi03RyUzRERINXJSLXU0MEpHYlI5YVA0QjZud3I3MXF3MTdyUEZBJTQwbWFp bC5nbWFpbC5jb20NCg0KQmVzdCBSZWdhcmRzLA0KSG91IHpqDQo= --_007_OS0PR01MB571614EE7EEDBF7049DA4EAE94939OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0005-Apply-the-DDL-change-as-that-same-user-th-2023_04_04.patch" Content-Description: 0005-Apply-the-DDL-change-as-that-same-user-th-2023_04_04.patch Content-Disposition: attachment; filename="0005-Apply-the-DDL-change-as-that-same-user-th-2023_04_04.patch"; size=55383; creation-date="Tue, 04 Apr 2023 03:07:06 GMT"; modification-date="Tue, 04 Apr 2023 03:13:02 GMT" Content-Transfer-Encoding: base64 RnJvbSBmNmRhNWQ2ZDdiYWFiMWFhNjk0N2QzNjA2ODk3ZGM1ZGEzYTEzZjc0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMDk6NTQ6MTQgKzA4MDAKU3ViamVjdDogW1BBVENIIDUv Nl0gQXBwbHkgdGhlIERETCBjaGFuZ2UgYXMgdGhhdCBzYW1lIHVzZXIgdGhhdCBleGVjdXRlZCB0 aGUKIERETCBvbiBwdWJsaXNoZXIuCgoxLiBDaGFuZ2UgZXZlbnQgdHJpZ2dlciBmdW5jdGlvbnMg dG8gY29sbGVjdCB0aGUgY3VycmVudCByb2xlIGluCkNvbGxlY3RlZENvbW1hbmQuCgoyLiBDaGFu Z2UgRGVwYXJzZXIgZnVuY3Rpb24gZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQgdG8gZW5jb2RlIG93 bmVyIHJvbGUgaW4gdGhlCnRvcC1sZXZlbCBlbGVtZW50IHN1Y2ggYXMge215b3duZXI6cm9sZV9u YW1lLCBmbXQ6Li4uLCBpZGVudGl0eTouLi59IG9mIHRoZQpkZXBhcnNlZCBqc29uYiBvdXRwdXQg Zm9yIGNvbW1hbmRzIHRoYXQgY3JlYXRlIGRhdGFiYXNlIG9iamVjdHMuIEFsc28gY2hhbmdlCmZ1 bmN0aW9uIGRlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nIHRvIHJldHJpZXZlIHRoZSBteW93bmVy IGVsZW1lbnQgZnJvbSBhCmpzb25iIHN0cmluZy4KCjMuIEludHJvZHVjZSBhIG5ldyBzdWJzY3Jp cHRpb24gb3B0aW9uIG1hdGNoX2RkbF9vd25lcjogd2hlbiB0dXJuZWQgb24sIHRoZQphcHBseSB3 b3JrZXIgd2lsbCBhcHBseSBEREwgbWVzc2FnZXMgaW4gdGhlIHJvbGUgcmV0cmlldmVkIGZyb20g dGhlICJteW93bmVyIgpmaWVsZCBvZiB0aGUgZGVwYXJzZWQganNvbmIgc3RyaW5nLiBUaGUgZGVm YXVsdCB2YWx1ZSBvZiBtYXRjaF9kZGxfb3duZXIgaXMgb24uCi0tLQogc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19zdWJzY3JpcHRpb24uYyAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFu ZHMvZGRsX2RlcGFyc2UuYyAgICAgICAgICAgfCAgNjIgKysrKysrLS0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2RkbF9qc29uLmMgICAgICAgICAgICAgIHwgIDI1ICsrKy0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2V2ZW50X3RyaWdnZXIuYyAgICAgICAgIHwgICA1ICsKIHNyYy9iYWNrZW5kL2NvbW1h bmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgIHwgIDI3ICsrKy0KIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dlci5jIHwgICA2ICstCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICB8ICAyMiArKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMgICAgICAgICAgICAgICAgICAgIHwgIDEzICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5oICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAg ICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uaCAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvdGNvcC9kZGxfZGVwYXJzZS5o ICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5 LmggICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0 aW9uLm91dCAgIHwgMTQ0ICsrKysrKysrKy0tLS0tLS0tLS0KIDE0IGZpbGVzIGNoYW5nZWQsIDIy NSBpbnNlcnRpb25zKCspLCA5OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uYwppbmRleCA4N2U4ZWE3ZWZhLi41NTJlNDcyMjlmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmMKQEAgLTcyLDYgKzcyLDcgQEAgR2V0U3Vic2NyaXB0aW9uKE9p ZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rKQogCXN1Yi0+dHdvcGhhc2VzdGF0ZSA9IHN1YmZvcm0t PnN1YnR3b3BoYXNlc3RhdGU7CiAJc3ViLT5kaXNhYmxlb25lcnIgPSBzdWJmb3JtLT5zdWJkaXNh Ymxlb25lcnI7CiAJc3ViLT5wYXNzd29yZHJlcXVpcmVkID0gc3ViZm9ybS0+c3VicGFzc3dvcmRy ZXF1aXJlZDsKKwlzdWItPm1hdGNoZGRsb3duZXIgPSBzdWJmb3JtLT5zdWJtYXRjaGRkbG93bmVy OwogCiAJLyogR2V0IGNvbm5pbmZvICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxs KFNVQlNDUklQVElPTk9JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9k ZXBhcnNlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfZGVwYXJzZS5jCmluZGV4IDgzZjJl ZWViMGUuLjVkODUwNzBhODUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9k ZXBhcnNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsX2RlcGFyc2UuYwpAQCAtMTcy LDcgKzE3Miw3IEBAIHN0YXRpYyBPYmpFbGVtICpuZXdfb2JqZWN0KE9ialR5cGUgdHlwZSwgY2hh ciAqbmFtZSk7CiBzdGF0aWMgT2JqVHJlZSAqbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKE9p ZCBjbGFzc0lkLCBPaWQgb2JqZWN0SWQpOwogc3RhdGljIE9iakVsZW0gKm5ld19vYmplY3Rfb2Jq ZWN0KE9ialRyZWUgKnZhbHVlKTsKIHN0YXRpYyBPYmpUcmVlICpuZXdfb2JqdHJlZV9WQShjaGFy ICpmbXQsIGludCBudW1vYmpzLC4uLik7Ci1zdGF0aWMgSnNvbmJWYWx1ZSAqb2JqdHJlZV90b19q c29uYl9yZWMoT2JqVHJlZSAqdHJlZSwgSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSk7CitzdGF0aWMg SnNvbmJWYWx1ZSAqb2JqdHJlZV90b19qc29uYl9yZWMoT2JqVHJlZSAqdHJlZSwgSnNvbmJQYXJz ZVN0YXRlICpzdGF0ZSwgY2hhciAqb3duZXIpOwogc3RhdGljIGNoYXIgKlJlbGF0aW9uR2V0Q29s dW1uRGVmYXVsdChSZWxhdGlvbiByZWwsIEF0dHJOdW1iZXIgYXR0bm8sCiAJCQkJCQkJCQkgIExp c3QgKmRwY29udGV4dCwgTGlzdCAqKmV4cHJzKTsKIApAQCAtODE1LDE0ICs4MTUsMzkgQEAgb2Jq dHJlZV9mbXRfdG9fanNvbmJfZWxlbWVudChKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBPYmpUcmVl ICp0cmVlKQogfQogCiAvKgotICogQ3JlYXRlIGEgSlNPTkIgcmVwcmVzZW50YXRpb24gZnJvbSBh biBPYmpUcmVlLgorICogUHJvY2VzcyB0aGUgcm9sZSBzdHJpbmcgaW50byB0aGUgb3V0cHV0IHBh cnNlIHN0YXRlLgorICovCitzdGF0aWMgdm9pZAorcm9sZV90b19qc29uYl9lbGVtZW50KEpzb25i UGFyc2VTdGF0ZSAqc3RhdGUsIGNoYXIgKm93bmVyKQoreworCUpzb25iVmFsdWUJa2V5OworCUpz b25iVmFsdWUJdmFsOworCisJaWYgKG93bmVyID09IE5VTEwpCisJCXJldHVybjsKKworCS8qIFB1 c2ggdGhlIGtleSBmaXJzdCAqLworCWtleS50eXBlID0gamJ2U3RyaW5nOworCWtleS52YWwuc3Ry aW5nLnZhbCA9ICJteW93bmVyIjsKKwlrZXkudmFsLnN0cmluZy5sZW4gPSBzdHJsZW4oa2V5LnZh bC5zdHJpbmcudmFsKTsKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9LRVksICZrZXkpOwor CisJLyogVGhlbiBwcm9jZXNzIHRoZSByb2xlIHN0cmluZyAqLworCXZhbC50eXBlID0gamJ2U3Ry aW5nOworCXZhbC52YWwuc3RyaW5nLmxlbiA9IHN0cmxlbihvd25lcik7CisJdmFsLnZhbC5zdHJp bmcudmFsID0gb3duZXI7CisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfVkFMVUUsICZ2YWwp OworfQorCisvKgorICogQ3JlYXRlIGEgSlNPTkIgcmVwcmVzZW50YXRpb24gZnJvbSBhbiBPYmpU cmVlIGFuZCBpdHMgb3duZXIgKGlmIGdpdmVuKS4KICAqLwogc3RhdGljIEpzb25iICoKLW9ianRy ZWVfdG9fanNvbmIoT2JqVHJlZSAqdHJlZSkKK29ianRyZWVfdG9fanNvbmIoT2JqVHJlZSAqdHJl ZSwgY2hhciAqb3duZXIpCiB7CiAJSnNvbmJWYWx1ZSAqdmFsdWU7CiAKLQl2YWx1ZSA9IG9ianRy ZWVfdG9fanNvbmJfcmVjKHRyZWUsIE5VTEwpOworCXZhbHVlID0gb2JqdHJlZV90b19qc29uYl9y ZWModHJlZSwgTlVMTCwgb3duZXIpOwogCXJldHVybiBKc29uYlZhbHVlVG9Kc29uYih2YWx1ZSk7 CiB9CiAKQEAgLTg3NCw3ICs4OTksNyBAQCBvYmp0cmVlX3RvX2pzb25iX2VsZW1lbnQoSnNvbmJQ YXJzZVN0YXRlICpzdGF0ZSwgT2JqRWxlbSAqb2JqZWN0LAogCiAJCWNhc2UgT2JqVHlwZU9iamVj dDoKIAkJCS8qIFJlY3Vyc2l2ZWx5IGFkZCB0aGUgb2JqZWN0IGludG8gdGhlIGV4aXN0aW5nIHBh cnNlIHN0YXRlICovCi0JCQlvYmp0cmVlX3RvX2pzb25iX3JlYyhvYmplY3QtPnZhbHVlLm9iamVj dCwgc3RhdGUpOworCQkJb2JqdHJlZV90b19qc29uYl9yZWMob2JqZWN0LT52YWx1ZS5vYmplY3Qs IHN0YXRlLCBOVUxMKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgT2JqVHlwZUFycmF5OgpAQCAtOTAy LDEyICs5MjcsMTMgQEAgb2JqdHJlZV90b19qc29uYl9lbGVtZW50KEpzb25iUGFyc2VTdGF0ZSAq c3RhdGUsIE9iakVsZW0gKm9iamVjdCwKICAqIFJlY3Vyc2l2ZSBoZWxwZXIgZm9yIG9ianRyZWVf dG9fanNvbmIuCiAgKi8KIHN0YXRpYyBKc29uYlZhbHVlICoKLW9ianRyZWVfdG9fanNvbmJfcmVj KE9ialRyZWUgKnRyZWUsIEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUpCitvYmp0cmVlX3RvX2pzb25i X3JlYyhPYmpUcmVlICp0cmVlLCBKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBjaGFyICpvd25lcikK IHsKIAlzbGlzdF9pdGVyCWl0ZXI7CiAKIAlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJ Tl9PQkpFQ1QsIE5VTEwpOwogCisJcm9sZV90b19qc29uYl9lbGVtZW50KHN0YXRlLCBvd25lcik7 CiAJb2JqdHJlZV9mbXRfdG9fanNvbmJfZWxlbWVudChzdGF0ZSwgdHJlZSk7CiAKIAlzbGlzdF9m b3JlYWNoKGl0ZXIsICZ0cmVlLT5wYXJhbXMpCkBAIC0zNDAwLDcgKzM0MjYsNyBAQCBkZXBhcnNl X2Ryb3BfY29tbWFuZChjb25zdCBjaGFyICpvYmppZGVudGl0eSwgY29uc3QgY2hhciAqb2JqZWN0 dHlwZSwKIAkJCQkJCQkicHJlc2VudCIsIE9ialR5cGVCb29sLCBiZWhhdmlvciA9PSBEUk9QX0NB U0NBREUpOwogCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHN0bXQsICIle2Nhc2NhZGV9cyIsIHRtcF9v YmopOwogCi0JanNvbmIgPSBvYmp0cmVlX3RvX2pzb25iKHN0bXQpOworCWpzb25iID0gb2JqdHJl ZV90b19qc29uYihzdG10LCBOVUxMIC8qIE93bmVyL3JvbGUgY2FuIGJlIHNraXBwZWQgZm9yIGRy b3AgY29tbWFuZCAqLyk7CiAJY29tbWFuZCA9IEpzb25iVG9DU3RyaW5nKCZzdHIsICZqc29uYi0+ cm9vdCwgSlNPTkJfRVNUSU1BVEVEX0xFTik7CiAKIAlyZXR1cm4gY29tbWFuZDsKQEAgLTM2MjQs NyArMzY1MCw3IEBAIGRlcGFyc2VfQWx0ZXJEZXBlbmRTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAq cGFyc2V0cmVlKQogICogVGhpcyBmdW5jdGlvbiBzaG91bGQgY292ZXIgYWxsIGNhc2VzIGhhbmRs ZWQgaW4gUHJvY2Vzc1V0aWxpdHlTbG93LgogICovCiBzdGF0aWMgT2JqVHJlZSAqCi1kZXBhcnNl X3NpbXBsZV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCkKK2RlcGFyc2Vfc2ltcGxlX2Nv bW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kLCBib29sICppbmNsdWRlX293bmVyKQogewogCU9p ZAkJCW9iamVjdElkOwogCU5vZGUJICAgKnBhcnNldHJlZTsKQEAgLTM2NDEsMTQgKzM2NjcsMTcg QEAgZGVwYXJzZV9zaW1wbGVfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCiAJc3dpdGNo IChub2RlVGFnKHBhcnNldHJlZSkpCiAJewogCQljYXNlIFRfQWx0ZXJPYmplY3REZXBlbmRzU3Rt dDoKKwkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7CiAJCQlyZXR1cm4gZGVwYXJzZV9BbHRlckRl cGVuZFN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CiAKIAkJY2FzZSBUX0FsdGVyT2JqZWN0U2No ZW1hU3RtdDoKKwkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7CiAJCQlyZXR1cm4gZGVwYXJzZV9B bHRlck9iamVjdFNjaGVtYVN0bXQoY21kLT5kLnNpbXBsZS5hZGRyZXNzLAogCQkJCQkJCQkJCQkJ IHBhcnNldHJlZSwKIAkJCQkJCQkJCQkJCSBjbWQtPmQuc2ltcGxlLnNlY29uZGFyeU9iamVjdCk7 CiAKIAkJY2FzZSBUX0FsdGVyT3duZXJTdG10OgorCQkJKmluY2x1ZGVfb3duZXIgPSBmYWxzZTsK IAkJCXJldHVybiBkZXBhcnNlX0FsdGVyT3duZXJTdG10KGNtZC0+ZC5zaW1wbGUuYWRkcmVzcywg cGFyc2V0cmVlKTsKIAogCQljYXNlIFRfQ3JlYXRlU3RtdDoKQEAgLTM2NTgsNiArMzY4Nyw3IEBA IGRlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQogCQkJcmV0dXJu IGRlcGFyc2VfSW5kZXhTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOwogCiAJCWNhc2UgVF9SZW5h bWVTdG10OgorCQkJKmluY2x1ZGVfb3duZXIgPSBmYWxzZTsKIAkJCXJldHVybiBkZXBhcnNlX1Jl bmFtZVN0bXQoY21kLT5kLnNpbXBsZS5hZGRyZXNzLCBwYXJzZXRyZWUpOwogCiAJCWRlZmF1bHQ6 CkBAIC0zNjcwLDkgKzM3MDAsMTUgQEAgZGVwYXJzZV9zaW1wbGVfY29tbWFuZChDb2xsZWN0ZWRD b21tYW5kICpjbWQpCiAKIC8qCiAgKiBXb3JraG9yc2UgdG8gZGVwYXJzZSBhIENvbGxlY3RlZENv bW1hbmQuCisgKgorICogaW5jbHVkZV9vd25lciBpbmRpY2F0ZXMgaWYgdGhlIG93bmVyL3JvbGUg b2YgdGhlIGNvbW1hbmQgc2hvdWxkIGJlCisgKiBpbmNsdWRlZCBpbiB0aGUgZGVwYXJzZWQgSnNv biBvdXRwdXQuIEl0IGlzIHNldCB0byBmYWxzZSBmb3IgYW55IGNvbW1hbmRzCisgKiB0aGF0IGRv bid0IENSRUFURSBkYXRhYmFzZSBvYmplY3RzIChBTFRFUiBjb21tYW5kcyBmb3IgZXhhbXBsZSks IHRoaXMgaXMKKyAqIHRvIGF2b2lkIGVuY29kaW5nIGFuZCBzZW5kaW5nIHRoZSBvd25lciB0byBk b3duc3RyZWFtIGZvciByZXBsYXkgYXMgaXQgaXMKKyAqIHVubmVjZXNzYXJ5IGZvciBzdWNoIGNv bW1hbmRzLgogICovCiBjaGFyICoKLWRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKENvbGxlY3RlZENv bW1hbmQgKmNtZCwgYm9vbCB2ZXJib3NlX21vZGUpCitkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChD b2xsZWN0ZWRDb21tYW5kICpjbWQsIGJvb2wgaW5jbHVkZV9vd25lciwgYm9vbCB2ZXJib3NlX21v ZGUpCiB7CiAJT3ZlcnJpZGVTZWFyY2hQYXRoICpvdmVycmlkZVBhdGg7CiAJTWVtb3J5Q29udGV4 dCBvbGRjeHQ7CkBAIC0zNzEzLDEwICszNzQ5LDExIEBAIGRlcGFyc2VfdXRpbGl0eV9jb21tYW5k KENvbGxlY3RlZENvbW1hbmQgKmNtZCwgYm9vbCB2ZXJib3NlX21vZGUpCiAJc3dpdGNoIChjbWQt PnR5cGUpCiAJewogCQljYXNlIFNDVF9TaW1wbGU6Ci0JCQl0cmVlID0gZGVwYXJzZV9zaW1wbGVf Y29tbWFuZChjbWQpOworCQkJdHJlZSA9IGRlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoY21kLCAmaW5j bHVkZV9vd25lcik7CiAJCQlicmVhazsKIAkJY2FzZSBTQ1RfQWx0ZXJUYWJsZToKIAkJCXRyZWUg PSBkZXBhcnNlX0FsdGVyUmVsYXRpb24oY21kKTsKKwkJCWluY2x1ZGVfb3duZXIgPSBmYWxzZTsK IAkJCWJyZWFrOwogCQljYXNlIFNDVF9DcmVhdGVUYWJsZUFzOgogCQkJdHJlZSA9IGRlcGFyc2Vf Q3JlYXRlVGFibGVBc1N0bXQoY21kKTsKQEAgLTM3MzEsNyArMzc2OCw4IEBAIGRlcGFyc2VfdXRp bGl0eV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCwgYm9vbCB2ZXJib3NlX21vZGUpCiAJ ewogCQlKc29uYgkgICAqanNvbmI7CiAKLQkJanNvbmIgPSBvYmp0cmVlX3RvX2pzb25iKHRyZWUp OworCQlqc29uYiA9IGluY2x1ZGVfb3duZXIgPyBvYmp0cmVlX3RvX2pzb25iKHRyZWUsIGNtZC0+ cm9sZSkgOgorCQkJCQkJCQlvYmp0cmVlX3RvX2pzb25iKHRyZWUsIE5VTEwpOwogCQljb21tYW5k ID0gSnNvbmJUb0NTdHJpbmcoJnN0ciwgJmpzb25iLT5yb290LCBKU09OQl9FU1RJTUFURURfTEVO KTsKIAl9CiAKQEAgLTM3NTcsNyArMzc5NSw3IEBAIGRkbF9kZXBhcnNlX3RvX2pzb24oUEdfRlVO Q1RJT05fQVJHUykKIAlDb2xsZWN0ZWRDb21tYW5kICpjbWQgPSAoQ29sbGVjdGVkQ29tbWFuZCAq KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKIAljaGFyCSAgICpjb21tYW5kOwogCi0JY29tbWFuZCA9 IGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKGNtZCwgdHJ1ZSk7CisJY29tbWFuZCA9IGRlcGFyc2Vf dXRpbGl0eV9jb21tYW5kKGNtZCwgZmFsc2UsIHRydWUpOwogCiAJaWYgKGNvbW1hbmQpCiAJCVBH X1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0KGNvbW1hbmQpKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9qc29uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxf anNvbi5jCmluZGV4IDNhNTdkMjY5N2MuLjc2Y2VmYjk0ODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2RkbF9qc29uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsX2pz b24uYwpAQCAtNzE4LDcgKzcxOCw3IEBAIGV4cGFuZF9qc29uYl9hcnJheShTdHJpbmdJbmZvIGJ1 ZiwgY2hhciAqcGFyYW0sCiAgKiBXb3JraG9yc2UgZm9yIGRkbF9kZXBhcnNlX2V4cGFuZF9jb21t YW5kLgogICovCiBjaGFyICoKLWRlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nKGNoYXIgKmpzb25f c3RyKQorZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcoY2hhciAqanNvbl9zdHIsIGNoYXIqKiBv d25lcikKIHsKIAlEYXR1bQkJZDsKIAlKc29uYgkgICAqanNvbmI7CkBAIC03MjksNiArNzI5LDI3 IEBAIGRlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nKGNoYXIgKmpzb25fc3RyKQogCWQgPSBEaXJl Y3RGdW5jdGlvbkNhbGwxKGpzb25iX2luLCBQb2ludGVyR2V0RGF0dW0oanNvbl9zdHIpKTsKIAlq c29uYiA9IChKc29uYiAqKSBEYXR1bUdldFBvaW50ZXIoZCk7CiAKKwlpZiAob3duZXIgIT0gTlVM TCkKKwl7CisJCWNvbnN0IGNoYXIgKmtleSA9ICJteW93bmVyIjsKKwkJSnNvbmJWYWx1ZSAqdmFs dWU7CisKKwkJdmFsdWUgPSBnZXRLZXlKc29uVmFsdWVGcm9tQ29udGFpbmVyKCZqc29uYi0+cm9v dCwga2V5LCBzdHJsZW4oa2V5KSwgTlVMTCk7CisJCWlmICh2YWx1ZSkKKwkJeworCQkJY2hhciAq c3RyOworCisJCQkvKiB2YWx1ZS0+dmFsLnN0cmluZy52YWwgbWF5IG5vdCBiZSBOVUxMIHRlcm1p bmF0ZWQgKi8KKwkJCXN0ciA9IHBhbGxvYyh2YWx1ZS0+dmFsLnN0cmluZy5sZW4gKyAxKTsKKwkJ CW1lbWNweShzdHIsIHZhbHVlLT52YWwuc3RyaW5nLnZhbCwgdmFsdWUtPnZhbC5zdHJpbmcubGVu KTsKKwkJCXN0clt2YWx1ZS0+dmFsLnN0cmluZy5sZW5dID0gJ1wwJzsKKwkJCSpvd25lciA9IHN0 cjsKKwkJfQorCQllbHNlCisJCQkvKiBteW93bmVyIGlzIG5vdCBnaXZlbiBpbiB0aGlzIGpzb25i LCBlLmcuIGZvciBEcm9wIENvbW1hbmRzICovCisJCQkqb3duZXIgPSBOVUxMOworCX0KKwogCWV4 cGFuZF9mbXRfcmVjdXJzaXZlKGJ1ZiwgJmpzb25iLT5yb290KTsKIAogCXJldHVybiBidWYtPmRh dGE7CkBAIC03NjUsNyArNzg2LDcgQEAgZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQoUEdfRlVO Q1RJT05fQVJHUykKIAogCWpzb25fc3RyID0gdGV4dF90b19jc3RyaW5nKGpzb24pOwogCi0JUEdf UkVUVVJOX1RFWFRfUChjc3RyaW5nX3RvX3RleHQoZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmco anNvbl9zdHIpKSk7CisJUEdfUkVUVVJOX1RFWFRfUChjc3RyaW5nX3RvX3RleHQoZGVwYXJzZV9k ZGxfanNvbl90b19zdHJpbmcoanNvbl9zdHIsIE5VTEwpKSk7CiB9CiAKIC8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9ldmVudF90cmlnZ2VyLmMKaW5kZXggNzFkMmM0M2FmYy4uMzhjMTFmMDAwYyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtODgxLDYgKzg4MSw3IEBAIEV2ZW50VHJp Z2dlclRhYmxlSW5pdFdyaXRlU3RhcnQoTm9kZSAqcGFyc2V0cmVlKQogCiAJY29tbWFuZC0+dHlw ZSA9IChzdG10LT5vYmp0eXBlID09IE9CSkVDVF9UQUJMRSkgPyBTQ1RfQ3JlYXRlVGFibGVBcyA6 IFNDVF9TaW1wbGU7CiAJY29tbWFuZC0+aW5fZXh0ZW5zaW9uID0gY3JlYXRpbmdfZXh0ZW5zaW9u OworCWNvbW1hbmQtPnJvbGUgPSBHZXRVc2VyTmFtZUZyb21JZChHZXRVc2VySWQoKSwgZmFsc2Up OwogCWNvbW1hbmQtPmQuY3Rhcy5hZGRyZXNzID0gSW52YWxpZE9iamVjdEFkZHJlc3M7CiAJY29t bWFuZC0+ZC5jdGFzLnJlYWxfY3JlYXRlID0gTlVMTDsKIAljb21tYW5kLT5wYXJzZXRyZWUgPSBj b3B5T2JqZWN0KHBhcnNldHJlZSk7CkBAIC0xNjI2LDYgKzE2MjcsNyBAQCBFdmVudFRyaWdnZXJD b2xsZWN0U2ltcGxlQ29tbWFuZChPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAKIAljb21tYW5kLT50 eXBlID0gU0NUX1NpbXBsZTsKIAljb21tYW5kLT5pbl9leHRlbnNpb24gPSBjcmVhdGluZ19leHRl bnNpb247CisJY29tbWFuZC0+cm9sZSA9IEdldFVzZXJOYW1lRnJvbUlkKEdldFVzZXJJZCgpLCBm YWxzZSk7CiAKIAljb21tYW5kLT5kLnNpbXBsZS5hZGRyZXNzID0gYWRkcmVzczsKIAljb21tYW5k LT5kLnNpbXBsZS5zZWNvbmRhcnlPYmplY3QgPSBzZWNvbmRhcnlPYmplY3Q7CkBAIC0xNjYyLDYg KzE2NjQsNyBAQCBFdmVudFRyaWdnZXJBbHRlclRhYmxlU3RhcnQoTm9kZSAqcGFyc2V0cmVlKQog CiAJY29tbWFuZC0+dHlwZSA9IFNDVF9BbHRlclRhYmxlOwogCWNvbW1hbmQtPmluX2V4dGVuc2lv biA9IGNyZWF0aW5nX2V4dGVuc2lvbjsKKwljb21tYW5kLT5yb2xlID0gR2V0VXNlck5hbWVGcm9t SWQoR2V0VXNlcklkKCksIGZhbHNlKTsKIAogCWNvbW1hbmQtPmQuYWx0ZXJUYWJsZS5jbGFzc0lk ID0gUmVsYXRpb25SZWxhdGlvbklkOwogCWNvbW1hbmQtPmQuYWx0ZXJUYWJsZS5vYmplY3RJZCA9 IEludmFsaWRPaWQ7CkBAIC0xOTI5LDYgKzE5MzIsNyBAQCBFdmVudFRyaWdnZXJDb2xsZWN0R3Jh bnQoSW50ZXJuYWxHcmFudCAqaXN0bXQpCiAJY29tbWFuZCA9IHBhbGxvYyhzaXplb2YoQ29sbGVj dGVkQ29tbWFuZCkpOwogCWNvbW1hbmQtPnR5cGUgPSBTQ1RfR3JhbnQ7CiAJY29tbWFuZC0+aW5f ZXh0ZW5zaW9uID0gY3JlYXRpbmdfZXh0ZW5zaW9uOworCWNvbW1hbmQtPnJvbGUgPSBHZXRVc2Vy TmFtZUZyb21JZChHZXRVc2VySWQoKSwgZmFsc2UpOwogCWNvbW1hbmQtPmQuZ3JhbnQuaXN0bXQg PSBpY29weTsKIAljb21tYW5kLT5wYXJzZXRyZWUgPSBOVUxMOwogCkBAIC0xOTYwLDYgKzE5NjQs NyBAQCBFdmVudFRyaWdnZXJDb2xsZWN0QWx0ZXJPcEZhbShBbHRlck9wRmFtaWx5U3RtdCAqc3Rt dCwgT2lkIG9wZmFtb2lkLAogCWNvbW1hbmQgPSBwYWxsb2Moc2l6ZW9mKENvbGxlY3RlZENvbW1h bmQpKTsKIAljb21tYW5kLT50eXBlID0gU0NUX0FsdGVyT3BGYW1pbHk7CiAJY29tbWFuZC0+aW5f ZXh0ZW5zaW9uID0gY3JlYXRpbmdfZXh0ZW5zaW9uOworCWNvbW1hbmQtPnJvbGUgPSBHZXRVc2Vy TmFtZUZyb21JZChHZXRVc2VySWQoKSwgZmFsc2UpOwogCU9iamVjdEFkZHJlc3NTZXQoY29tbWFu ZC0+ZC5vcGZhbS5hZGRyZXNzLAogCQkJCQkgT3BlcmF0b3JGYW1pbHlSZWxhdGlvbklkLCBvcGZh bW9pZCk7CiAJY29tbWFuZC0+ZC5vcGZhbS5vcGVyYXRvcnMgPSBvcGVyYXRvcnM7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggODdlYjIzNDk2ZS4uOTNkY2NjMzU0 ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNzAsNiArNzAs NyBAQAogI2RlZmluZSBTVUJPUFRfUEFTU1dPUkRfUkVRVUlSRUQJMHgwMDAwMDgwMAogI2RlZmlu ZSBTVUJPUFRfTFNOCQkJCQkweDAwMDAxMDAwCiAjZGVmaW5lIFNVQk9QVF9PUklHSU4JCQkJMHgw MDAwMjAwMAorI2RlZmluZSBTVUJPUFRfTUFUQ0hfRERMX09XTkVSCQkweDAwMDA0MDAwCiAKIC8q IGNoZWNrIGlmIHRoZSAndmFsJyBoYXMgJ2JpdHMnIHNldCAqLwogI2RlZmluZSBJc1NldCh2YWws IGJpdHMpICAoKCh2YWwpICYgKGJpdHMpKSA9PSAoYml0cykpCkBAIC05NCw2ICs5NSw3IEBAIHR5 cGVkZWYgc3RydWN0IFN1Yk9wdHMKIAlib29sCQlkaXNhYmxlb25lcnI7CiAJYm9vbAkJcGFzc3dv cmRyZXF1aXJlZDsKIAljaGFyCSAgICpvcmlnaW47CisJYm9vbAkJbWF0Y2hkZGxvd25lcjsKIAlY TG9nUmVjUHRyCWxzbjsKIH0gU3ViT3B0czsKIApAQCAtMTUzLDYgKzE1NSw4IEBAIHBhcnNlX3N1 YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25z LAogCQlvcHRzLT5wYXNzd29yZHJlcXVpcmVkID0gdHJ1ZTsKIAlpZiAoSXNTZXQoc3VwcG9ydGVk X29wdHMsIFNVQk9QVF9PUklHSU4pKQogCQlvcHRzLT5vcmlnaW4gPSBwc3RyZHVwKExPR0lDQUxS RVBfT1JJR0lOX0FOWSk7CisJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfTUFUQ0hf RERMX09XTkVSKSkKKwkJb3B0cy0+bWF0Y2hkZGxvd25lciA9IHRydWU7CiAKIAkvKiBQYXJzZSBv cHRpb25zICovCiAJZm9yZWFjaChsYywgc3RtdF9vcHRpb25zKQpAQCAtMzQwLDYgKzM0NCwxNSBA QCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0 bXRfb3B0aW9ucywKIAkJCW9wdHMtPnNwZWNpZmllZF9vcHRzIHw9IFNVQk9QVF9MU047CiAJCQlv cHRzLT5sc24gPSBsc247CiAJCX0KKwkJZWxzZSBpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNV Qk9QVF9NQVRDSF9ERExfT1dORVIpICYmCisJCQkJIHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgIm1h dGNoX2RkbF9vd25lciIpID09IDApCisJCXsKKwkJCWlmIChJc1NldChvcHRzLT5zcGVjaWZpZWRf b3B0cywgU1VCT1BUX01BVENIX0RETF9PV05FUikpCisJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVs ZW0oZGVmZWwsIHBzdGF0ZSk7CisKKwkJCW9wdHMtPnNwZWNpZmllZF9vcHRzIHw9IFNVQk9QVF9N QVRDSF9ERExfT1dORVI7CisJCQlvcHRzLT5tYXRjaGRkbG93bmVyID0gZGVmR2V0Qm9vbGVhbihk ZWZlbCk7CisJCX0KIAkJZWxzZQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLApAQCAtNTc4LDcgKzU5MSw3IEBAIENyZWF0ZVN1YnNjcmlwdGlv bihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJ CSAgU1VCT1BUX1NZTkNIUk9OT1VTX0NPTU1JVCB8IFNVQk9QVF9CSU5BUlkgfAogCQkJCQkgIFNV Qk9QVF9TVFJFQU1JTkcgfCBTVUJPUFRfVFdPUEhBU0VfQ09NTUlUIHwKIAkJCQkJICBTVUJPUFRf RElTQUJMRV9PTl9FUlIgfCBTVUJPUFRfUEFTU1dPUkRfUkVRVUlSRUQgfAotCQkJCQkgIFNVQk9Q VF9PUklHSU4pOworCQkJCQkgIFNVQk9QVF9PUklHSU4gfCBTVUJPUFRfTUFUQ0hfRERMX09XTkVS KTsKIAlwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhwc3RhdGUsIHN0bXQtPm9wdGlvbnMsIHN1 cHBvcnRlZF9vcHRzLCAmb3B0cyk7CiAKIAkvKgpAQCAtNjk0LDYgKzcwNyw3IEBAIENyZWF0ZVN1 YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0 bXQsCiAJCXB1YmxpY2F0aW9uTGlzdFRvQXJyYXkocHVibGljYXRpb25zKTsKIAl2YWx1ZXNbQW51 bV9wZ19zdWJzY3JpcHRpb25fc3Vib3JpZ2luIC0gMV0gPQogCQlDU3RyaW5nR2V0VGV4dERhdHVt KG9wdHMub3JpZ2luKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VibWF0Y2hkZGxv d25lciAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMubWF0Y2hkZGxvd25lcik7CiAKIAl0dXAgPSBo ZWFwX2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNjcihyZWwpLCB2YWx1ZXMsIG51bGxzKTsKIApA QCAtMTExNSw3ICsxMTI5LDggQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRl LCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJc3VwcG9ydGVkX29wdHMgPSAoU1VC T1BUX1NMT1RfTkFNRSB8CiAJCQkJCQkJCSAgU1VCT1BUX1NZTkNIUk9OT1VTX0NPTU1JVCB8IFNV Qk9QVF9CSU5BUlkgfAogCQkJCQkJCQkgIFNVQk9QVF9TVFJFQU1JTkcgfCBTVUJPUFRfRElTQUJM RV9PTl9FUlIgfAotCQkJCQkJCQkgIFNVQk9QVF9QQVNTV09SRF9SRVFVSVJFRCB8IFNVQk9QVF9P UklHSU4pOworCQkJCQkJCQkgIFNVQk9QVF9QQVNTV09SRF9SRVFVSVJFRCB8IFNVQk9QVF9PUklH SU4gfAorCQkJCQkJCQkgIFNVQk9QVF9NQVRDSF9ERExfT1dORVIpOwogCiAJCQkJcGFyc2Vfc3Vi c2NyaXB0aW9uX29wdGlvbnMocHN0YXRlLCBzdG10LT5vcHRpb25zLAogCQkJCQkJCQkJCSAgIHN1 cHBvcnRlZF9vcHRzLCAmb3B0cyk7CkBAIC0xMTk0LDYgKzEyMDksMTQgQEAgQWx0ZXJTdWJzY3Jp cHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJ CQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1Ym9yaWdpbiAtIDFdID0gdHJ1ZTsK IAkJCQl9CiAKKwkJCQlpZiAoSXNTZXQob3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX01BVENI X0RETF9PV05FUikpCisJCQkJeworCQkJCQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vi bWF0Y2hkZGxvd25lciAtIDFdCisJCQkJCQk9IEJvb2xHZXREYXR1bShvcHRzLm1hdGNoZGRsb3du ZXIpOworCQkJCQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJtYXRjaGRkbG93bmVy IC0gMV0KKwkJCQkJCT0gdHJ1ZTsKKwkJCQl9CisKIAkJCQl1cGRhdGVfdHVwbGUgPSB0cnVlOwog CQkJCWJyZWFrOwogCQkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9kZGx0cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRy aWdnZXIuYwppbmRleCBmYjM1Y2MyYzdmLi4xMWUzM2I5YjY1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYwpAQCAtMTMyLDcgKzEzMiw3IEBAIHB1Ymxp Y2F0aW9uX2RlcGFyc2VfdGFibGVfcmV3cml0ZShQR19GVU5DVElPTl9BUkdTKQogCWlmIChyZWxw ZXJzaXN0ID09IFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVCkKIAl7CiAJCS8qIERlcGFyc2UgdGhl IERETCBjb21tYW5kIGFuZCBXQUwgbG9nIGl0IHRvIGFsbG93IGRlY29kaW5nIG9mIHRoZSBzYW1l LiAqLwotCQlqc29uX3N0cmluZyA9IGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKGNtZCwgZmFsc2Up OworCQlqc29uX3N0cmluZyA9IGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKGNtZCwgdHJ1ZSwgZmFs c2UpOwogCiAJCWlmIChqc29uX3N0cmluZyAhPSBOVUxMKQogCQkJTG9nTG9naWNhbERETE1lc3Nh Z2UoImRlcGFyc2UiLCBjbWQtPmQuYWx0ZXJUYWJsZS5vYmplY3RJZCwgRENUX1RhYmxlQWx0ZXIs CkBAIC0yMTEsNyArMjExLDcgQEAgcHVibGljYXRpb25fZGVwYXJzZV9kZGxfY29tbWFuZF9lbmQo UEdfRlVOQ1RJT05fQVJHUykKIAkJCSAqIERlcGFyc2UgdGhlIERETCBjb21tYW5kIGFuZCBXQUwg bG9nIGl0IHRvIGFsbG93IGRlY29kaW5nIG9mIHRoZQogCQkJICogc2FtZS4KIAkJCSAqLwotCQkJ anNvbl9zdHJpbmcgPSBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChjbWQsIGZhbHNlKTsKKwkJCWpz b25fc3RyaW5nID0gZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQoY21kLCB0cnVlLCBmYWxzZSk7CiAK IAkJCWlmIChqc29uX3N0cmluZyAhPSBOVUxMKQogCQkJCUxvZ0xvZ2ljYWxERExNZXNzYWdlKCJk ZXBhcnNlIiwgcmVsaWQsIHR5cGUsIGpzb25fc3RyaW5nLApAQCAtMjg0LDcgKzI4NCw3IEBAIHB1 YmxpY2F0aW9uX2RlcGFyc2VfdGFibGVfaW5pdF93cml0ZShQR19GVU5DVElPTl9BUkdTKQogCQly ZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOwogCiAJLyogRGVwYXJzZSB0aGUgRERMIGNvbW1h bmQgYW5kIFdBTCBsb2cgaXQgdG8gYWxsb3cgZGVjb2Rpbmcgb2YgdGhlIHNhbWUuICovCi0JanNv bl9zdHJpbmcgPSBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChjbWQsIGZhbHNlKTsKKwlqc29uX3N0 cmluZyA9IGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKGNtZCwgdHJ1ZSwgZmFsc2UpOwogCiAJaWYg KGpzb25fc3RyaW5nICE9IE5VTEwpCiAJCUxvZ0xvZ2ljYWxERExNZXNzYWdlKCJkZXBhcnNlIiwg Y21kLT5kLnNpbXBsZS5hZGRyZXNzLm9iamVjdElkLCBEQ1RfU2ltcGxlQ21kLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggMWFlZjE0OTIwNC4uZjhlNTJjMDE3 OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0zMzQ5LDIx ICszMzQ5LDMzIEBAIGFwcGx5X2hhbmRsZV9kZGwoU3RyaW5nSW5mbyBzKQogCWNvbnN0IGNoYXIg KnByZWZpeCA9IE5VTEw7CiAJY2hhcgkgICAqbWVzc2FnZSA9IE5VTEw7CiAJY2hhcgkgICAqZGRs X2NvbW1hbmQ7CisJY2hhcgkgICAqb3duZXI7CiAJU2l6ZQkJc3o7CiAJTGlzdAkgICAqcGFyc2V0 cmVlX2xpc3Q7CiAJTGlzdENlbGwgICAqcGFyc2V0cmVlX2l0ZW07CiAJRGVzdFJlY2VpdmVyICpy ZWNlaXZlcjsKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CiAJY29uc3QgY2hhciAqc2F2ZV9k ZWJ1Z19xdWVyeV9zdHJpbmcgPSBkZWJ1Z19xdWVyeV9zdHJpbmc7CisJaW50CQkJc2F2ZV9uZXN0 bGV2ZWwgPSAwOwogCiAJbWVzc2FnZSA9IGxvZ2ljYWxyZXBfcmVhZF9kZGwocywgJmxzbiwgJnBy ZWZpeCwgJnN6KTsKIAogCS8qIE1ha2Ugc3VyZSB3ZSBhcmUgaW4gYSB0cmFuc2FjdGlvbiBjb21t YW5kICovCiAJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwogCi0JZGRsX2NvbW1hbmQgPSBkZXBh cnNlX2RkbF9qc29uX3RvX3N0cmluZyhtZXNzYWdlKTsKKwlkZGxfY29tbWFuZCA9IGRlcGFyc2Vf ZGRsX2pzb25fdG9fc3RyaW5nKG1lc3NhZ2UsICZvd25lcik7CiAJZGVidWdfcXVlcnlfc3RyaW5n ID0gZGRsX2NvbW1hbmQ7CiAKKwlpZiAoTXlTdWJzY3JpcHRpb24tPm1hdGNoZGRsb3duZXIgJiYg b3duZXIpCisJeworCQkvKgorCQkgKiBTZXQgdGhlIGN1cnJlbnQgcm9sZSB0byB0aGUgb3duZXIg dGhhdCBleGVjdXRlZCB0aGUgY29tbWFuZCBvbiB0aGUKKwkJICogcHVibGljYXRpb24gc2VydmVy LgorCQkgKi8KKwkJc2F2ZV9uZXN0bGV2ZWwgPSBOZXdHVUNOZXN0TGV2ZWwoKTsKKwkJU2V0Q29u ZmlnT3B0aW9uKCJyb2xlIiwgb3duZXIsIFBHQ19JTlRFUk5BTCwgUEdDX1NfT1ZFUlJJREUpOwor CX0KKwogCS8qIERlc3ROb25lIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uICovCiAJcmVjZWl2ZXIg PSBDcmVhdGVEZXN0UmVjZWl2ZXIoRGVzdE5vbmUpOwogCXBhcnNldHJlZV9saXN0ID0gcGdfcGFy c2VfcXVlcnkoZGRsX2NvbW1hbmQpOwpAQCAtMzQ2MSw2ICszNDczLDE0IEBAIGFwcGx5X2hhbmRs ZV9kZGwoU3RyaW5nSW5mbyBzKQogCQlNZW1vcnlDb250ZXh0RGVsZXRlKHBlcl9wYXJzZXRyZWVf Y29udGV4dCk7CiAJfQogCisJLyoKKwkgKiBSZXN0b3JlIHRoZSBHVUMgdmFyaWFibGVzIHdlIHNl dCBhYm92ZS4KKwkgKi8KKwlpZiAoc2F2ZV9uZXN0bGV2ZWwgPiAwKQorCXsKKwkJQXRFT1hhY3Rf R1VDKHRydWUsIHNhdmVfbmVzdGxldmVsKTsKKwl9CisKIAlkZWJ1Z19xdWVyeV9zdHJpbmcgPSBz YXZlX2RlYnVnX3F1ZXJ5X3N0cmluZzsKIAllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogfQpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMKaW5kZXggMzRjZWRjMDQzMi4uNWQ5M2JiOTQ5MCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00NjQ0 LDYgKzQ2NDQsNyBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJaW50CQkJaV9z dWJwdWJsaWNhdGlvbnM7CiAJaW50CQkJaV9zdWJiaW5hcnk7CiAJaW50CQkJaV9zdWJwYXNzd29y ZHJlcXVpcmVkOworCWludAkJCWlfc3VibWF0Y2hkZGxvd25lcjsKIAlpbnQJCQlpLAogCQkJCW50 dXBzOwogCkBAIC00Njk4LDExICs0Njk5LDEzIEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAq Zm91dCkKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNjAwMDApCiAJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiIHMuc3Vib3JpZ2luLFxuIgotCQkJCQkJCSAiIHMu c3VicGFzc3dvcmRyZXF1aXJlZFxuIik7CisJCQkJCQkJICIgcy5zdWJwYXNzd29yZHJlcXVpcmVk XG4iCisJCQkJCQkJICIgcy5zdWJtYXRjaGRkbG93bmVyXG4iKTsKIAllbHNlCiAJCWFwcGVuZFBR RXhwQnVmZmVyKHF1ZXJ5LAogCQkJCQkJICAiICclcycgQVMgc3Vib3JpZ2luLFxuIgotCQkJCQkJ ICAiICd0JyBBUyBzdWJwYXNzd29yZHJlcXVpcmVkXG4iLAorCQkJCQkJICAiICd0JyBBUyBzdWJw YXNzd29yZHJlcXVpcmVkXG4iCisJCQkJCQkgICIgZmFsc2UgQVMgc3VibWF0Y2hkZGxvd25lclxu IiwKIAkJCQkJCSAgTE9HSUNBTFJFUF9PUklHSU5fQU5ZKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LApAQCAtNDczMiw2ICs0NzM1LDcgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZl ICpmb3V0KQogCWlfc3ViZGlzYWJsZW9uZXJyID0gUFFmbnVtYmVyKHJlcywgInN1YmRpc2FibGVv bmVyciIpOwogCWlfc3Vib3JpZ2luID0gUFFmbnVtYmVyKHJlcywgInN1Ym9yaWdpbiIpOwogCWlf c3VicGFzc3dvcmRyZXF1aXJlZCA9IFBRZm51bWJlcihyZXMsICJzdWJwYXNzd29yZHJlcXVpcmVk Iik7CisJaV9zdWJtYXRjaGRkbG93bmVyID0gUFFmbnVtYmVyKHJlcywgInN1Ym1hdGNoZGRsb3du ZXIiKTsKIAogCXN1YmluZm8gPSBwZ19tYWxsb2MobnR1cHMgKiBzaXplb2YoU3Vic2NyaXB0aW9u SW5mbykpOwogCkBAIC00NzY0LDYgKzQ3NjgsOCBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUg KmZvdXQpCiAJCXN1YmluZm9baV0uc3Vib3JpZ2luID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVz LCBpLCBpX3N1Ym9yaWdpbikpOwogCQlzdWJpbmZvW2ldLnN1YnBhc3N3b3JkcmVxdWlyZWQgPQog CQkJcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1YnBhc3N3b3JkcmVxdWlyZWQpKTsK KwkJc3ViaW5mb1tpXS5zdWJtYXRjaGRkbG93bmVyID0KKwkJCXBnX3N0cmR1cChQUWdldHZhbHVl KHJlcywgaSwgaV9zdWJtYXRjaGRkbG93bmVyKSk7CiAKIAkJLyogRGVjaWRlIHdoZXRoZXIgd2Ug d2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxlT2JqZWN0KCYoc3ViaW5mb1tpXS5k b2JqKSwgZm91dCk7CkBAIC00ODQyLDYgKzQ4NDgsOSBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hp dmUgKmZvdXQsIGNvbnN0IFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYgKHBnX3N0cmNh c2VjbXAoc3ViaW5mby0+c3Vib3JpZ2luLCBMT0dJQ0FMUkVQX09SSUdJTl9BTlkpICE9IDApCiAJ CWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiLCBvcmlnaW4gPSAlcyIsIHN1YmluZm8tPnN1Ym9y aWdpbik7CiAKKwlpZiAoc3RyY21wKHN1YmluZm8tPnN1Ym1hdGNoZGRsb3duZXIsICJmIikgPT0g MCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIG1hdGNoX2RkbF9vd25lciA9IGZh bHNlIik7CisKIAlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN5bmNjb21taXQsICJvZmYiKSAhPSAw KQogCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiwgc3luY2hyb25vdXNfY29tbWl0ID0gJXMi LCBmbXRJZChzdWJpbmZvLT5zdWJzeW5jY29tbWl0KSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDlhZTZh MzhlMDAuLmVmZDYzNDc3YTggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgK KysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNjY2LDYgKzY2Niw3IEBAIHR5cGVk ZWYgc3RydWN0IF9TdWJzY3JpcHRpb25JbmZvCiAJY2hhcgkgICAqc3Vic3luY2NvbW1pdDsKIAlj aGFyCSAgICpzdWJwdWJsaWNhdGlvbnM7CiAJY2hhcgkgICAqc3VicGFzc3dvcmRyZXF1aXJlZDsK KwljaGFyCSAgICpzdWJtYXRjaGRkbG93bmVyOwogfSBTdWJzY3JpcHRpb25JbmZvOwogCiAvKgpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3Jp YmUuYwppbmRleCBmYjNlYjY3ZTk4Li5kZWYwNjg2OGJiIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtNjUxNSw3ICs2 NTE1LDcgQEAgZGVzY3JpYmVTdWJzY3JpcHRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wg dmVyYm9zZSkKIAlQR3Jlc3VsdCAgICpyZXM7CiAJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQu cG9wdDsKIAlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBm YWxzZSwgZmFsc2UsIGZhbHNlLAotCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZX07CisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CiAKIAlpZiAocHNldC5zdmVyc2lvbiA8IDEw MDAwMCkKIAl7CkBAIC02NTcyLDggKzY1NzIsMTAgQEAgZGVzY3JpYmVTdWJzY3JpcHRpb25zKGNv bnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAogCQlpZiAocHNldC5zdmVyc2lvbiA+ PSAxNjAwMDApCiAJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAotCQkJCQkJCSAgIiwgc3Vib3Jp Z2luIEFTIFwiJXNcIlxuIiwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgiT3JpZ2luIikpOworCQkJ CQkJCSAgIiwgc3Vib3JpZ2luIEFTIFwiJXNcIlxuIgorCQkJCQkJCSAgIiwgc3VibWF0Y2hkZGxv d25lciBBUyBcIiVzXCJcbiIsCisJCQkJCQkJICBnZXR0ZXh0X25vb3AoIk9yaWdpbiIpLAorCQkJ CQkJCSAgZ2V0dGV4dF9ub29wKCJNYXRjaCBEREwgb3duZXIiKSk7CiAKIAkJYXBwZW5kUFFFeHBC dWZmZXIoJmJ1ZiwKIAkJCQkJCSAgIiwgIHN1YnN5bmNjb21taXQgQVMgXCIlc1wiXG4iCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAppbmRleCA2MzE5ZjU5OGQ4Li5mYTMyZGI0MTJm IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTkwLDYgKzkwLDkgQEAg Q0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lf U0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAogCWJvb2wJCXN1YnBhc3N3b3JkcmVxdWlyZWQ7IC8q IE11c3QgY29ubmVjdGlvbiB1c2UgYSBwYXNzd29yZD8gKi8KIAorCWJvb2wJCXN1Ym1hdGNoZGRs b3duZXI7CS8qIFRydWUgaWYgcmVwbGljYXRlZCBvYmplY3RzIGJ5IERETCByZXBsaWNhdGlvbgor CQkJCQkJCQkJICogc2hvdWxkIG1hdGNoIHRoZSBvcmlnaW5hbCBvd25lciBvbiB0aGUgcHVibGlz aGVyICovCisKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVs ZHMgc3RhcnQgaGVyZSAqLwogCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIg Ki8KIAl0ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9UX05VTEw7CkBAIC0xNDAsNiArMTQz LDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJTGlzdAkgICAqcHVibGljYXRpb25z OwkvKiBMaXN0IG9mIHB1YmxpY2F0aW9uIG5hbWVzIHRvIHN1YnNjcmliZSB0byAqLwogCWNoYXIJ ICAgKm9yaWdpbjsJCQkvKiBPbmx5IHB1Ymxpc2ggZGF0YSBvcmlnaW5hdGluZyBmcm9tIHRoZQog CQkJCQkJCQkgKiBzcGVjaWZpZWQgb3JpZ2luICovCisJYm9vbAkJbWF0Y2hkZGxvd25lcjsgIC8q IEluZGljYXRlcyBpZiByZXBsaWNhdGVkIG9iamVjdHMgYnkgRERMIHJlcGxpY2F0aW9uCisJCQkJ CQkJCSAqIHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwgb3duZXIgb24gdGhlIHB1Ymxpc2hlciAq LwogfSBTdWJzY3JpcHRpb247CiAKIC8qIERpc2FsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0 cmFuc2FjdGlvbnMuICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2RkbF9kZXBhcnNl LmggYi9zcmMvaW5jbHVkZS90Y29wL2RkbF9kZXBhcnNlLmgKaW5kZXggMWEyNzAyYzVhYy4uMmI3 NzU0YmZhYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9kZGxfZGVwYXJzZS5oCisrKyBi L3NyYy9pbmNsdWRlL3Rjb3AvZGRsX2RlcGFyc2UuaApAQCAtMTQsOCArMTQsOCBAQAogCiAjaW5j bHVkZSAidGNvcC9kZXBhcnNlX3V0aWxpdHkuaCIKIAotZXh0ZXJuIGNoYXIgKmRlcGFyc2VfdXRp bGl0eV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCwgYm9vbCB2ZXJib3NlX21vZGUpOwot ZXh0ZXJuIGNoYXIgKmRlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nKGNoYXIgKmpzb25iKTsKK2V4 dGVybiBjaGFyICpkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQs IGJvb2wgaW5jbHVkZV9vd25lciwgYm9vbCB2ZXJib3NlX21vZGUpOworZXh0ZXJuIGNoYXIgKmRl cGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nKGNoYXIgKmpzb25iLCBjaGFyKiogb3duZXIpOwogZXh0 ZXJuIGNoYXIgKmRlcGFyc2VfZHJvcF9jb21tYW5kKGNvbnN0IGNoYXIgKm9iamlkZW50aXR5LCBj b25zdCBjaGFyICpvYmplY3R0eXBlLAogCQkJCQkJCQkgIERyb3BCZWhhdmlvciBiZWhhdmlvcik7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5LmggYi9zcmMv aW5jbHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oCmluZGV4IGE0YTEyMzc3YjguLjg3YTc2MWJi M2UgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5LmgKKysrIGIv c3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaApAQCAtNDgsNiArNDgsNyBAQCB0eXBl ZGVmIHN0cnVjdCBDb2xsZWN0ZWRDb21tYW5kCiAJQ29sbGVjdGVkQ29tbWFuZFR5cGUgdHlwZTsK IAogCWJvb2wJCWluX2V4dGVuc2lvbjsKKwljaGFyCSAgICpyb2xlOwogCU5vZGUJICAgKnBhcnNl dHJlZTsKIAogCXVuaW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1 YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5v dXQKaW5kZXggOWQyNmQ5NDI2MS4uNThmYWFhNzdmZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3Vic2NyaXB0aW9uLm91dApAQCAtMTE1LDE4ICsxMTUsMTggQEAgQ1JFQVRFIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWI0IENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCcgUFUKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBu b3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1h bnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRp b24sIGFuZCByZWZyZXNoIHRoZSBzdWJzY3JpcHRpb24uCiBcZFJzKyByZWdyZXNzX3Rlc3RzdWI0 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwot ICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8 IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBD b25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IG5vbmUgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFy eSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3Jp Z2luIHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29u bmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBub25lICAgfCB0ICAgICAgICAg ICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjQgU0VU IChvcmlnaW4gPSBhbnkpOwogXGRScysgcmVncmVzc190ZXN0c3ViNAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwg T3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVz dHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz dCBvZiBzdWJzY3JpcHRpb25zCisgICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBU d28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IE1hdGNoIERETCBv d25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8 IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAK IERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjM7CkBAIC0xNDQsMTAgKzE0NCwxMCBA QCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2Zvb2Jhcic7 CiBFUlJPUjogIGludmFsaWQgY29ubmVjdGlvbiBzdHJpbmcgc3ludGF4OiBtaXNzaW5nICI9IiBh ZnRlciAiZm9vYmFyIiBpbiBjb25uZWN0aW9uIGluZm8gc3RyaW5nCiAKIFxkUnMrCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFt ZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRp b24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBl cnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5n IHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBNYXRjaCBE REwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAg ICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAg ICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykK IAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgUFVCTElDQVRJT04gdGVz dHB1YjIsIHRlc3RwdWIzIFdJVEggKHJlZnJlc2ggPSBmYWxzZSk7CkBAIC0xNjYsMTAgKzE2Niwx MCBAQCBFUlJPUjogIHVucmVjb2duaXplZCBzdWJzY3JpcHRpb24gcGFyYW1ldGVyOiAiY3JlYXRl X3Nsb3QiCiAtLSBvawogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTS0lQIChs c24gPSAnMC8xMjM0NScpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBP d25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2lu IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNr aXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf dGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIy LHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0MiB8IDAvMTIzNDUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAg ICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAg ICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIz fSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMTIzNDUKICgxIHJvdykKIAogLS0gb2sgLSB3 aXRoIGxzbiA9IE5PTkUKQEAgLTE3OCwxMCArMTc4LDEwIEBAIEFMVEVSIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgU0tJUCAobHNuID0gTk9ORSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNLSVAgKGxzbiA9ICcwLzAnKTsKIEVSUk9SOiAgaW52YWxpZCBXQUwgbG9j YXRpb24gKExTTik6IDAvMAogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBP d25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2lu IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNr aXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf dGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIy LHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0MiB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwg QmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3Ig fCBPcmlnaW4gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwg ZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCiAoMSByb3cpCiAKIEJFR0lOOwpAQCAtMjEzLDEw ICsyMTMsMTAgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gU0VUIChz eW5jaHJvbm91c19jb21taXQgPSBmb29iYXIpOwogRVJST1I6ICBpbnZhbGlkIHZhbHVlIGZvciBw YXJhbWV0ZXIgInN5bmNocm9ub3VzX2NvbW1pdCI6ICJmb29iYXIiCiBISU5UOiAgQXZhaWxhYmxl IHZhbHVlczogbG9jYWwsIHJlbW90ZV93cml0ZSwgcmVtb3RlX2FwcGx5LCBvbiwgb2ZmLgogXGRS cysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3Jp cHRpb25zCi0gICAgICAgIE5hbWUgICAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3 by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMg Y29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWJfZm9v IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1 YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCBsb2NhbCAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QyIHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgICBOYW1lICAgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBC aW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8 IE9yaWdpbiB8IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViX2Zv byB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3Rw dWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgIHwgbG9jYWwgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAogKDEgcm93KQogCiAtLSByZW5hbWUg YmFjayB0byBrZWVwIHRoZSByZXN0IHNpbXBsZQpAQCAtMjQ1LDE5ICsyNDUsMTkgQEAgQ1JFQVRF IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1 dCBpcyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBt dXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJz Y3JpcHRpb24sIGFuZCByZWZyZXNoIHRoZSBzdWJzY3JpcHRpb24uCiBcZFJzKwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9u IHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJy b3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAg ICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi fSAgIHwgdCAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgTWF0Y2ggRERM IG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IHQgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAK IEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChiaW5hcnkgPSBmYWxzZSk7 CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9O RSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNj cmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNv bW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAg ICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAg ICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJz Y3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAg ICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAg ICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgMC8wCiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsK QEAgLTI2OSwyNyArMjY5LDI3IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBXQVJOSU5HOiAg c3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRv IGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxp Y2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgcmVmcmVzaCB0aGUgc3Vi c2NyaXB0aW9uLgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1w aGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IGQg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGlj YXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBv biAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8 IHQgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxsZWwpOwogXGRScysKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwg T3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8 IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28t cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IE1hdGNoIERETCBvd25l ciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNr aXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRF UiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gZmFsc2UpOwog QUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUp OwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3Jp cHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21t aXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAg ICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8 IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAg ICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBC aW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8 IE9yaWdpbiB8IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg IENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAg fCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAg ICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IDAvMAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRpb24gYWxyZWFkeSBleGlzdHMK QEAgLTMwNCwxMCArMzA0LDEwIEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg QUREIFBVQkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0cHViMiBXSVRIIChyZWZyCiBBTFRFUiBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViIEFERCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1 YjIgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWIx IiBpcyBhbHJlYWR5IGluIHN1YnNjcmlwdGlvbiAicmVncmVzc190ZXN0c3ViIgogXGRScysKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlv bnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxl ZCB8ICAgICAgICAgUHVibGljYXRpb24gICAgICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3 by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMg Y29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIsdGVzdHB1YjEs dGVzdHB1YjJ9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICAgICAgUHVibGljYXRpb24g ICAgICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYg ICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJv dykKIAogLS0gZmFpbCAtIHB1YmxpY2F0aW9uIHVzZWQgbW9yZSB0aGFuIG9uY2UKQEAgLTMyMiwx MCArMzIyLDEwIEBAIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWIzIiBpcyBub3QgaW4gc3Vi c2NyaXB0aW9uICJyZWdyZXNzX3Rlc3RzdWIiCiAtLSBvayAtIGRlbGV0ZSBwdWJsaWNhdGlvbnMK IEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgRFJPUCBQVUJMSUNBVElPTiB0ZXN0 cHViMSwgdGVzdHB1YjIgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKIFxkUnMrCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24g fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf dGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwg VHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBNYXRjaCBEREwg b3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAog RFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwpAQCAtMzYxLDEwICszNjEsMTAgQEAg Q1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0 ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24s IHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRo ZSBzdWJzY3JpcHRpb24sIGFuZCByZWZyZXNoIHRoZSBzdWJzY3JpcHRpb24uCiBcZFJzKwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAg IE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1Ymxp Y2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5m byAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSBy ZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0 ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgTWF0 Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8 IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IHAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSBy b3cpCiAKIC0tZmFpbCAtIGFsdGVyIG9mIHR3b19waGFzZSBvcHRpb24gbm90IHN1cHBvcnRlZC4K QEAgLTM3MywxMCArMzczLDEwIEBAIEVSUk9SOiAgdW5yZWNvZ25pemVkIHN1YnNjcmlwdGlvbiBw YXJhbWV0ZXI6ICJ0d29fcGhhc2UiCiAtLSBidXQgY2FuIGFsdGVyIHN0cmVhbWluZyB3aGVuIHR3 b19waGFzZSBlbmFibGVkCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAo c3RyZWFtaW5nID0gdHJ1ZSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5n IHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJv bm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1 YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAg ICAgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYg ICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMg Y29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYg ICAgICB8IG9uICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgdCAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAgLTM4NiwxMCArMzg2LDEw IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBj cmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0 aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJs ZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgcmVmcmVzaCB0aGUgc3Vic2NyaXB0aW9uLgogXGRScysK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0g ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQ dWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNh YmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29u bmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAg fCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBT dHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8 IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBwICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAog KDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9u YW1lID0gTk9ORSk7CkBAIC00MDIsMTggKzQwMiwxOCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBV QgogV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0 ZWQKIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3Jl YXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIHJl ZnJlc2ggdGhlIHN1YnNjcmlwdGlvbi4KIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5 bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNO IAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBv ZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJv bm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rl c3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3IgPSB0cnVlKTsKIFxkUnMr Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwot ICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwg dCAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5m byAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAg ICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK ICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3Rf bmFtZSA9IE5PTkUpOwotLSAKMi4zMC4wLndpbmRvd3MuMgoK --_007_OS0PR01MB571614EE7EEDBF7049DA4EAE94939OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0006-Deparser-and-DDL-replication-for-the-rest-2023_04_04.patch" Content-Description: 0006-Deparser-and-DDL-replication-for-the-rest-2023_04_04.patch Content-Disposition: attachment; filename="0006-Deparser-and-DDL-replication-for-the-rest-2023_04_04.patch"; size=350480; creation-date="Tue, 04 Apr 2023 03:07:06 GMT"; modification-date="Tue, 04 Apr 2023 03:13:04 GMT" Content-Transfer-Encoding: base64 RnJvbSAzMjhiNTkxNGJlZGFkMzFjMWFlY2MyNWJjYzhlMzM1OWFhZTlmYzNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMTA6MjQ6MzkgKzA4MDAKU3ViamVjdDogW1BBVENIIDYv Nl0gRGVwYXJzZXIgYW5kIERETCByZXBsaWNhdGlvbiBmb3IgdGhlIHJlc3QgY29tbWFuZHMuCgot LS0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgIHwgIDIxMSAr LQogc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYyAgICAgICAgICAgICAgICAgfCAgICA5ICst CiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgICAgICAgICB8ICAgIDEgKwog c3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jICAgICAgICAgfCAgIDIxICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy9kZGxfZGVwYXJzZS5jICAgICAgICAgICB8IDY2NDEgKysrKysr KysrKysrKysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgICAgICAg ICB8ICAgMzQgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgICAg fCAgIDYwICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jICAgICAgICAgICAgICB8 ICAgIDYgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMgfCAg IDg4ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICB8ICAg MTkgKy0KIHNyYy9iYWNrZW5kL3Rjb3AvY21kdGFnLmMgICAgICAgICAgICAgICAgICAgIHwgICAx MCArLQogc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgICAgICAgICAgICAgICAgfCAgICA0 ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmVncHJvYy5jICAgICAgICAgICAgICB8ICAgNTEg Kwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgfCAgMjkzICst CiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICB8ICAgIDEgKwog c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgfCAgIDIzICstCiBz cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICstCiBzcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggICAgICAgICB8ICAgIDQgKwogc3JjL2lu Y2x1ZGUvY29tbWFuZHMvY29sbGF0aW9uY21kcy5oICAgICAgICAgfCAgICAzICstCiBzcmMvaW5j bHVkZS9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmggICAgICAgICB8ICAgIDIgKwogc3JjL2luY2x1 ZGUvdGNvcC9jbWR0YWcuaCAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBzcmMvaW5jbHVk ZS90Y29wL2RkbF9kZXBhcnNlLmggICAgICAgICAgICAgICB8ICAgIDIgKwogc3JjL2luY2x1ZGUv dGNvcC9kZXBhcnNlX3V0aWxpdHkuaCAgICAgICAgICAgfCAgICA4ICsKIHNyYy9pbmNsdWRlL3V0 aWxzL2FjbC5oICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS91dGls cy9hY2xjaGtfaW50ZXJuYWwuaCAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMv YnVpbHRpbnMuaCAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3J1 bGV1dGlscy5oICAgICAgICAgICAgICAgIHwgICAxMCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BzcWwub3V0ICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHVibGljYXRpb24ub3V0ICAgIHwgIDQyMCArLQogMzAgZmlsZXMgY2hhbmdlZCwgNzM3NCBp bnNlcnRpb25zKCspLCA1NzggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0 aW9uLnNnbWwKaW5kZXggZTE0YWIxZWQwZS4uZmZjMzkwYjkxNyAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0xNDgwLDYgKzE0ODAsMTEgQEAgdGVzdF9zdWI9IyBTRUxF Q1QgKiBGUk9NIHQxIE9SREVSIEJZIGlkOwogICA8L3BhcmE+CiAKICAgPGl0ZW1pemVkbGlzdD4K KyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICAgYWxsOiB0aGlzIG9wdGlvbiBl bmFibGVzIHJlcGxpY2F0aW9uIG9mIGFsbCBzdXBwb3J0ZWQgRERMIGNvbW1hbmRzLgorICAgICAg PC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CiAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+CiAg ICAgICAgIHRhYmxlOiB0aGlzIG9wdGlvbiBlbmFibGVzIHJlcGxpY2F0aW9uIG9mIFRhYmxlIERE TCBjb21tYW5kcywKQEAgLTE1NTAsMjIgKzE1NTUsMjIgQEAgQUxURVIgUFVCTElDQVRJT04gbXlw dWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgIDx0Ym9keT4KICAgICAgICA8cm93PgogICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIEFHR1JFR0FURTwvbGl0ZXJh bD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwv bGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAg ICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 bGl0ZXJhbD5BTFRFUiBDQVNUPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIENPTExBVElPTjwvbGl0ZXJh bD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwv bGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAg ICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 bGl0ZXJhbD5BTFRFUiBDT05WRVJTSU9OPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93 PgpAQCAtMTU3NSwxMiArMTU4MCwxMiBAQCBBTFRFUiBQVUJMSUNBVElPTiBteXB1YiBTRVQgKGRk bCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgREVGQVVMVCBQUklWSUxFR0VTPC9saXRlcmFs PjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9s aXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAg ICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkFMVEVSIERPTUFJTjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KQEAg LTE1OTAsMjIgKzE1OTUsMjIgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwgPSAn dGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIEVYVEVOU0lPTjwvbGl0ZXJhbD48L2VudHJ5PgotICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5 PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAg ICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBG T1JFSUdOIERBVEEgV1JBUFBFUjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBGT1JFSUdOIFRBQkxFPC9s aXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPkFMVEVSIEZVTkNUSU9OPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8 cm93PgpAQCAtMTYxNSw3ICsxNjIwLDcgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChk ZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIExBTkdVQUdFPC9saXRlcmFsPjwvZW50cnk+ Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwv ZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jv dz4KICAgICAgICA8cm93PgpAQCAtMTYyNSwzMiArMTYzMCwzMiBAQCBBTFRFUiBQVUJMSUNBVElP TiBteXB1YiBTRVQgKGRkbCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+ CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgTUFURVJJQUxJWkVE IFZJRVc8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgT1BFUkFUT1I8L2xpdGVyYWw+PC9lbnRyeT4KLSAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRy eT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93Pgog ICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIg T1BFUkFUT1IgQ0xBU1M8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgT1BFUkFUT1IgRkFNSUxZPC9saXRl cmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5Y PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K ICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkFMVEVSIFBPTElDWTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4K ICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBQUk9DRURVUkU8L2xp dGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Plg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CkBAIC0xNjY1LDMyICsxNjcwLDMyIEBAIEFM VEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+ CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRF UiBST1VUSU5FPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFJVTEVSPC9saXRlcmFsPjwvZW50cnk+Ci0g ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50 cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4K ICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVS IFNDSEVNQTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBTRVFVRU5DRTwvbGl0ZXJhbD48L2VudHJ5Pgot ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2Vu dHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+ CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRF UiBTRVJWRVI8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgU1RBVElTVElDUzwvbGl0ZXJhbD48L2VudHJ5 PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48 L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9y b3c+CiAgICAgICAgPHJvdz4KQEAgLTE3MTUsMjIgKzE3MjAsMjIgQEAgQUxURVIgUFVCTElDQVRJ T04gbXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93 PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFRFWFQgU0VBUkNI IENPTkZJR1VSQVRJT048L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgVEVYVCBTRUFSQ0ggRElDVElPTkFS WTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwv ZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBURVhUIFNFQVJDSCBQQVJTRVI8L2xpdGVyYWw+PC9lbnRy eT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+ PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwv cm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+ QUxURVIgVEVYVCBTRUFSQ0ggVEVNUExBVEU8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxy b3c+CkBAIC0xNzQwLDIyICsxNzQ1LDIyIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAo ZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBUUklHR0VSPC9saXRlcmFsPjwvZW50cnk+ Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwv ZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jv dz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFM VEVSIFRZUEU8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgVVNFUiBNQVBQSU5HPC9saXRlcmFsPjwvZW50 cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFs PjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8 L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFs PkFMVEVSIFZJRVc8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CkBAIC0xODAwLDcg KzE4MDUsNyBAQCBBTFRFUiBQVUJMSUNBVElPTiBteXB1YiBTRVQgKGRkbCA9ICd0YWJsZScpOwog ICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+Q09NTUVOVDwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KQEAgLTE4 MjUsMzIgKzE4MzAsMzIgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwgPSAndGFi bGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBBQ0NFU1MgTUVUSE9EPC9saXRlcmFsPjwvZW50cnk+Ci0g ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50 cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4K ICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFU RSBBR0dSRUdBVEU8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIENBU1Q8L2xpdGVyYWw+PC9lbnRyeT4K LSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9l bnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93 PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JF QVRFIENPTExBVElPTjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNl bnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgQ09OU1RSQUlOVDwvbGl0ZXJhbD48 L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0 ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAg ICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0 ZXJhbD5DUkVBVEUgQ09OVkVSU0lPTjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4K QEAgLTE4NjAsNyArMTg2NSw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAoZGRsID0g J3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgRE9NQUlOPC9saXRlcmFsPjwvZW50cnk+Ci0gICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+ CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAg ICAgICA8cm93PgpAQCAtMTg3MCwyMiArMTg3NSwyMiBAQCBBTFRFUiBQVUJMSUNBVElPTiBteXB1 YiBTRVQgKGRkbCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIEVYVEVOU0lPTjwvbGl0ZXJh bD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwv bGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAg ICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 bGl0ZXJhbD5DUkVBVEUgRk9SRUlHTiBEQVRBIFdSQVBQRVI8L2xpdGVyYWw+PC9lbnRyeT4KLSAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRy eT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93Pgog ICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRF IEZPUkVJR04gVEFCTEU8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIEZVTkNUSU9OPC9saXRlcmFsPjwv ZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRl cmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAg ICA8L3Jvdz4KICAgICAgICA8cm93PgpAQCAtMTg5NSwzNyArMTkwMCwzNyBAQCBBTFRFUiBQVUJM SUNBVElPTiBteXB1YiBTRVQgKGRkbCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAg IDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIExBTkdV QUdFPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48 bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBNQVRFUklBTElaRUQgVklFVzwvbGl0ZXJhbD48L2Vu dHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJh bD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAg PC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJh bD5DUkVBVEUgT1BFUkFUT1I8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIE9QRVJBVE9SIENMQVNTPC9s aXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPkNSRUFURSBPUEVSQVRPUiBGQU1JTFk8L2xpdGVyYWw+PC9lbnRyeT4KLSAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRy eT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93Pgog ICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRF IFBPTElDWTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgUFJPQ0VEVVJFPC9saXRlcmFsPjwvZW50cnk+ Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwv ZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jv dz4KICAgICAgICA8cm93PgpAQCAtMTk0MCwyNyArMTk0NSwyNyBAQCBBTFRFUiBQVUJMSUNBVElP TiBteXB1YiBTRVQgKGRkbCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+ CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFJVTEU8L2xpdGVy YWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8 L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgog ICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+Q1JFQVRFIFNDSEVNQTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4K ICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgU0VRVUVOQ0U8L2xp dGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Plg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+Q1JFQVRFIFNFUlZFUjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJv dz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgU1RBVElTVElD UzwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwv ZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KQEAgLTE5ODUsNDcgKzE5OTAsNDcg QEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8 L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFs PkNSRUFURSBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OPC9saXRlcmFsPjwvZW50cnk+Ci0gICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+ CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAg ICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBU RVhUIFNFQVJDSCBESUNUSU9OQVJZPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93Pgog ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBURVhUIFNFQVJDSCBQ QVJTRVI8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFRFWFQgU0VBUkNIIFRFTVBMQVRFPC9saXRlcmFs PjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9s aXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAg ICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkNSRUFURSBUUkFOU0ZPUk08L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+ CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFRSSUdHRVI8L2xp dGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Plg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+Q1JFQVRFIFRZUEU8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+ CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFVTRVIgTUFQUElO RzwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwv ZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgVklFVzwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAg PHJvdz4KQEAgLTIwNTUsNyArMjA2MCw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAo ZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5ESVNDQVJEIEFMTDwvbGl0ZXJhbD48L2VudHJ5Pgot ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2Vu dHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+ CiAgICAgICAgPHJvdz4KQEAgLTIwODAsMzIgKzIwODUsMzIgQEAgQUxURVIgUFVCTElDQVRJT04g bXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93Pgog ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgQUNDRVNTIE1FVEhPRDwv bGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50 cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48bGl0ZXJhbD5EUk9QIEFHR1JFR0FURTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAg PHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIENBU1Q8L2xp dGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Plg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+RFJPUCBDT0xMQVRJT048L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxy b3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBDT05TVFJBSU5U PC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9l bnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjxsaXRlcmFsPkRST1AgQ09OVkVSU0lPTjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5Pgog ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAg ICAgPHJvdz4KQEAgLTIxMTUsNyArMjEyMCw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIFNF VCAoZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIERPTUFJTjwvbGl0ZXJhbD48L2VudHJ5 PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48 L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9y b3c+CiAgICAgICAgPHJvdz4KQEAgLTIxMjUsMjIgKzIxMzAsMjIgQEAgQUxURVIgUFVCTElDQVRJ T04gbXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93 PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgRVhURU5TSU9OPC9s aXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPkRST1AgRk9SRUlHTiBEQVRBIFdSQVBQRVI8L2xpdGVyYWw+PC9lbnRyeT4K LSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9l bnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93 PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJP UCBGT1JFSUdOIFRBQkxFPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgRlVOQ1RJT048L2xpdGVyYWw+PC9l bnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVy YWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAg IDwvcm93PgogICAgICAgIDxyb3c+CkBAIC0yMTUwLDI3ICsyMTU1LDI3IEBAIEFMVEVSIFBVQkxJ Q0FUSU9OIG15cHViIFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAg PHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIExBTkdVQUdF PC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9l bnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjxsaXRlcmFsPkRST1AgTUFURVJJQUxJWkVEIFZJRVc8L2xpdGVyYWw+PC9lbnRyeT4K LSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9l bnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93 PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJP UCBPUEVSQVRPUjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNl bnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIE9QRVJBVE9SIENMQVNTPC9saXRlcmFsPjwv ZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRl cmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAg ICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRl cmFsPkRST1AgT1BFUkFUT1IgRkFNSUxZPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93 PgpAQCAtMjE4MCwxMiArMjE4NSwxMiBAQCBBTFRFUiBQVUJMSUNBVElPTiBteXB1YiBTRVQgKGRk bCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBQT0xJQ1k8L2xpdGVyYWw+PC9lbnRyeT4KLSAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRy eT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93Pgog ICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBQ Uk9DRURVUkU8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CkBAIC0yMjAwLDMyICsy MjA1LDMyIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAg ICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 bGl0ZXJhbD5EUk9QIFJPVVRJTkU8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBSVUxFPC9saXRlcmFsPjwv ZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRl cmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAg ICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRl cmFsPkRST1AgU0NIRU1BPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgU0VRVUVOQ0U8L2xpdGVyYWw+PC9l bnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVy YWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAg IDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVy YWw+RFJPUCBTRVJWRVI8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBTVEFUSVNUSUNTPC9saXRlcmFsPjwv ZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRl cmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAg ICA8L3Jvdz4KICAgICAgICA8cm93PgpAQCAtMjI0NSw0NyArMjI1MCw0NyBAQCBBTFRFUiBQVUJM SUNBVElPTiBteXB1YiBTRVQgKGRkbCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAg IDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBURVhUIFNF QVJDSCBDT05GSUdVUkFUSU9OPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgVEVYVCBTRUFSQ0ggRElDVElP TkFSWTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFRFWFQgU0VBUkNIIFBBUlNFUjwvbGl0ZXJhbD48L2Vu dHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJh bD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAg PC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJh bD5EUk9QIFRFWFQgU0VBUkNIIFRFTVBMQVRFPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8 cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgVFJBTlNGT1JN PC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9l bnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjxsaXRlcmFsPkRST1AgVFJJR0dFUjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAg PHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFRZUEU8L2xp dGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Plg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+RFJPUCBVU0VSIE1BUFBJTkc8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAg IDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBWSUVXPC9s aXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgpAQCAtMjMwNSw3ICsyMzEwLDcgQEAgQUxU RVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4K ICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkdSQU5U PC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9l bnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgpAQCAtMjMxNSw3ICsyMzIwLDcgQEAg QUxURVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jv dz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPklN UE9SVCBGT1JFSUdOIFNDSEVNQTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KQEAg LTIzNzAsNyArMjM3NSw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAoZGRsID0gJ3Rh YmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48bGl0ZXJhbD5SRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXPC9saXRlcmFsPjwvZW50 cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFs PjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8 L3Jvdz4KICAgICAgICA8cm93PgpAQCAtMjM5MCw3ICsyMzk1LDcgQEAgQUxURVIgUFVCTElDQVRJ T04gbXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93 PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPlJFVk9LRTwvbGl0ZXJhbD48 L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0 ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAg ICAgPC9yb3c+CiAgICAgICAgPHJvdz4KQEAgLTI0MTUsNyArMjQyMCw3IEBAIEFMVEVSIFBVQkxJ Q0FUSU9OIG15cHViIFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAg PHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5TRUNVUklUWSBMQUJF TDwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwv ZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCmluZGV4 IDQ1Y2RjZDNkYzYuLjRiNWEzYmE5NTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv YWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwpAQCAtMTI5LDcgKzEy OSw2IEBAIHN0YXRpYyB2b2lkIGV4cGFuZF9hbGxfY29sX3ByaXZpbGVnZXMoT2lkIHRhYmxlX29p ZCwgRm9ybV9wZ19jbGFzcyBjbGFzc0Zvcm0sCiAJCQkJCQkJCQkgIEFjbE1vZGUgKmNvbF9wcml2 aWxlZ2VzLAogCQkJCQkJCQkJICBpbnQgbnVtX2NvbF9wcml2aWxlZ2VzKTsKIHN0YXRpYyBBY2xN b2RlIHN0cmluZ190b19wcml2aWxlZ2UoY29uc3QgY2hhciAqcHJpdm5hbWUpOwotc3RhdGljIGNv bnN0IGNoYXIgKnByaXZpbGVnZV90b19zdHJpbmcoQWNsTW9kZSBwcml2aWxlZ2UpOwogc3RhdGlj IEFjbE1vZGUgcmVzdHJpY3RfYW5kX2NoZWNrX2dyYW50KGJvb2wgaXNfZ3JhbnQsIEFjbE1vZGUg YXZhaWxfZ29wdGlvbnMsCiAJCQkJCQkJCQkJYm9vbCBhbGxfcHJpdnMsIEFjbE1vZGUgcHJpdmls ZWdlcywKIAkJCQkJCQkJCQlPaWQgb2JqZWN0SWQsIE9pZCBncmFudG9ySWQsCkBAIC0zODUsMTEg KzM4NCwxMCBAQCBFeGVjdXRlR3JhbnRTdG10KEdyYW50U3RtdCAqc3RtdCkKIAlMaXN0Q2VsbCAg ICpjZWxsOwogCWNvbnN0IGNoYXIgKmVycm9ybXNnOwogCUFjbE1vZGUJCWFsbF9wcml2aWxlZ2Vz OworCU9pZAkJCWdyYW50b3IgPSBJbnZhbGlkT2lkOwogCiAJaWYgKHN0bXQtPmdyYW50b3IpCiAJ ewotCQlPaWQJCQlncmFudG9yOwotCiAJCWdyYW50b3IgPSBnZXRfcm9sZXNwZWNfb2lkKHN0bXQt PmdyYW50b3IsIGZhbHNlKTsKIAogCQkvKgpAQCAtNDA4LDYgKzQwNiw5IEBAIEV4ZWN1dGVHcmFu dFN0bXQoR3JhbnRTdG10ICpzdG10KQogCWlzdG10LmlzX2dyYW50ID0gc3RtdC0+aXNfZ3JhbnQ7 CiAJaXN0bXQub2JqdHlwZSA9IHN0bXQtPm9ianR5cGU7CiAKKwkvKiBDb3B5IHRoZSBncmFudG9y IGlkIG5lZWRlZCBmb3IgRERMIGRlcGFyc2luZyBvZiBHcmFudCAqLworCWlzdG10LmdyYW50b3Jf dWlkID0gZ3JhbnRvcjsKKwogCS8qIENvbGxlY3QgdGhlIE9JRHMgb2YgdGhlIHRhcmdldCBvYmpl Y3RzICovCiAJc3dpdGNoIChzdG10LT50YXJndHlwZSkKIAl7CkBAIC0yNjIyLDcgKzI2MjMsNyBA QCBzdHJpbmdfdG9fcHJpdmlsZWdlKGNvbnN0IGNoYXIgKnByaXZuYW1lKQogCXJldHVybiAwOwkJ CQkJLyogYXBwZWFzZSBjb21waWxlciAqLwogfQogCi1zdGF0aWMgY29uc3QgY2hhciAqCitjb25z dCBjaGFyICoKIHByaXZpbGVnZV90b19zdHJpbmcoQWNsTW9kZSBwcml2aWxlZ2UpCiB7CiAJc3dp dGNoIChwcml2aWxlZ2UpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggMWEz MTA1ZTAyNS4uYmI4ZWU2MDViZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpA QCAtMTAyOCw2ICsxMDI4LDcgQEAgR2V0UHVibGljYXRpb24oT2lkIHB1YmlkKQogCXB1Yi0+cHVi YWN0aW9ucy5wdWJ1cGRhdGUgPSBwdWJmb3JtLT5wdWJ1cGRhdGU7CiAJcHViLT5wdWJhY3Rpb25z LnB1YmRlbGV0ZSA9IHB1YmZvcm0tPnB1YmRlbGV0ZTsKIAlwdWItPnB1YmFjdGlvbnMucHVidHJ1 bmNhdGUgPSBwdWJmb3JtLT5wdWJ0cnVuY2F0ZTsKKwlwdWItPnB1YmFjdGlvbnMucHViZGRsX2Fs bCA9IHB1YmZvcm0tPnB1YmRkbF9hbGw7CiAJcHViLT5wdWJhY3Rpb25zLnB1YmRkbF90YWJsZSA9 IHB1YmZvcm0tPnB1YmRkbF90YWJsZTsKIAlwdWItPnB1YmFjdGlvbnMucHViZGRsX2luZGV4ID0g cHViZm9ybS0+cHViZGRsX2luZGV4OwogCXB1Yi0+cHVidmlhcm9vdCA9IHB1YmZvcm0tPnB1YnZp YXJvb3Q7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMKaW5kZXggNDVkZTc4MzUyYy4u MTJmODk2MDdkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21k cy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYwpAQCAtNTAsOSAr NTAsMjEgQEAgdHlwZWRlZiBzdHJ1Y3QKIAogLyoKICAqIENSRUFURSBDT0xMQVRJT04KKyAqCisg KiBwc3RhdGU6IHBhcnNlIHN0YXRlLgorICogbmFtZXM6IHF1YWxpZmllZCBjb2xsYXRpb24gbmFt ZXMgKGEgbGlzdCBvZiBTdHJpbmcpLgorICogcGFyYW1ldGVyczogY29sbGF0aW9uIGF0dHJpYnV0 ZXMgKGEgbGlzdCBvZiBEZWZFbGVtKS4KKyAqIGlmX25vdF9leGlzdHM6IGlmIHRydWUsIGRvbid0 IGZhaWwgb24gZHVwbGljYXRlIG5hbWUsIGp1c3QgcHJpbnQgYSBub3RpY2UKKyAqIGFuZCByZXR1 cm4gSW52YWxpZE9pZC4KKyAqIGZyb21fZXhpc3RpbmdfY29sbGlkOiBvdXRwdXQgYXJndW1lbnQg d2hpY2gsIGlmIG5vdCBOVUxMLCBpcyBzZXQgdG8gdGhlCisgKiBhZGRyZXNzIG9mIGV4aXN0aW5n IGNvbGxhdGlvbiB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSBpbiBjYXNlIG9mCisgKiBDUkVBVEUg Q09MTEFUSU9OIGFueV9uYW1lIEZST00gZXhpc3RpbmdfY29sbGF0aW9uLgorICoKKyAqIElmIHN1 Y2Nlc3NmdWwsIHJldHVybnMgdGhlIGFkZHJlc3Mgb2YgdGhlIG5ldyBjb2xsYXRpb24uCiAgKi8K IE9iamVjdEFkZHJlc3MKLURlZmluZUNvbGxhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3Qg Km5hbWVzLCBMaXN0ICpwYXJhbWV0ZXJzLCBib29sIGlmX25vdF9leGlzdHMpCitEZWZpbmVDb2xs YXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpuYW1lcywgTGlzdCAqcGFyYW1ldGVycywK KwkJCQlib29sIGlmX25vdF9leGlzdHMsIE9iamVjdEFkZHJlc3MgKmZyb21fZXhpc3RpbmdfY29s bGlkKQogewogCWNoYXIJICAgKmNvbGxOYW1lOwogCU9pZAkJCWNvbGxOYW1lc3BhY2U7CkBAIC0x NDMsNiArMTU1LDEzIEBAIERlZmluZUNvbGxhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3Qg Km5hbWVzLCBMaXN0ICpwYXJhbWV0ZXJzLCBib29sIGlmX25vdF9lCiAJCWlmICghSGVhcFR1cGxl SXNWYWxpZCh0cCkpCiAJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgY29s bGF0aW9uICV1IiwgY29sbGlkKTsKIAorCQkvKgorCQkgKiBNYWtlIGZyb20gZXhpc3RpbmcgY29s bGF0aW9uaWQgYXZhaWxhYmxlIHRvIGNhbGxlcnMgZm9yIHN0YXRlbWVudHMKKwkJICogc3VjaCBh cyBDUkVBVEUgQ09MTEFUSU9OIGFueV9uYW1lIEZST00gZXhpc3RpbmdfY29sbGF0aW9uLgorCQkg Ki8KKwkJaWYgKGZyb21fZXhpc3RpbmdfY29sbGlkICYmIE9pZElzVmFsaWQoY29sbGlkKSkKKwkJ CU9iamVjdEFkZHJlc3NTZXQoKmZyb21fZXhpc3RpbmdfY29sbGlkLCBDb2xsYXRpb25SZWxhdGlv bklkLCBjb2xsaWQpOworCiAJCWNvbGxwcm92aWRlciA9ICgoRm9ybV9wZ19jb2xsYXRpb24pIEdF VFNUUlVDVCh0cCkpLT5jb2xscHJvdmlkZXI7CiAJCWNvbGxpc2RldGVybWluaXN0aWMgPSAoKEZv cm1fcGdfY29sbGF0aW9uKSBHRVRTVFJVQ1QodHApKS0+Y29sbGlzZGV0ZXJtaW5pc3RpYzsKIAkJ Y29sbGVuY29kaW5nID0gKChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RSVUNUKHRwKSktPmNvbGxl bmNvZGluZzsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9kZXBhcnNlLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfZGVwYXJzZS5jCmluZGV4IDVkODUwNzBhODUuLmZh NGVmN2I5NzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9kZXBhcnNlLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsX2RlcGFyc2UuYwpAQCAtNTksNiArNTksOCBA QAogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3BvbGljeS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfcHVibGljYXRpb25fcmVsLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlv bl9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3JhbmdlLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19yZXdyaXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zZXF1ZW5jZS5oIgpA QCAtNzEsNiArNzMsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfdXNlcl9tYXBwaW5nLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgi CisjaW5jbHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCiAjaW5jbHVk ZSAiZm9yZWlnbi9mb3JlaWduLmgiCkBAIC0xNTksNiArMTYyLDcgQEAgYm9vbAkJdmVyYm9zZSA9 IHRydWU7CiAKIHN0YXRpYyB2b2lkIGFwcGVuZF9hcnJheV9vYmplY3QoT2JqVHJlZSAqdHJlZSwg Y2hhciAqc3ViX2ZtdCwgTGlzdCAqYXJyYXkpOwogc3RhdGljIHZvaWQgYXBwZW5kX2Jvb2xfb2Jq ZWN0KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQsIGJvb2wgdmFsdWUpOworc3RhdGljIHZv aWQgYXBwZW5kX2Zsb2F0X29iamVjdChPYmpUcmVlICp0cmVlLCBjaGFyICpzdWJfZm10LCBmbG9h dDggdmFsdWUpOwogc3RhdGljIHZvaWQgYXBwZW5kX251bGxfb2JqZWN0KE9ialRyZWUgKnRyZWUs IGNoYXIgKnN1Yl9mbXQpOwogc3RhdGljIHZvaWQgYXBwZW5kX29iamVjdF9vYmplY3QoT2JqVHJl ZSAqdHJlZSwgY2hhciAqc3ViX2ZtdCwgT2JqVHJlZSAqdmFsdWUpOwogc3RhdGljIGNoYXIgKmFw cGVuZF9vYmplY3RfdG9fZm9ybWF0X3N0cmluZyhPYmpUcmVlICp0cmVlLCBjaGFyICpzdWJfZm10 KTsKQEAgLTE2OCwxMSArMTcyLDIxIEBAIHN0YXRpYyB2b2lkIGFwcGVuZF9zdHJpbmdfb2JqZWN0 KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQsIGNoYXIgKm5hbWUsCiBzdGF0aWMgdm9pZCBm b3JtYXRfdHlwZV9kZXRhaWxlZChPaWQgdHlwZV9vaWQsIGludDMyIHR5cGVtb2QsCiAJCQkJCQkJ CSBPaWQgKm5zcGlkLCBjaGFyICoqdHlwbmFtZSwgY2hhciAqKnR5cGVtb2RzdHIsCiAJCQkJCQkJ CSBib29sICp0eXBhcnJheSk7CitzdGF0aWMgTGlzdCAqRnVuY3Rpb25HZXREZWZhdWx0cyh0ZXh0 ICpwcm9hcmdkZWZhdWx0cyk7CiBzdGF0aWMgT2JqRWxlbSAqbmV3X29iamVjdChPYmpUeXBlIHR5 cGUsIGNoYXIgKm5hbWUpOwogc3RhdGljIE9ialRyZWUgKm5ld19vYmp0cmVlX2Zvcl9xdWFsbmFt ZV9pZChPaWQgY2xhc3NJZCwgT2lkIG9iamVjdElkKTsKK3N0YXRpYyBPYmpUcmVlICpuZXdfb2Jq dHJlZV9mb3Jfcm9sZXNwZWMoUm9sZVNwZWMgKnNwZWMpOwogc3RhdGljIE9iakVsZW0gKm5ld19v YmplY3Rfb2JqZWN0KE9ialRyZWUgKnZhbHVlKTsKIHN0YXRpYyBPYmpUcmVlICpuZXdfb2JqdHJl ZV9WQShjaGFyICpmbXQsIGludCBudW1vYmpzLC4uLik7CitzdGF0aWMgT2JqVHJlZSAqbmV3X29i anRyZWUoY2hhciAqZm10KTsKK3N0YXRpYyBPYmpFbGVtICpuZXdfc3RyaW5nX29iamVjdChjaGFy ICp2YWx1ZSk7CiBzdGF0aWMgSnNvbmJWYWx1ZSAqb2JqdHJlZV90b19qc29uYl9yZWMoT2JqVHJl ZSAqdHJlZSwgSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgY2hhciAqb3duZXIpOworc3RhdGljIHZv aWQgcGdfZ2V0X2luZGV4ZGVmX2RldGFpbGVkKE9pZCBpbmRleHJlbGlkLAorCQkJCQkJCQkJIGNo YXIgKippbmRleF9hbSwKKwkJCQkJCQkJCSBjaGFyICoqZGVmaW5pdGlvbiwKKwkJCQkJCQkJCSBj aGFyICoqcmVsb3B0aW9ucywKKwkJCQkJCQkJCSBjaGFyICoqdGFibGVzcGFjZSwKKwkJCQkJCQkJ CSBjaGFyICoqd2hlcmVDbGF1c2UpOwogc3RhdGljIGNoYXIgKlJlbGF0aW9uR2V0Q29sdW1uRGVm YXVsdChSZWxhdGlvbiByZWwsIEF0dHJOdW1iZXIgYXR0bm8sCiAJCQkJCQkJCQkgIExpc3QgKmRw Y29udGV4dCwgTGlzdCAqKmV4cHJzKTsKIApAQCAtMTgwLDggKzE5NCwxOCBAQCBzdGF0aWMgT2Jq VHJlZSAqZGVwYXJzZV9Db2x1bW5EZWYoUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKmRwY29udGV4 dCwgYm9vbCBjb21wbwogCQkJCQkJCQkgIENvbHVtbkRlZiAqY29sZGVmLCBib29sIGlzX2FsdGVy LCBMaXN0ICoqZXhwcnMpOwogc3RhdGljIE9ialRyZWUgKmRlcGFyc2VfQ29sdW1uSWRlbnRpdHko T2lkIHNlcXJlbGlkLCBjaGFyIGlkZW50aXR5LCBib29sIGFsdGVyX3RhYmxlKTsKIHN0YXRpYyBP YmpUcmVlICpkZXBhcnNlX0NvbHVtblNldE9wdGlvbnMoQWx0ZXJUYWJsZUNtZCAqc3ViY21kKTsK K3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX0RlZmluZVN0bXRfQWdncmVnYXRlKE9pZCBvYmplY3RJ ZCwgRGVmaW5lU3RtdCAqZGVmaW5lKTsKK3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX0RlZmluZVN0 bXRfQ29sbGF0aW9uKE9pZCBvYmplY3RJZCwgRGVmaW5lU3RtdCAqZGVmaW5lLAorCQkJCQkJCQkJ CQkgT2JqZWN0QWRkcmVzcyBmcm9tQ29sbGlkKTsKK3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX0Rl ZmluZVN0bXRfT3BlcmF0b3IoT2lkIG9iamVjdElkLCBEZWZpbmVTdG10ICpkZWZpbmUpOworc3Rh dGljIE9ialRyZWUgKmRlcGFyc2VfRGVmaW5lU3RtdF9UeXBlKE9pZCBvYmplY3RJZCwgRGVmaW5l U3RtdCAqZGVmaW5lKTsKK3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX0RlZmluZVN0bXRfVFNDb25m aWcoT2lkIG9iamVjdElkLCBEZWZpbmVTdG10ICpkZWZpbmUsIE9iamVjdEFkZHJlc3MgY29waWVk KTsKK3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX0RlZmluZVN0bXRfVFNQYXJzZXIoT2lkIG9iamVj dElkLCBEZWZpbmVTdG10ICpkZWZpbmUpOworc3RhdGljIE9ialRyZWUgKmRlcGFyc2VfRGVmaW5l U3RtdF9UU0RpY3Rpb25hcnkoT2lkIG9iamVjdElkLCBEZWZpbmVTdG10ICpkZWZpbmUpOworc3Rh dGljIE9ialRyZWUgKmRlcGFyc2VfRGVmaW5lU3RtdF9UU1RlbXBsYXRlKE9pZCBvYmplY3RJZCwg RGVmaW5lU3RtdCAqZGVmaW5lKTsKIAogc3RhdGljIE9ialRyZWUgKmRlcGFyc2VfRGVmRWxlbShE ZWZFbGVtICplbGVtLCBib29sIGlzX3Jlc2V0KTsKK3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX0Z1 bmN0aW9uU2V0KFZhcmlhYmxlU2V0S2luZCBraW5kLCBjaGFyICpuYW1lLCBjaGFyICp2YWx1ZSk7 CiBzdGF0aWMgT2JqVHJlZSAqZGVwYXJzZV9PbkNvbW1pdENsYXVzZShPbkNvbW1pdEFjdGlvbiBv cHRpb24pOwogc3RhdGljIE9ialRyZWUgKmRlcGFyc2VfUmVsU2V0T3B0aW9ucyhBbHRlclRhYmxl Q21kICpzdWJjbWQpOwogCkBAIC0xOTAsNiArMjE0LDcgQEAgc3RhdGljIGlubGluZSBPYmpFbGVt ICpkZXBhcnNlX1NlcV9DeWNsZShGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEsIGJvb2wgYWx0ZXJf dGEKIHN0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFfSW5jcmVtZW50QnkoRm9ybV9w Z19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKTsKIHN0YXRpYyBpbmxpbmUgT2Jq RWxlbSAqZGVwYXJzZV9TZXFfTWludmFsdWUoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29s IGFsdGVyX3RhYmxlKTsKIHN0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFfTWF4dmFs dWUoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKTsKK3N0YXRpYyBP YmpFbGVtICpkZXBhcnNlX1NlcV9Pd25lZEJ5KE9pZCBzZXF1ZW5jZUlkLCBib29sIGFsdGVyX3Rh YmxlKTsKIHN0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFfUmVzdGFydChpbnQ2NCBs YXN0X3ZhbHVlKTsKIHN0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFfU3RhcnR3aXRo KEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSk7CiBzdGF0aWMgaW5s aW5lIE9iakVsZW0gKmRlcGFyc2VfU2VxX0FzKEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSk7CkBA IC0yMDEsMTAgKzIyNiwxNSBAQCBzdGF0aWMgaW5saW5lIE9iakVsZW0gKmRlcGFyc2VfVHlwZV9U eXBtb2RfT3V0KEZvcm1fcGdfdHlwZSB0eXBGb3JtKTsKIHN0YXRpYyBpbmxpbmUgT2JqRWxlbSAq ZGVwYXJzZV9UeXBlX0FuYWx5emUoRm9ybV9wZ190eXBlIHR5cEZvcm0pOwogc3RhdGljIGlubGlu ZSBPYmpFbGVtICpkZXBhcnNlX1R5cGVfU3Vic2NyaXB0KEZvcm1fcGdfdHlwZSB0eXBGb3JtKTsK IAorc3RhdGljIE9ialRyZWUgKmRlcGFyc2VfRmR3T3B0aW9ucyhMaXN0ICpvcHRpb25zLCBjaGFy ICpjb2xuYW1lLAorCQkJCQkJCQkgICBib29sIGFsdGVyY29sb3B0aW9ucyk7CisKIHN0YXRpYyBM aXN0ICpkZXBhcnNlX0luaFJlbGF0aW9ucyhPaWQgb2JqZWN0SWQpOwogc3RhdGljIExpc3QgKmRl cGFyc2VfVGFibGVFbGVtZW50cyhSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqdGFibGVFbGVtZW50 cywgTGlzdCAqZHBjb250ZXh0LAogCQkJCQkJCQkgICBib29sIHR5cGVkLCBib29sIGNvbXBvc2l0 ZSk7CiAKK3N0YXRpYyBjaGFyICpEb21haW5HZXREZWZhdWx0KEhlYXBUdXBsZSBkb21UdXAsIGJv b2wgbWlzc2luZ19vayk7CisKIC8qCiAgKiBBcHBlbmQgcHJlc2VudCBhcyBmYWxzZSB0byBhIHRy ZWUuCiAgKi8KQEAgLTIxNCw2ICsyNDQsNDIgQEAgYXBwZW5kX25vdF9wcmVzZW50KE9ialRyZWUg KnRyZWUpCiAJYXBwZW5kX2Jvb2xfb2JqZWN0KHRyZWUsICJwcmVzZW50IiwgZmFsc2UpOwogfQog CisvKgorICogQXBwZW5kIGFuIGludDMyIHBhcmFtZXRlciB0byBhIHRyZWUuCisgKi8KK3N0YXRp YyB2b2lkCithcHBlbmRfaW50X29iamVjdChPYmpUcmVlICp0cmVlLCBjaGFyICpzdWJfZm10LCBp bnQzMiB2YWx1ZSkKK3sKKwlPYmpFbGVtICAgICpwYXJhbTsKKwljaGFyCSAgICpvYmplY3RfbmFt ZTsKKworCUFzc2VydChzdWJfZm10KTsKKworCW9iamVjdF9uYW1lID0gYXBwZW5kX29iamVjdF90 b19mb3JtYXRfc3RyaW5nKHRyZWUsIHN1Yl9mbXQpOworCisJcGFyYW0gPSBuZXdfb2JqZWN0KE9i alR5cGVJbnRlZ2VyLCBvYmplY3RfbmFtZSk7CisJcGFyYW0tPnZhbHVlLmZsdCA9IHZhbHVlOwor CWFwcGVuZF9wcmVtYWRlX29iamVjdCh0cmVlLCBwYXJhbSk7Cit9CisKKy8qCisgKiBBcHBlbmQg YSBmbG9hdDggcGFyYW1ldGVyIHRvIGEgdHJlZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGVuZF9m bG9hdF9vYmplY3QoT2JqVHJlZSAqdHJlZSwgY2hhciAqc3ViX2ZtdCwgZmxvYXQ4IHZhbHVlKQor eworCU9iakVsZW0gICAgKnBhcmFtOworCWNoYXIJICAgKm9iamVjdF9uYW1lOworCisJQXNzZXJ0 KHN1Yl9mbXQpOworCisJb2JqZWN0X25hbWUgPSBhcHBlbmRfb2JqZWN0X3RvX2Zvcm1hdF9zdHJp bmcodHJlZSwgc3ViX2ZtdCk7CisKKwlwYXJhbSA9IG5ld19vYmplY3QoT2JqVHlwZUZsb2F0LCBv YmplY3RfbmFtZSk7CisJcGFyYW0tPnZhbHVlLmZsdCA9IHZhbHVlOworCWFwcGVuZF9wcmVtYWRl X29iamVjdCh0cmVlLCBwYXJhbSk7Cit9CisKIC8qCiAgKiBBcHBlbmQgYW4gYXJyYXkgcGFyYW1l dGVyIHRvIGEgdHJlZS4KICAqLwpAQCAtNDIwLDYgKzQ4NiwzNCBAQCBhcHBlbmRfc3RyaW5nX29i amVjdChPYmpUcmVlICp0cmVlLCBjaGFyICpzdWJfZm10LCBjaGFyICogb2JqZWN0X25hbWUsCiAJ YXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIHBhcmFtKTsKIH0KIAorLyoKKyAqIEFwcGVuZCBh IE5VTEwtb3ItcXVvdGVkLWxpdGVyYWwgY2xhdXNlLiAgVXNlZnVsIGZvciBDT01NRU5UIGFuZCBT RUNVUklUWQorICogTEFCRUwuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqICV7bnVsbH1zICV7 bGl0ZXJhbH1zCisgKi8KK3N0YXRpYyB2b2lkCithcHBlbmRfbGl0ZXJhbF9vcl9udWxsKE9ialRy ZWUgKnBhcmVudCwgY2hhciAqZWxlbW5hbWUsIGNoYXIgKnZhbHVlKQoreworCU9ialRyZWUgICAg KnRvcDsKKwlPYmpUcmVlICAgICpwYXJ0OworCisJdG9wID0gbmV3X29ianRyZWUoIiIpOworCXBh cnQgPSBuZXdfb2JqdHJlZV9WQSgiTlVMTCIsIDEsCisJCQkJCQkgICJwcmVzZW50IiwgT2JqVHlw ZUJvb2wsICF2YWx1ZSk7CisJYXBwZW5kX29iamVjdF9vYmplY3QodG9wLCAiJXtudWxsfXMiLCBw YXJ0KTsKKworCXBhcnQgPSBuZXdfb2JqdHJlZV9WQSgiIiwgMSwKKwkJCQkJCSAgInByZXNlbnQi LCBPYmpUeXBlQm9vbCwgdmFsdWUgIT0gTlVMTCk7CisKKwlpZiAodmFsdWUpCisJCWFwcGVuZF9z dHJpbmdfb2JqZWN0KHBhcnQsICIle3ZhbHVlfUwiLCAidmFsdWUiLCB2YWx1ZSk7CisJYXBwZW5k X29iamVjdF9vYmplY3QodG9wLCAiJXtsaXRlcmFsfXMiLCBwYXJ0KTsKKworCWFwcGVuZF9vYmpl Y3Rfb2JqZWN0KHBhcmVudCwgZWxlbW5hbWUsIHRvcCk7Cit9CisKIC8qCiAgKiBTaW1pbGFyIHRv IGZvcm1hdF90eXBlX2V4dGVuZGVkLCBleGNlcHQgd2UgcmV0dXJuIGVhY2ggYml0IG9mIGluZm9y bWF0aW9uCiAgKiBzZXBhcmF0ZWx5OgpAQCAtNTIyLDYgKzYxNiwzMSBAQCBmb3JtYXRfdHlwZV9k ZXRhaWxlZChPaWQgdHlwZV9vaWQsIGludDMyIHR5cGVtb2QsCiAJUmVsZWFzZVN5c0NhY2hlKHR1 cGxlKTsKIH0KIAorLyoKKyAqIFJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgYXJndW1lbnRz IHRvIGEgZnVuY3Rpb24sIGFzIGEgbGlzdCBvZgorICogZGVwYXJzZWQgZXhwcmVzc2lvbnMuCisg Ki8KK3N0YXRpYyBMaXN0ICoKK0Z1bmN0aW9uR2V0RGVmYXVsdHModGV4dCAqcHJvYXJnZGVmYXVs dHMpCit7CisJTGlzdAkgICAqbm9kZWRlZnM7CisJTGlzdAkgICAqc3RyZGVmcyA9IE5JTDsKKwlM aXN0Q2VsbCAgICpjZWxsOworCisJbm9kZWRlZnMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUodGV4 dF90b19jc3RyaW5nKHByb2FyZ2RlZmF1bHRzKSk7CisJaWYgKCFJc0Eobm9kZWRlZnMsIExpc3Qp KQorCQllbG9nKEVSUk9SLCAicHJvYXJnZGVmYXVsdHMgaXMgbm90IGEgbGlzdCIpOworCisJZm9y ZWFjaChjZWxsLCBub2RlZGVmcykKKwl7CisJCU5vZGUJICAgKm9uZWRlZiA9IGxmaXJzdChjZWxs KTsKKworCQlzdHJkZWZzID0gbGFwcGVuZChzdHJkZWZzLCBkZXBhcnNlX2V4cHJlc3Npb24ob25l ZGVmLCBOSUwsIGZhbHNlLCBmYWxzZSkpOworCX0KKworCXJldHVybiBzdHJkZWZzOworfQorCiAv KgogICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIFJFTFBF UlNJU1RFTkNFIHZhbHVlLgogICovCkBAIC03MTEsNiArODMwLDU3IEBAIG5ld19vYmp0cmVlX2Zv cl90eXBlKE9pZCB0eXBlSWQsIGludDMyIHR5cG1vZCkKIAkJCQkJCSAgInR5cGFycmF5IiwgT2Jq VHlwZUJvb2wsIHR5cGVfYXJyYXkpOwogfQogCisvKgorICogSGVscGVyIHJvdXRpbmUgZm9yICV7 fVIgb2JqZWN0cywgd2l0aCByb2xlIHNwZWNpZmllZCBieSBSb2xlU3BlYyBub2RlLgorICogU3Bl Y2lhbCB2YWx1ZXMgc3VjaCBhcyBST0xFU1BFQ19DVVJSRU5UX1VTRVIgYXJlIGV4cGFuZGVkIHRv IHRoZWlyIGZpbmFsCisgKiBuYW1lcy4KKyAqLworc3RhdGljIE9ialRyZWUgKgorbmV3X29ianRy ZWVfZm9yX3JvbGVzcGVjKFJvbGVTcGVjICpzcGVjKQoreworCWNoYXIJICAgKnJvbGV0eXBlOwor CisJaWYgKHNwZWMtPnJvbGV0eXBlICE9IFJPTEVTUEVDX1BVQkxJQykKKwkJcm9sZXR5cGUgPSBn ZXRfcm9sZXNwZWNfbmFtZShzcGVjKTsKKwllbHNlCisJCXJvbGV0eXBlID0gcHN0cmR1cCgiIik7 CisKKwlyZXR1cm4gbmV3X29ianRyZWVfVkEoTlVMTCwgMiwKKwkJCQkJCSAgImlzX3B1YmxpYyIs IE9ialR5cGVCb29sLCBzcGVjLT5yb2xldHlwZSA9PSBST0xFU1BFQ19QVUJMSUMsCisJCQkJCQkg ICJyb2xlbmFtZSIsIE9ialR5cGVTdHJpbmcsIHJvbGV0eXBlKTsKK30KKworLyoKKyAqIEhlbHBl ciByb3V0aW5lIGZvciAle31SIG9iamVjdHMsIHdpdGggcm9sZSBzcGVjaWZpZWQgYnkgT0lELiAo QUNMX0lEX1BVQkxJQworICogbWVhbnMgdG8gdXNlICJwdWJsaWMiKS4KKyAqLworc3RhdGljIE9i alRyZWUgKgorbmV3X29ianRyZWVfZm9yX3JvbGVfaWQoT2lkIHJvbGVvaWQpCit7CisJT2JqVHJl ZSAgICAqcm9sZTsKKworCWlmIChyb2xlb2lkICE9IEFDTF9JRF9QVUJMSUMpCisJeworCQlIZWFw VHVwbGUJcm9sdHVwOworCQljaGFyCSAgICpyb2xlX25hbWU7CisKKwkJcm9sdHVwID0gU2VhcmNo U3lzQ2FjaGUxKEFVVEhPSUQsIE9iamVjdElkR2V0RGF0dW0ocm9sZW9pZCkpOworCQlpZiAoIUhl YXBUdXBsZUlzVmFsaWQocm9sdHVwKSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciByb2xlIHdpdGggT0lEICV1Iiwgcm9sZW9pZCk7CisKKwkJcm9sZV9uYW1lID0gTmFt ZVN0cigoKEZvcm1fcGdfYXV0aGlkKSBHRVRTVFJVQ1Qocm9sdHVwKSktPnJvbG5hbWUpOworCQly b2xlID0gbmV3X29ianRyZWVfVkEoIiV7cm9sZW5hbWV9SSIsIDEsCisJCQkJCQkJICAicm9sZW5h bWUiLCBPYmpUeXBlU3RyaW5nLCBwc3RyZHVwKHJvbGVfbmFtZSkpOworCisJCVJlbGVhc2VTeXND YWNoZShyb2x0dXApOworCX0KKwllbHNlCisJCXJvbGUgPSBuZXdfb2JqdHJlZV9WQSgiJXtyb2xl bmFtZX1JIiwgMSwKKwkJCQkJCQkgICJyb2xlbmFtZSIsIE9ialR5cGVTdHJpbmcsICJwdWJsaWMi KTsKKworCXJldHVybiByb2xlOworfQorCiAvKgogICogQWxsb2NhdGUgYSBuZXcgb2JqZWN0IHRy ZWUgdG8gc3RvcmUgcGFyYW1ldGVyIHZhbHVlcyAtLSB2YXJhcmdzIHZlcnNpb24uCiAgKgpAQCAt Nzg4LDYgKzk1OCwyMiBAQCBuZXdfb2JqdHJlZV9WQShjaGFyICpmbXQsIGludCBudW1vYmpzLC4u LikKIAlyZXR1cm4gdHJlZTsKIH0KIAorLyoKKyAqIEFsbG9jYXRlIGEgbmV3IHN0cmluZyBvYmpl Y3QuCisgKi8KK3N0YXRpYyBPYmpFbGVtICoKK25ld19zdHJpbmdfb2JqZWN0KGNoYXIgKnZhbHVl KQoreworCU9iakVsZW0gICAgKnBhcmFtOworCisJQXNzZXJ0KHZhbHVlKTsKKworCXBhcmFtID0g bmV3X29iamVjdChPYmpUeXBlU3RyaW5nLCBOVUxMKTsKKwlwYXJhbS0+dmFsdWUuc3RyaW5nID0g dmFsdWU7CisKKwlyZXR1cm4gcGFyYW07Cit9CisKIC8qCiAgKiBQcm9jZXNzIHRoZSBwcmUtYnVp bHQgZm9ybWF0IHN0cmluZyBmcm9tIHRoZSBPYmpUcmVlIGludG8gdGhlIG91dHB1dCBwYXJzZQog ICogc3RhdGUuCkBAIC0xOTUwLDYgKzIxMzYsODMgQEAgZGVwYXJzZV9TZXFfTWludmFsdWUoRm9y bV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKQogCXJldHVybiBuZXdfb2Jq ZWN0X29iamVjdChyZXQpOwogfQogCisvKgorICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgT1dORUQg QlkgY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogT1dORUQgQlkgJXtvd25lcn1E CisgKi8KK3N0YXRpYyBPYmpFbGVtICoKK2RlcGFyc2VfU2VxX093bmVkQnkoT2lkIHNlcXVlbmNl SWQsIGJvb2wgYWx0ZXJfdGFibGUpCit7CisJT2JqVHJlZSAgICAqcmV0ID0gTlVMTDsKKwlSZWxh dGlvbglkZXBSZWw7CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlTY2FuS2V5RGF0YSBrZXlzWzNdOwor CUhlYXBUdXBsZQl0dXBsZTsKKworCWRlcFJlbCA9IHRhYmxlX29wZW4oRGVwZW5kUmVsYXRpb25J ZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlTY2FuS2V5SW5pdCgma2V5c1swXSwKKwkJCQlBbnVtX3Bn X2RlcGVuZF9jbGFzc2lkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJ CQlPYmplY3RJZEdldERhdHVtKFJlbGF0aW9uUmVsYXRpb25JZCkpOworCVNjYW5LZXlJbml0KCZr ZXlzWzFdLAorCQkJCUFudW1fcGdfZGVwZW5kX29iamlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51 bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKHNlcXVlbmNlSWQpKTsKKwlTY2Fu S2V5SW5pdCgma2V5c1syXSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9vYmpzdWJpZCwKKwkJCQlCVEVx dWFsU3RyYXRlZ3lOdW1iZXIsIEZfSU5UNEVRLAorCQkJCUludDMyR2V0RGF0dW0oMCkpOworCisJ c2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihkZXBSZWwsIERlcGVuZERlcGVuZGVySW5kZXhJZCwg dHJ1ZSwKKwkJCQkJCQkgIE5VTEwsIDMsIGtleXMpOworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlk KHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlPaWQJCQlvd25lcklkOwor CQlGb3JtX3BnX2RlcGVuZCBkZXBmb3JtOworCQlPYmpUcmVlICAgICp0bXBfb2JqOworCQljaGFy CSAgICpjb2xuYW1lOworCisJCWRlcGZvcm0gPSAoRm9ybV9wZ19kZXBlbmQpIEdFVFNUUlVDVCh0 dXBsZSk7CisKKwkJLyogT25seSBjb25zaWRlciBBVVRPIGRlcGVuZGVuY2llcyBvbiBwZ19jbGFz cyAqLworCQlpZiAoZGVwZm9ybS0+ZGVwdHlwZSAhPSBERVBFTkRFTkNZX0FVVE8pCisJCQljb250 aW51ZTsKKwkJaWYgKGRlcGZvcm0tPnJlZmNsYXNzaWQgIT0gUmVsYXRpb25SZWxhdGlvbklkKQor CQkJY29udGludWU7CisJCWlmIChkZXBmb3JtLT5yZWZvYmpzdWJpZCA8PSAwKQorCQkJY29udGlu dWU7CisKKwkJb3duZXJJZCA9IGRlcGZvcm0tPnJlZm9iamlkOworCQljb2xuYW1lID0gZ2V0X2F0 dG5hbWUob3duZXJJZCwgZGVwZm9ybS0+cmVmb2Jqc3ViaWQsIGZhbHNlKTsKKwkJaWYgKGNvbG5h bWUgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCisJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9mb3Jf cXVhbG5hbWVfaWQoUmVsYXRpb25SZWxhdGlvbklkLCBvd25lcklkKTsKKwkJYXBwZW5kX3N0cmlu Z19vYmplY3QodG1wX29iaiwgImF0dHJuYW1lIiwgImF0dHJuYW1lIiwgY29sbmFtZSk7CisJCXJl dCA9IG5ld19vYmp0cmVlX1ZBKCJPV05FRCBCWSAle293bmVyfUQiLCAyLAorCQkJCQkJCSAiY2xh dXNlIiwgT2JqVHlwZVN0cmluZywgIm93bmVkIiwKKwkJCQkJCQkgIm93bmVyIiwgT2JqVHlwZU9i amVjdCwgdG1wX29iaik7CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwlyZWxhdGlv bl9jbG9zZShkZXBSZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKgorCSAqIElmIHRoZXJlJ3Mg bm8gb3duZXIgY29sdW1uLCBlbWl0IGFuIGVtcHR5IE9XTkVEIEJZIGVsZW1lbnQsIHNldCB1cCBz bworCSAqIHRoYXQgaXQgd29uJ3QgcHJpbnQgYW55dGhpbmcuCisJICovCisJaWYgKCFyZXQpCisJ CS8qIFhYWCB0aGlzIHNob3VsZG4ndCBoYXBwZW4gLi4uICovCisJCXJldCA9IG5ld19vYmp0cmVl X1ZBKCJPV05FRCBCWSAle293bmVyfUQiLCAzLAorCQkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0 cmluZywgIm93bmVkIiwKKwkJCQkJCQkgIm93bmVyIiwgT2JqVHlwZU51bGwsCisJCQkJCQkJICJw cmVzZW50IiwgT2JqVHlwZUJvb2wsIGZhbHNlKTsKKworCXJldHVybiBuZXdfb2JqZWN0X29iamVj dChyZXQpOworfQorCiAvKgogICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgUkVTVEFSVCBvcHRpb24u CiAgKgpAQCAtMjIxNCw2ICsyNDc3LDY0IEBAIGRlcGFyc2VfVGFibGVFbGVtZW50cyhSZWxhdGlv biByZWxhdGlvbiwgTGlzdCAqdGFibGVFbGVtZW50cywgTGlzdCAqZHBjb250ZXh0LAogCXJldHVy biBlbGVtZW50czsKIH0KIAorLyoKKyAqIERlcGFyc2UgYSBDcmVhdGVTZXFTdG10LgorICoKKyAq IEdpdmVuIGEgc2VxdWVuY2UgT0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQs IHJldHVybiBhbiBPYmpUcmVlCisgKiByZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9uIGNvbW1hbmQu CisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSAle3BlcnNpc3RlbmNlfXMgU0VRVUVO Q0UgJXtpZGVudGl0eX1EICV7ZGVmaW5pdGlvbjogfXMKKyAqLworc3RhdGljIE9ialRyZWUgKgor ZGVwYXJzZV9DcmVhdGVTZXFTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQorewor CU9ialRyZWUgICAgKnJldDsKKwlSZWxhdGlvbglyZWxhdGlvbjsKKwlMaXN0CSAgICplbGVtcyA9 IE5JTDsKKwlGb3JtX3BnX3NlcXVlbmNlIHNlcWZvcm07CisJU2VxdWVuY2VfdmFsdWVzICpzZXF2 YWx1ZXM7CisJQ3JlYXRlU2VxU3RtdCAqY3JlYXRlU2VxU3RtdCA9IChDcmVhdGVTZXFTdG10ICop IHBhcnNldHJlZTsKKworCS8qCisJICogU2VxdWVuY2UgZm9yIElERU5USVRZIENPTFVNTiBvdXRw dXQgc2VwYXJhdGVseSAodmlhIENSRUFURSBUQUJMRSBvcgorCSAqIEFMVEVSIFRBQkxFKTsgcmV0 dXJuIGVtcHR5IGhlcmUuCisJICovCisJaWYgKGNyZWF0ZVNlcVN0bXQtPmZvcl9pZGVudGl0eSkK KwkJcmV0dXJuIE5VTEw7CisKKwlzZXF2YWx1ZXMgPSBnZXRfc2VxdWVuY2VfdmFsdWVzKG9iamVj dElkKTsKKwlzZXFmb3JtID0gc2VxdmFsdWVzLT5zZXFmb3JtOworCisJLyogRGVmaW5pdGlvbiBl bGVtZW50cyAqLworCWVsZW1zID0gbGFwcGVuZChlbGVtcywgZGVwYXJzZV9TZXFfQ2FjaGUoc2Vx Zm9ybSwgZmFsc2UpKTsKKwllbGVtcyA9IGxhcHBlbmQoZWxlbXMsIGRlcGFyc2VfU2VxX0N5Y2xl KHNlcWZvcm0sIGZhbHNlKSk7CisJZWxlbXMgPSBsYXBwZW5kKGVsZW1zLCBkZXBhcnNlX1NlcV9J bmNyZW1lbnRCeShzZXFmb3JtLCBmYWxzZSkpOworCWVsZW1zID0gbGFwcGVuZChlbGVtcywgZGVw YXJzZV9TZXFfTWludmFsdWUoc2VxZm9ybSwgZmFsc2UpKTsKKwllbGVtcyA9IGxhcHBlbmQoZWxl bXMsIGRlcGFyc2VfU2VxX01heHZhbHVlKHNlcWZvcm0sIGZhbHNlKSk7CisJZWxlbXMgPSBsYXBw ZW5kKGVsZW1zLCBkZXBhcnNlX1NlcV9TdGFydHdpdGgoc2VxZm9ybSwgZmFsc2UpKTsKKwllbGVt cyA9IGxhcHBlbmQoZWxlbXMsIGRlcGFyc2VfU2VxX1Jlc3RhcnQoc2VxdmFsdWVzLT5sYXN0X3Zh bHVlKSk7CisJZWxlbXMgPSBsYXBwZW5kKGVsZW1zLCBkZXBhcnNlX1NlcV9BcyhzZXFmb3JtKSk7 CisKKwkvKiBXZSBwdXJwb3NlZnVsbHkgZG8gbm90IGVtaXQgT1dORUQgQlkgaGVyZSAqLworCisJ cmVsYXRpb24gPSByZWxhdGlvbl9vcGVuKG9iamVjdElkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJ cmV0ID0gbmV3X29ianRyZWVfVkEoIkNSRUFURSAle3BlcnNpc3RlbmNlfXMgU0VRVUVOQ0UgJXtp Zl9ub3RfZXhpc3RzfXMgJXtpZGVudGl0eX1EICV7ZGVmaW5pdGlvbjogfXMiLCA0LAorCQkJCQkJ ICJwZXJzaXN0ZW5jZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgZ2V0X3BlcnNpc3RlbmNlX3N0 cihyZWxhdGlvbi0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSksCisJCQkJCQkgImlmX25vdF9leGlz dHMiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIGNyZWF0ZVNlcVN0bXQtPmlmX25vdF9leGlzdHMg PyAiSUYgTk9UIEVYSVNUUyIgOiAiIiwKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0 LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShyZWxhdGlvbi0+cmRfcmVsLT5yZWxu YW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9u KSksCisJCQkJCQkgImRlZmluaXRpb24iLCBPYmpUeXBlQXJyYXksIGVsZW1zKTsKKworCXJlbGF0 aW9uX2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHJldDsKK30K KwogLyoKICAqIERlcGFyc2UgYW4gSW5kZXhTdG10LgogICoKQEAgLTI1NTksNyArMjg4MCw3IEBA IGRlcGFyc2VfQWx0ZXJSZWxhdGlvbihDb2xsZWN0ZWRDb21tYW5kICpjbWQpCiAKIAlBc3NlcnQo Y21kLT50eXBlID09IFNDVF9BbHRlclRhYmxlKTsKIAlzdG10ID0gKEFsdGVyVGFibGVTdG10ICop IGNtZC0+cGFyc2V0cmVlOwotCUFzc2VydChJc0Eoc3RtdCwgQWx0ZXJUYWJsZVN0bXQpKTsKKwlB c3NlcnQoSXNBKHN0bXQsIEFsdGVyVGFibGVTdG10KSB8fCBJc0Eoc3RtdCwgVmlld1N0bXQpKTsK IAogCS8qCiAJICogQUxURVIgVEFCTEUgc3ViY29tbWFuZHMgZ2VuZXJhdGVkIGZvciBUYWJsZUxp a2VDbGF1c2UgaXMgcHJvY2Vzc2VkIGluCkBAIC0yNjAyLDggKzI5MjMsMTAgQEAgZGVwYXJzZV9B bHRlclJlbGF0aW9uKENvbGxlY3RlZENvbW1hbmQgKmNtZCkKIAkJCWVsb2coRVJST1IsICJ1bmV4 cGVjdGVkIHJlbGtpbmQgJWQiLCByZWwtPnJkX3JlbC0+cmVsa2luZCk7CiAJfQogCi0JcmV0ID0g bmV3X29ianRyZWVfVkEoIkFMVEVSICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9RCIsIDIsCisJcmV0 ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9RCIsIDMsCiAJ CQkJCQkgIm9ianR5cGUiLCBPYmpUeXBlU3RyaW5nLCByZWx0eXBlLAorCQkJCQkJICJvbmx5Iiwg T2JqVHlwZVN0cmluZywKKwkJCQkJCSBzdG10LT5yZWxhdGlvbi0+aW5oID8gIiIgOiAiT05MWSIs CiAJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKIAkJCQkJCSBuZXdfb2JqdHJlZV9m b3JfcXVhbG5hbWUocmVsLT5yZF9yZWwtPnJlbG5hbWVzcGFjZSwKIAkJCQkJCQkJCQkJCSAgUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpOwpAQCAtMzAzNSwxMyArMzM1OCwxMiBAQCBkZXBh cnNlX0FsdGVyUmVsYXRpb24oQ29sbGVjdGVkQ29tbWFuZCAqY21kKQogCQkJCX0KIAkJCQlicmVh azsKIAotI2lmZGVmIFRPRE9MSVNUCiAJCQljYXNlIEFUX0FsdGVyQ29sdW1uR2VuZXJpY09wdGlv bnM6CiAJCQkJdG1wX29iaiA9IGRlcGFyc2VfRmR3T3B0aW9ucygoTGlzdCAqKSBzdWJjbWQtPmRl ZiwKLQkJCQkJCQkJCQkJc3ViY21kLT5uYW1lKTsKKwkJCQkJCQkJCQkJc3ViY21kLT5uYW1lLCB0 cnVlKTsKIAkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0 bXBfb2JqKSk7CiAJCQkJYnJlYWs7Ci0jZW5kaWYKKwogCQkJY2FzZSBBVF9DaGFuZ2VPd25lcjoK IAkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIk9XTkVSIFRPICV7b3duZXJ9SSIsIDIsCiAJ CQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiY2hhbmdlIG93bmVyIiwKQEAgLTM0MzIs NiArMzc1NCwyMDAgQEAgZGVwYXJzZV9kcm9wX2NvbW1hbmQoY29uc3QgY2hhciAqb2JqaWRlbnRp dHksIGNvbnN0IGNoYXIgKm9iamVjdHR5cGUsCiAJcmV0dXJuIGNvbW1hbmQ7CiB9CiAKKy8qCisg KiBEZXBhcnNlIGFuIEFsdGVyQ29sbGF0aW9uU3RtdCAoQUxURVIgQ09MTEFUSU9OKQorICoKKyAq IEdpdmVuIGEgY29sbGF0aW9uIE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0 LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVzZW50aW5nIHRoZSBhbHRlciBjb21tYW5kLgor ICoKKyAqIFZlcmJvc2Ugc3ludGF4OgorICogQUxURVIgQ09MTEFUSU9OICV7aWRlbnRpdHl9TyBS RUZSRVNIIFZFUlNJT04KKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlckNvbGxh dGlvbihPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlPYmpUcmVlICAgICpyZXQ7 CisJSGVhcFR1cGxlCWNvbFR1cDsKKwlGb3JtX3BnX2NvbGxhdGlvbiBjb2xGb3JtOworCisJY29s VHVwID0gU2VhcmNoU3lzQ2FjaGUxKENPTExPSUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0SWQp KTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY29sVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hl IGxvb2t1cCBmYWlsZWQgZm9yIGNvbGxhdGlvbiB3aXRoIE9JRCAldSIsIG9iamVjdElkKTsKKwlj b2xGb3JtID0gKEZvcm1fcGdfY29sbGF0aW9uKSBHRVRTVFJVQ1QoY29sVHVwKTsKKworCXJldCA9 IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBDT0xMQVRJT04gJXtpZGVudGl0eX1PIFJFRlJFU0ggVkVS U0lPTiIsIDEsCisJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdf b2JqdHJlZV9mb3JfcXVhbG5hbWUoY29sRm9ybS0+Y29sbG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJ CSAgTmFtZVN0cihjb2xGb3JtLT5jb2xsbmFtZSkpKTsKKworCVJlbGVhc2VTeXNDYWNoZShjb2xU dXApOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIEhhbmRsZSBkZXBhcnNpbmcgc2V0dGlu ZyBvZiBGdW5jdGlvbgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBSRVNFVCBBTEwKKyAqIE9S CisgKiBTRVQgJXtzZXRfbmFtZX1JIFRPICV7c2V0X3ZhbHVlfXMKKyAqIE9SCisgKiBSRVNFVCAl e3NldF9uYW1lfUkKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9GdW5jdGlvblNldChW YXJpYWJsZVNldEtpbmQga2luZCwgY2hhciAqbmFtZSwgY2hhciAqdmFsdWUpCit7CisJT2JqVHJl ZSAgICAqcmV0OworCisJaWYgKGtpbmQgPT0gVkFSX1JFU0VUX0FMTCkKKwkJcmV0ID0gbmV3X29i anRyZWUoIlJFU0VUIEFMTCIpOworCWVsc2UgaWYgKGtpbmQgPT0gVkFSX1NFVF9WQUxVRSkKKwl7 CisJCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJTRVQgJXtzZXRfbmFtZX1JIiwgMSwKKwkJCQkJCQkg InNldF9uYW1lIiwgT2JqVHlwZVN0cmluZywgbmFtZSk7CisKKwkJLyoKKwkJICogU29tZSBHVUMg dmFyaWFibGUgbmFtZXMgYXJlICdMSVNUJyB0eXBlIGFuZCBoZW5jZSBtdXN0IG5vdCBiZQorCQkg KiBxdW90ZWQuCisJCSAqLworCQlpZiAoR2V0Q29uZmlnT3B0aW9uRmxhZ3MobmFtZSwgdHJ1ZSkg JiBHVUNfTElTVF9RVU9URSkKKwkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIlRPICV7c2V0 X3ZhbHVlfXMiLCAic2V0X3ZhbHVlIiwgdmFsdWUpOworCQllbHNlCisJCQlhcHBlbmRfc3RyaW5n X29iamVjdChyZXQsICJUTyAle3NldF92YWx1ZX1MIiwgInNldF92YWx1ZSIsIHZhbHVlKTsKKwl9 CisJZWxzZQorCQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiUkVTRVQgJXtzZXRfbmFtZX1JIiwgMSwK KwkJCQkJCQkgInNldF9uYW1lIiwgT2JqVHlwZVN0cmluZywgbmFtZSk7CisKKwlyZXR1cm4gcmV0 OworfQorCisvKgorICogRGVwYXJzZSBhbiBBbHRlckZ1bmN0aW9uU3RtdCAoQUxURVIgRlVOQ1RJ T04vUk9VVElORS9QUk9DRURVUkUpCisgKgorICogR2l2ZW4gYSBmdW5jdGlvbiBPSUQgYW5kIHRo ZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJl c2VudGluZyB0aGUgYWx0ZXIgY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheDoKKyAqIEFM VEVSIEZVTkNUSU9OL1JPVVRJTkUvUFJPQ0VEVVJFICV7c2lnbmF0dXJlfXMgJXtkZWZpbml0aW9u OiB9cworICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0FsdGVyRnVuY3Rpb24oT2lkIG9i amVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQWx0ZXJGdW5jdGlvblN0bXQgKm5vZGUgPSAo QWx0ZXJGdW5jdGlvblN0bXQgKikgcGFyc2V0cmVlOworCU9ialRyZWUgICAgKnJldDsKKwlPYmpU cmVlICAgICpzaWduOworCUhlYXBUdXBsZQlwcm9jVHVwOworCUZvcm1fcGdfcHJvYyBwcm9jRm9y bTsKKwlMaXN0CSAgICpwYXJhbXMgPSBOSUw7CisJTGlzdAkgICAqZWxlbXMgPSBOSUw7CisJTGlz dENlbGwgICAqY2VsbDsKKwlpbnQJCQlpOworCisJLyogR2V0IHRoZSBwZ19wcm9jIHR1cGxlICov CisJcHJvY1R1cCA9IFNlYXJjaFN5c0NhY2hlMShQUk9DT0lELCBvYmplY3RJZCk7CisJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKHByb2NUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgZnVuY3Rpb24gd2l0aCBPSUQgJXUiLCBvYmplY3RJZCk7CisJcHJvY0Zvcm0gPSAo Rm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QocHJvY1R1cCk7CisKKwlpZiAocHJvY0Zvcm0tPnByb2tp bmQgPT0gUFJPS0lORF9QUk9DRURVUkUpCisJCXJldCA9IG5ld19vYmp0cmVlKCJBTFRFUiBQUk9D RURVUkUiKTsKKwllbHNlCisJCXJldCA9IG5ld19vYmp0cmVlKG5vZGUtPm9ianR5cGUgPT0gT0JK RUNUX1JPVVRJTkUgPworCQkJCQkJICAiQUxURVIgUk9VVElORSIgOiAiQUxURVIgRlVOQ1RJT04i KTsKKworCS8qCisJICogQUxURVIgRlVOQ1RJT04gZG9lcyBub3QgY2hhbmdlIHNpZ25hdHVyZSBz byB3ZSBjYW4gdXNlIGNhdGFsb2cgdG8gZ2V0CisJICogaW5wdXQgdHlwZSBPaWRzLgorCSAqLwor CWZvciAoaSA9IDA7IGkgPCBwcm9jRm9ybS0+cHJvbmFyZ3M7IGkrKykKKwl7CisJCU9ialRyZWUg ICAgKnRtcF9vYmo7CisKKwkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCIle3R5cGV9VCIsIDEs CisJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJbmV3X29ianRyZWVfZm9y X3R5cGUocHJvY0Zvcm0tPnByb2FyZ3R5cGVzLnZhbHVlc1tpXSwgLTEpKTsKKwkJcGFyYW1zID0g bGFwcGVuZChwYXJhbXMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwl9CisKKwlzaWdu ID0gbmV3X29ianRyZWVfVkEoIiV7aWRlbnRpdHl9RCAoJXthcmd1bWVudHM6LCB9cykiLCAyLAor CQkJCQkJICAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJICBuZXdfb2JqdHJlZV9m b3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwgb2JqZWN0SWQpLAorCQkJCQkJICAi YXJndW1lbnRzIiwgT2JqVHlwZUFycmF5LCBwYXJhbXMpOworCisJYXBwZW5kX29iamVjdF9vYmpl Y3QocmV0LCAiJXtzaWduYXR1cmV9cyIsIHNpZ24pOworCisJZm9yZWFjaChjZWxsLCBub2RlLT5h Y3Rpb25zKQorCXsKKwkJRGVmRWxlbSAgICAqZGVmZWwgPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2Vs bCk7CisJCU9ialRyZWUgICAgKnRtcF9vYmogPSBOVUxMOworCisJCWlmIChzdHJjbXAoZGVmZWwt PmRlZm5hbWUsICJ2b2xhdGlsaXR5IikgPT0gMCkKKwkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZShz dHJWYWwoZGVmZWwtPmFyZykpOworCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJz dHJpY3QiKSA9PSAwKQorCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlKGJvb2xWYWwoZGVmZWwtPmFy ZykgPworCQkJCQkJCQkgIlJFVFVSTlMgTlVMTCBPTiBOVUxMIElOUFVUIiA6CisJCQkJCQkJCSAi Q0FMTEVEIE9OIE5VTEwgSU5QVVQiKTsKKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1l LCAic2VjdXJpdHkiKSA9PSAwKQorCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlKGJvb2xWYWwoZGVm ZWwtPmFyZykgPworCQkJCQkJCQkgIlNFQ1VSSVRZIERFRklORVIiIDogIlNFQ1VSSVRZIElOVk9L RVIiKTsKKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAibGVha3Byb29mIikgPT0g MCkKKwkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZShib29sVmFsKGRlZmVsLT5hcmcpID8KKwkJCQkJ CQkJICJMRUFLUFJPT0YiIDogIk5PVCBMRUFLUFJPT0YiKTsKKwkJZWxzZSBpZiAoc3RyY21wKGRl ZmVsLT5kZWZuYW1lLCAiY29zdCIpID09IDApCisJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEo IkNPU1QgJXtjb3N0fW4iLCAxLAorCQkJCQkJCQkJImNvc3QiLCBPYmpUeXBlRmxvYXQsCisJCQkJ CQkJCQlkZWZHZXROdW1lcmljKGRlZmVsKSk7CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVm bmFtZSwgInJvd3MiKSA9PSAwKQorCQl7CisJCQl0bXBfb2JqID0gbmV3X29ianRyZWUoIlJPV1Mi KTsKKwkJCWlmIChkZWZHZXROdW1lcmljKGRlZmVsKSA9PSAwKQorCQkJCWFwcGVuZF9ub3RfcHJl c2VudCh0bXBfb2JqKTsKKwkJCWVsc2UKKwkJCQlhcHBlbmRfZmxvYXRfb2JqZWN0KHRtcF9vYmos ICIle3Jvd3N9biIsCisJCQkJCQkJCQlkZWZHZXROdW1lcmljKGRlZmVsKSk7CisJCX0KKwkJZWxz ZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAic2V0IikgPT0gMCkKKwkJeworCQkJVmFyaWFi bGVTZXRTdG10ICpzc3RtdCA9IChWYXJpYWJsZVNldFN0bXQgKikgZGVmZWwtPmFyZzsKKwkJCWNo YXIJICAgKnZhbHVlID0gRXh0cmFjdFNldFZhcmlhYmxlQXJncyhzc3RtdCk7CisKKwkJCXRtcF9v YmogPSBkZXBhcnNlX0Z1bmN0aW9uU2V0KHNzdG10LT5raW5kLCBzc3RtdC0+bmFtZSwgdmFsdWUp OworCQl9CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInN1cHBvcnQiKSA9PSAw KQorCQl7CisJCQlPaWQJCQlhcmd0eXBlc1sxXTsKKworCQkJdG1wX29iaiA9IG5ld19vYmp0cmVl KCJTVVBQT1JUIik7CisKKwkJCUFzc2VydChwcm9jRm9ybS0+cHJvc3VwcG9ydCk7CisKKwkJCS8q CisJCQkgKiBXZSBzaG91bGQgcXVhbGlmeSB0aGUgc3VwcG9ydCBmdW5jdGlvbidzIG5hbWUgaWYg aXQgd291bGRuJ3QgYmUKKwkJCSAqIHJlc29sdmVkIGJ5IGxvb2t1cCBpbiB0aGUgY3VycmVudCBz ZWFyY2ggcGF0aC4KKwkJCSAqLworCQkJYXJndHlwZXNbMF0gPSBJTlRFUk5BTE9JRDsKKwkJCWFw cGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIle25hbWV9cyIsICJuYW1lIiwKKwkJCQkJCQkJ IGdlbmVyYXRlX2Z1bmN0aW9uX25hbWUocHJvY0Zvcm0tPnByb3N1cHBvcnQsIDEsCisJCQkJCQkJ CQkJCQkJCU5JTCwgYXJndHlwZXMsCisJCQkJCQkJCQkJCQkJCWZhbHNlLCBOVUxMLAorCQkJCQkJ CQkJCQkJCQlFWFBSX0tJTkRfTk9ORSkpOworCQl9CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ ZGVmbmFtZSwgInBhcmFsbGVsIikgPT0gMCkKKwkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgi UEFSQUxMRUwgJXt2YWx1ZX1zIiwgMSwKKwkJCQkJCQkJCSJ2YWx1ZSIsIE9ialR5cGVTdHJpbmcs IHN0clZhbChkZWZlbC0+YXJnKSk7CisKKwkJZWxlbXMgPSBsYXBwZW5kKGVsZW1zLCBuZXdfb2Jq ZWN0X29iamVjdCh0bXBfb2JqKSk7CisJfQorCisJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICIl e2RlZmluaXRpb246IH1zIiwgZWxlbXMpOworCisJUmVsZWFzZVN5c0NhY2hlKHByb2NUdXApOwor CisJcmV0dXJuIHJldDsKK30KKwogLyoKICAqIERlcGFyc2UgYW4gQWx0ZXJPYmplY3RTY2hlbWFT dG10IChBTFRFUiAuLi4gU0VUIFNDSEVNQSBjb21tYW5kKQogICoKQEAgLTM0NzcsMjIgKzM5OTMs NDk5IEBAIGRlcGFyc2VfQWx0ZXJPYmplY3RTY2hlbWFTdG10KE9iamVjdEFkZHJlc3MgYWRkcmVz cywgTm9kZSAqcGFyc2V0cmVlLAogfQogCiAvKgotICogRGVwYXJzZSBhbiBBbHRlck93bmVyU3Rt dCAoQUxURVIgLi4uIE9XTkVSIFRPIC4uLikuCi0gKgotICogR2l2ZW4gdGhlIG9iamVjdCBhZGRy ZXNzIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbgotICogT2Jq VHJlZSByZXByZXNlbnRpbmcgdGhlIGFsdGVyIGNvbW1hbmQuCisgKiBEZXBhcnNlIGEgR1JBTlQv UkVWT0tFIGNvbW1hbmQuCiAgKgogICogVmVyYm9zZSBzeW50YXgKLSAqIEFMVEVSICV7b2JqdHlw ZX1zICV7aWRlbnRpdHl9cyBPV05FUiBUTyAle25ld293bmVyfUkKKyAqIEdSQU5UICV7cHJpdmls ZWdlczosIH1zIE9OIiAle29ianR5cGV9cyAle3ByaXZ0YXJnZXQ6LCB9cyBUTyAle2dyYW50ZWVz OiwgfXMKKyAqICV7Z3JhbnRfb3B0aW9ufXMgR1JBTlRFRCBCWSAle3JvbGVuYW1lfXMKKyAqIAkJ T1IKKyAqIFJFVk9LRSAle3ByaXZpbGVnZXM6LCB9cyBPTiIgJXtvYmp0eXBlfXMgJXtwcml2dGFy Z2V0OiwgfXMKKyAqIEZST00gJXtncmFudGVlczosIH1zICV7Z3JhbnRfb3B0aW9ufXMgJXtjYXNj YWRlfXMKICAqLwogc3RhdGljIE9ialRyZWUgKgotZGVwYXJzZV9BbHRlck93bmVyU3RtdChPYmpl Y3RBZGRyZXNzIGFkZHJlc3MsIE5vZGUgKnBhcnNldHJlZSkKK2RlcGFyc2VfR3JhbnRTdG10KENv bGxlY3RlZENvbW1hbmQgKmNtZCkKIHsKLQlBbHRlck93bmVyU3RtdCAqbm9kZSA9IChBbHRlck93 bmVyU3RtdCAqKSBwYXJzZXRyZWU7CisJSW50ZXJuYWxHcmFudCAqaXN0bXQ7CisJT2JqVHJlZSAg ICAqcmV0OworCUxpc3QJICAgKmxpc3QgPSBOSUw7CisJTGlzdENlbGwgICAqY2VsbDsKKwlPaWQJ CQljbGFzc0lkOworCU9ialRyZWUgICAgKnRtcDsKIAotCXJldHVybiBuZXdfb2JqdHJlZV9WQSgi QUxURVIgJXtvYmp0eXBlfXMgJXtpZGVudGl0eX1zIE9XTkVSIFRPICV7bmV3b3duZXJ9SSIsIDMs Ci0JCQkJCQkgICJvYmp0eXBlIiwgT2JqVHlwZVN0cmluZywKLQkJCQkJCSAgc3RyaW5naWZ5X29i anR5cGUobm9kZS0+b2JqZWN0VHlwZSwgZmFsc2UpLAorCS8qIERvbid0IGRlcGFyc2UgU1FMIGNv bW1hbmRzIGdlbmVyYXRlZCB3aGlsZSBjcmVhdGluZyBleHRlbnNpb24gKi8KKwlpZiAoY21kLT5p bl9leHRlbnNpb24pCisJCXJldHVybiBOVUxMOworCisJaXN0bXQgPSBjbWQtPmQuZ3JhbnQuaXN0 bXQ7CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBubyBvYmplY3RzIGZyb20gIkFMTCAuLi4gSU4g U0NIRU1BIiB0byBiZSBncmFudGVkLCB0aGVuCisJICogbm90aGluZyB0byBkby4KKwkgKi8KKwlp ZiAoaXN0bXQtPm9iamVjdHMgPT0gTklMKQorCQlyZXR1cm4gTlVMTDsKKworCXN3aXRjaCAoaXN0 bXQtPm9ianR5cGUpCisJeworCQljYXNlIE9CSkVDVF9DT0xVTU46CisJCWNhc2UgT0JKRUNUX1RB QkxFOgorCQljYXNlIE9CSkVDVF9TRVFVRU5DRToKKwkJCWNsYXNzSWQgPSBSZWxhdGlvblJlbGF0 aW9uSWQ7CisJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfRE9NQUlOOgorCQljYXNlIE9CSkVDVF9U WVBFOgorCQkJY2xhc3NJZCA9IFR5cGVSZWxhdGlvbklkOworCQkJYnJlYWs7CisJCWNhc2UgT0JK RUNUX0ZEVzoKKwkJCWNsYXNzSWQgPSBGb3JlaWduRGF0YVdyYXBwZXJSZWxhdGlvbklkOworCQkJ YnJlYWs7CisJCWNhc2UgT0JKRUNUX0ZPUkVJR05fU0VSVkVSOgorCQkJY2xhc3NJZCA9IEZvcmVp Z25TZXJ2ZXJSZWxhdGlvbklkOworCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX0ZVTkNUSU9OOgor CQljYXNlIE9CSkVDVF9QUk9DRURVUkU6CisJCWNhc2UgT0JKRUNUX1JPVVRJTkU6CisJCQljbGFz c0lkID0gUHJvY2VkdXJlUmVsYXRpb25JZDsKKwkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9MQU5H VUFHRToKKwkJCWNsYXNzSWQgPSBMYW5ndWFnZVJlbGF0aW9uSWQ7CisJCQlicmVhazsKKwkJY2Fz ZSBPQkpFQ1RfTEFSR0VPQkpFQ1Q6CisJCQljbGFzc0lkID0gTGFyZ2VPYmplY3RSZWxhdGlvbklk OworCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1NDSEVNQToKKwkJCWNsYXNzSWQgPSBOYW1lc3Bh Y2VSZWxhdGlvbklkOworCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX0RBVEFCQVNFOgorCQljYXNl IE9CSkVDVF9UQUJMRVNQQUNFOgorCQkJY2xhc3NJZCA9IEludmFsaWRPaWQ7CisJCQllbG9nKEVS Uk9SLCAiZ2xvYmFsIG9iamVjdHMgbm90IHN1cHBvcnRlZCIpOworCQkJYnJlYWs7CisJCWRlZmF1 bHQ6CisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBPQkpFQ1QgdmFsdWUgJWQiLCBpc3RtdC0+b2Jq dHlwZSk7CisJfQorCisJLyogR1JBTlQgVE8gb3IgUkVWT0tFIEZST00gKi8KKwlyZXQgPSBuZXdf b2JqdHJlZShpc3RtdC0+aXNfZ3JhbnQgPyAiR1JBTlQiIDogIlJFVk9LRSIpOworCisJLyogQnVp bGQgYSBsaXN0IG9mIHByaXZpbGVnZXMgdG8gZ3JhbnQvcmV2b2tlICovCisJaWYgKGlzdG10LT5h bGxfcHJpdnMpCisJeworCQl0bXAgPSBuZXdfb2JqdHJlZSgiQUxMIFBSSVZJTEVHRVMiKTsKKwkJ bGlzdCA9IGxpc3RfbWFrZTEobmV3X29iamVjdF9vYmplY3QodG1wKSk7CisJfQorCWVsc2UKKwl7 CisJCWNoYXIgKnByaXY7CisJCWlmIChpc3RtdC0+cHJpdmlsZWdlcyAmIEFDTF9JTlNFUlQpCisJ CXsKKwkJCXByaXYgPSAoY2hhciAqKXByaXZpbGVnZV90b19zdHJpbmcoQUNMX0lOU0VSVCk7CisJ CQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChwcml2KSk7CisJCX0KKwkJ aWYgKGlzdG10LT5wcml2aWxlZ2VzICYgQUNMX1NFTEVDVCkKKwkJeworCQkJcHJpdiA9IChjaGFy ICopcHJpdmlsZWdlX3RvX3N0cmluZyhBQ0xfU0VMRUNUKTsKKwkJCWxpc3QgPSBsYXBwZW5kKGxp c3QsIG5ld19zdHJpbmdfb2JqZWN0KHByaXYpKTsKKwkJfQorCQlpZiAoaXN0bXQtPnByaXZpbGVn ZXMgJiBBQ0xfVVBEQVRFKQorCQl7CisJCQlwcml2ID0gKGNoYXIgKilwcml2aWxlZ2VfdG9fc3Ry aW5nKEFDTF9VUERBVEUpOworCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X3N0cmluZ19vYmpl Y3QocHJpdikpOworCQl9CisJCWlmIChpc3RtdC0+cHJpdmlsZWdlcyAmIEFDTF9ERUxFVEUpCisJ CXsKKwkJCXByaXYgPSAoY2hhciAqKXByaXZpbGVnZV90b19zdHJpbmcoQUNMX0RFTEVURSk7CisJ CQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChwcml2KSk7CisJCX0KKwkJ aWYgKGlzdG10LT5wcml2aWxlZ2VzICYgQUNMX1RSVU5DQVRFKQorCQl7CisJCQlwcml2ID0gKGNo YXIgKilwcml2aWxlZ2VfdG9fc3RyaW5nKEFDTF9UUlVOQ0FURSk7CisJCQlsaXN0ID0gbGFwcGVu ZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChwcml2KSk7CisJCX0KKwkJaWYgKGlzdG10LT5wcml2 aWxlZ2VzICYgQUNMX1JFRkVSRU5DRVMpCisJCXsKKwkJCXByaXYgPSAoY2hhciAqKXByaXZpbGVn ZV90b19zdHJpbmcoQUNMX1JFRkVSRU5DRVMpOworCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3 X3N0cmluZ19vYmplY3QocHJpdikpOworCQl9CisJCWlmIChpc3RtdC0+cHJpdmlsZWdlcyAmIEFD TF9UUklHR0VSKQorCQl7CisJCQlwcml2ID0gKGNoYXIgKilwcml2aWxlZ2VfdG9fc3RyaW5nKEFD TF9UUklHR0VSKTsKKwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0KHBy aXYpKTsKKwkJfQorCQlpZiAoaXN0bXQtPnByaXZpbGVnZXMgJiBBQ0xfRVhFQ1VURSkKKwkJewor CQkJcHJpdiA9IChjaGFyICopcHJpdmlsZWdlX3RvX3N0cmluZyhBQ0xfRVhFQ1VURSk7CisJCQls aXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChwcml2KSk7CisJCX0KKwkJaWYg KGlzdG10LT5wcml2aWxlZ2VzICYgQUNMX1VTQUdFKQorCQl7CisJCQlwcml2ID0gKGNoYXIgKilw cml2aWxlZ2VfdG9fc3RyaW5nKEFDTF9VU0FHRSk7CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBu ZXdfc3RyaW5nX29iamVjdChwcml2KSk7CisJCX0KKwkJaWYgKGlzdG10LT5wcml2aWxlZ2VzICYg QUNMX0NSRUFURSkKKwkJeworCQkJcHJpdiA9IChjaGFyICopcHJpdmlsZWdlX3RvX3N0cmluZyhB Q0xfQ1JFQVRFKTsKKwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0KHBy aXYpKTsKKwkJfQorCQlpZiAoaXN0bXQtPnByaXZpbGVnZXMgJiBBQ0xfQ1JFQVRFX1RFTVApCisJ CXsKKwkJCXByaXYgPSAoY2hhciAqKXByaXZpbGVnZV90b19zdHJpbmcoQUNMX0NSRUFURV9URU1Q KTsKKwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0KHByaXYpKTsKKwkJ fQorCQlpZiAoaXN0bXQtPnByaXZpbGVnZXMgJiBBQ0xfQ09OTkVDVCkKKwkJeworCQkJcHJpdiA9 IChjaGFyICopcHJpdmlsZWdlX3RvX3N0cmluZyhBQ0xfQ09OTkVDVCk7CisJCQlsaXN0ID0gbGFw cGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChwcml2KSk7CisJCX0KKwkJaWYgKGlzdG10LT5w cml2aWxlZ2VzICYgQUNMX01BSU5UQUlOKQorCQl7CisJCQlwcml2ID0gKGNoYXIgKilwcml2aWxl Z2VfdG9fc3RyaW5nKEFDTF9NQUlOVEFJTik7CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdf c3RyaW5nX29iamVjdChwcml2KSk7CisJCX0KKworCQlpZiAoIWlzdG10LT5pc19ncmFudCAmJiBp c3RtdC0+Z3JhbnRfb3B0aW9uKQorCQkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtncmFu dF9vcHRpb259cyIsICJncmFudF9vcHRpb24iLAorCQkJCQkJCQkgaXN0bXQtPmdyYW50X29wdGlv biA/ICJHUkFOVCBPUFRJT04gRk9SIiA6ICIiKTsKKworCQlpZiAoaXN0bXQtPmNvbF9wcml2cyAh PSBOSUwpCisJCXsKKwkJCUxpc3RDZWxsICAgKm9jZWxsOworCisJCQlmb3JlYWNoKG9jZWxsLCBp c3RtdC0+Y29sX3ByaXZzKQorCQkJeworCQkJCUFjY2Vzc1ByaXYgKnByaXYgPSBsZmlyc3Qob2Nl bGwpOworCQkJCUxpc3QJICAgKmNvbHMgPSBOSUw7CisKKwkJCQlmb3JlYWNoKGNlbGwsIHByaXYt PmNvbHMpCisJCQkJeworCQkJCQlTdHJpbmcJICAgKmNvbG5hbWUgPSBsZmlyc3Rfbm9kZShTdHJp bmcsIGNlbGwpOworCisJCQkJCWNvbHMgPSBsYXBwZW5kKGNvbHMsCisJCQkJCQkJCSAgIG5ld19z dHJpbmdfb2JqZWN0KHN0clZhbChjb2xuYW1lKSkpOworCQkJCX0KKworCQkJCXRtcCA9IG5ld19v Ymp0cmVlX1ZBKCIoJXtjb2xzOiwgfXMpICV7cHJpdn1zIiwgMiwKKwkJCQkJCQkJCSAiY29scyIs IE9ialR5cGVBcnJheSwgY29scywKKwkJCQkJCQkJCSAicHJpdiIsIE9ialR5cGVTdHJpbmcsCisJ CQkJCQkJCQkgIHByaXYtPnByaXZfbmFtZSA/IHByaXYtPnByaXZfbmFtZSA6ICJBTEwgUFJJVklM RUdFUyIpOworCisJCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1w KSk7CisJCQl9CisJCX0KKwl9CisJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICIle3ByaXZpbGVn ZXM6LCB9cyBPTiIsIGxpc3QpOworCisJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtvYmp0 eXBlfXMiLCAib2JqdHlwZSIsCisJCQkJCQkgKGNoYXIgKilzdHJpbmdpZnlfb2JqdHlwZShpc3Rt dC0+b2JqdHlwZSwgdHJ1ZSkpOworCisJLyogVGFyZ2V0IG9iamVjdHMuICBXZSB1c2Ugb2JqZWN0 IGlkZW50aXRpZXMgaGVyZSAqLworCWxpc3QgPSBOSUw7CisJZm9yZWFjaChjZWxsLCBpc3RtdC0+ b2JqZWN0cykKKwl7CisJCU9pZAkJCW9iamlkID0gbGZpcnN0X29pZChjZWxsKTsKKwkJT2JqZWN0 QWRkcmVzcyBhZGRyOworCisJCWFkZHIuY2xhc3NJZCA9IGNsYXNzSWQ7CisJCWFkZHIub2JqZWN0 SWQgPSBvYmppZDsKKwkJYWRkci5vYmplY3RTdWJJZCA9IDA7CisKKwkJdG1wID0gbmV3X29ianRy ZWVfVkEoIiV7aWRlbnRpdHl9cyIsIDEsCisJCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVTdHJp bmcsCisJCQkJCQkJIGdldE9iamVjdElkZW50aXR5KCZhZGRyLCBmYWxzZSkpOworCisJCWxpc3Qg PSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCX0KKwlhcHBlbmRfYXJy YXlfb2JqZWN0KHJldCwgIiV7cHJpdnRhcmdldDosIH1zIiwgbGlzdCk7CisKKwlhcHBlbmRfZm9y bWF0X3N0cmluZyhyZXQsIGlzdG10LT5pc19ncmFudCA/ICJUTyIgOiAiRlJPTSIpOworCisJLyog TGlzdCBvZiBncmFudGVlcyAqLworCWxpc3QgPSBOSUw7CisJZm9yZWFjaChjZWxsLCBpc3RtdC0+ Z3JhbnRlZXMpCisJeworCQlPaWQJCQlncmFudGVlID0gbGZpcnN0X29pZChjZWxsKTsKKworCQl0 bXAgPSBuZXdfb2JqdHJlZV9mb3Jfcm9sZV9pZChncmFudGVlKTsKKwkJbGlzdCA9IGxhcHBlbmQo bGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisJfQorCisJYXBwZW5kX2FycmF5X29iamVj dChyZXQsICIle2dyYW50ZWVzOiwgfXMiLCBsaXN0KTsKKworCS8qIFRoZSB3b3JkaW5nIG9mIHRo ZSBncmFudCBvcHRpb24gaXMgdmFyaWFibGUgLi4uICovCisJaWYgKGlzdG10LT5pc19ncmFudCkK KwkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtncmFudF9vcHRpb259cyIsICJncmFudF9v cHRpb24iLAorCQkJCQkJCSBpc3RtdC0+Z3JhbnRfb3B0aW9uID8gIldJVEggR1JBTlQgT1BUSU9O IiA6ICIiKTsKKworCWlmIChpc3RtdC0+Z3JhbnRvcl91aWQpCisJeworCQlIZWFwVHVwbGUJcm9s dHVwOworCQljaGFyCSAgICpyb2xlbmFtZTsKKworCQlyb2x0dXAgPSBTZWFyY2hTeXNDYWNoZTEo QVVUSE9JRCwgT2JqZWN0SWRHZXREYXR1bShpc3RtdC0+Z3JhbnRvcl91aWQpKTsKKwkJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKHJvbHR1cCkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3Igcm9sZSB3aXRoIE9JRCAldSIsCisJCQkJIGlzdG10LT5ncmFudG9yX3VpZCk7CisK KwkJcm9sZW5hbWUgPSBOYW1lU3RyKCgoRm9ybV9wZ19hdXRoaWQpIEdFVFNUUlVDVChyb2x0dXAp KS0+cm9sbmFtZSk7CisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIkdSQU5URUQgQlkgJXty b2xlbmFtZX1zIiwKKwkJCQkJCQkgInJvbGVuYW1lIiwgcm9sZW5hbWUpOworCQlSZWxlYXNlU3lz Q2FjaGUocm9sdHVwKTsKKwl9CisKKwlpZiAoIWlzdG10LT5pc19ncmFudCkKKwkJYXBwZW5kX3N0 cmluZ19vYmplY3QocmV0LCAiJXtjYXNjYWRlfXMiLCAiY2FzY2FkZSIsCisJCQkJCQkJIGlzdG10 LT5iZWhhdmlvciA9PSBEUk9QX0NBU0NBREUgPyAiQ0FTQ0FERSIgOiAiIik7CisKKwlyZXR1cm4g cmV0OworfQorCisvKgorICogRGVwYXJzZSBhbiBBbHRlck9wZXJhdG9yU3RtdCAoQUxURVIgT1BF UkFUT1IgLi4uIFNFVCAuLi4pLgorICoKKyAqIEdpdmVuIGFuIG9wZXJhdG9yIE9JRCBhbmQgdGhl IHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVz ZW50aW5nIHRoZSBhbHRlciBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRF UiBPUEVSQVRPUiAle2lkZW50aXR5fU8gKCV7bGVmdF90eXBlfVQsICV7cmlnaHRfdHlwZX1UKQor ICogU0VUICgle2VsZW1zOiwgfXMpCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0 ZXJPcGVyYXRvclN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJSGVhcFR1 cGxlCW9wclR1cDsKKwlBbHRlck9wZXJhdG9yU3RtdCAqbm9kZSA9IChBbHRlck9wZXJhdG9yU3Rt dCAqKSBwYXJzZXRyZWU7CisJT2JqVHJlZSAgICAqcmV0OworCUZvcm1fcGdfb3BlcmF0b3Igb3By Rm9ybTsKKwlMaXN0Q2VsbCAgICpjZWxsOworCUxpc3QJICAgKmxpc3QgPSBOSUw7CisKKwlvcHJU dXAgPSBTZWFyY2hTeXNDYWNoZTEoT1BFUk9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJZCkp OworCWlmICghSGVhcFR1cGxlSXNWYWxpZChvcHJUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3Igb3BlcmF0b3Igd2l0aCBPSUQgJXUiLCBvYmplY3RJZCk7CisJb3By Rm9ybSA9IChGb3JtX3BnX29wZXJhdG9yKSBHRVRTVFJVQ1Qob3ByVHVwKTsKKworCXJldCA9IG5l d19vYmp0cmVlX1ZBKCJBTFRFUiBPUEVSQVRPUiAle2lkZW50aXR5fU8iLCAxLAorCQkJCQkJICJp ZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1l KG9wckZvcm0tPm9wcm5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCSAgTmFtZVN0cihvcHJGb3JtLT5v cHJuYW1lKSkpOworCisJLyogTEVGVEFSRyAqLworCWlmIChPaWRJc1ZhbGlkKG9wckZvcm0tPm9w cmxlZnQpKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIoJXtsZWZ0X3R5cGV9VCIsCisJ CQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKG9wckZvcm0tPm9wcmxlZnQsIC0xKSk7CisJZWxz ZQorCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIoJXtsZWZ0X3R5cGV9cyIsICJsZWZ0X3R5 cGUiLCAiTk9ORSIpOworCisJLyogUklHSFRBUkcgKi8KKwlBc3NlcnQoT2lkSXNWYWxpZChvcHJG b3JtLT5vcHJsZWZ0KSk7CisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiLCAle3JpZ2h0X3R5 cGV9VCkiLAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKG9wckZvcm0tPm9wcnJpZ2h0LCAt MSkpOworCisJZm9yZWFjaChjZWxsLCBub2RlLT5vcHRpb25zKQorCXsKKwkJRGVmRWxlbSAgICAq ZWxlbSA9IChEZWZFbGVtICopIGxmaXJzdChjZWxsKTsKKwkJT2JqVHJlZSAgICAqdG1wX29iaiA9 IE5VTEw7CisKKwkJaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAicmVzdHJpY3QiKSA9PSAwKQor CQl7CisJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIlJFU1RSSUNUPSIsIDEsCisJCQkJCQkJ CQkiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgInJlc3RyaWN0Iik7CisJCQlpZiAoT2lkSXNWYWxp ZChvcHJGb3JtLT5vcHJyZXN0KSkKKwkJCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2JqLCAi JXtwcm9jZWR1cmV9RCIsCisJCQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFBy b2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCQkJIG9wckZvcm0tPm9wcnJlc3QpKTsK KwkJCWVsc2UKKwkJCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXBfb2JqLCAiJXtwcm9jZWR1cmV9 cyIsICJwcm9jZWR1cmUiLAorCQkJCQkJCQkJICJOT05FIik7CisJCX0KKwkJZWxzZSBpZiAoc3Ry Y21wKGVsZW0tPmRlZm5hbWUsICJqb2luIikgPT0gMCkKKwkJeworCQkJdG1wX29iaiA9IG5ld19v Ymp0cmVlX1ZBKCJKT0lOPSIsIDEsCisJCQkJCQkJCQkiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywg ImpvaW4iKTsKKwkJCWlmIChPaWRJc1ZhbGlkKG9wckZvcm0tPm9wcmpvaW4pKQorCQkJCWFwcGVu ZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmosICIle3Byb2NlZHVyZX1EIiwKKwkJCQkJCQkJCSBuZXdf b2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJ CQkJCQkgb3ByRm9ybS0+b3Byam9pbikpOworCQkJZWxzZQorCQkJCWFwcGVuZF9zdHJpbmdfb2Jq ZWN0KHRtcF9vYmosICIle3Byb2NlZHVyZX1zIiwgInByb2NlZHVyZSIsCisJCQkJCQkJCQkgIk5P TkUiKTsKKwkJfQorCisJCUFzc2VydCh0bXBfb2JqKTsKKwkJbGlzdCA9IGxhcHBlbmQobGlzdCwg bmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCX0KKworCWFwcGVuZF9hcnJheV9vYmplY3Qo cmV0LCAiU0VUICgle2VsZW1zOiwgfXMpIiwgbGlzdCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUob3By VHVwKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGFuIEFMVEVSIE9QRVJB VE9SIEZBTUlMWSBBREQvRFJPUCBjb21tYW5kLgorICoKKyAqIEdpdmVuIHRoZSBDb2xsZWN0ZWRD b21tYW5kLCByZXR1cm4gYW4gT2JqVHJlZSByZXByZXNlbnRpbmcgdGhlIEFsdGVyCisgKiBPcGVy YXRvciBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRFUiBPUEVSQVRPUiBG QU1JTFkgJXtpZGVudGl0eX1EIFVTSU5HICV7YW1uYW1lfUkgQUREL0RST1AgJXtpdGVtczosfXMK KyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlck9wRmFtaWx5KENvbGxlY3RlZENv bW1hbmQgKmNtZCkKK3sKKwlPYmpUcmVlICAgICpyZXQ7CisJQWx0ZXJPcEZhbWlseVN0bXQgKnN0 bXQgPSAoQWx0ZXJPcEZhbWlseVN0bXQgKikgY21kLT5wYXJzZXRyZWU7CisJSGVhcFR1cGxlCWZ0 cDsKKwlGb3JtX3BnX29wZmFtaWx5IG9wZkZvcm07CisJTGlzdAkgICAqbGlzdCA9IE5JTDsKKwlM aXN0Q2VsbCAgICpjZWxsOworCisJLyogRG9uJ3QgZGVwYXJzZSBTUUwgY29tbWFuZHMgZ2VuZXJh dGVkIHdoaWxlIGNyZWF0aW5nIGV4dGVuc2lvbiAqLworCWlmIChjbWQtPmluX2V4dGVuc2lvbikK KwkJcmV0dXJuIE5VTEw7CisKKwlmdHAgPSBTZWFyY2hTeXNDYWNoZTEoT1BGQU1JTFlPSUQsCisJ CQkJCQkgIE9iamVjdElkR2V0RGF0dW0oY21kLT5kLm9wZmFtLmFkZHJlc3Mub2JqZWN0SWQpKTsK KwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoZnRwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIG9wZXJhdG9yIGZhbWlseSB3aXRoIE9JRCAldSIsCisJCQkgY21kLT5kLm9w ZmFtLmFkZHJlc3Mub2JqZWN0SWQpOworCW9wZkZvcm0gPSAoRm9ybV9wZ19vcGZhbWlseSkgR0VU U1RSVUNUKGZ0cCk7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgT1BFUkFUT1IgRkFN SUxZICV7aWRlbnRpdHl9RCBVU0lORyAle2FtbmFtZX1JIiwgMiwKKwkJCQkJCSAiaWRlbnRpdHki LCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShvcGZGb3Jt LT5vcGZuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIE5hbWVTdHIob3BmRm9ybS0+b3BmbmFtZSkp LAorCQkJCQkJICJhbW5hbWUiLCBPYmpUeXBlU3RyaW5nLCBzdG10LT5hbW5hbWUpOworCisJZm9y ZWFjaChjZWxsLCBjbWQtPmQub3BmYW0ub3BlcmF0b3JzKQorCXsKKwkJT3BGYW1pbHlNZW1iZXIg Km9wZXIgPSBsZmlyc3QoY2VsbCk7CisJCU9ialRyZWUgICAgKnRtcF9vYmo7CisKKwkJLyoKKwkJ ICogVmVyYm9zZSBzeW50YXgKKwkJICoKKwkJICogT1BFUkFUT1IgJXtudW19biAle29wZXJhdG9y fU8oJXtsdHlwZX1ULCAle3J0eXBlfVQpICV7cHVycG9zZX1zCisJCSAqLworCQl0bXBfb2JqID0g bmV3X29ianRyZWVfVkEoIk9QRVJBVE9SICV7bnVtfW4iLCAxLAorCQkJCQkJCQkibnVtIiwgT2Jq VHlwZUludGVnZXIsIG9wZXItPm51bWJlcik7CisKKwkJLyogQWRkIHRoZSBvcGVyYXRvciBuYW1l OyB0aGUgRFJPUCBjYXNlIGRvZXNuJ3QgaGF2ZSB0aGlzICovCisJCWlmICghc3RtdC0+aXNEcm9w KQorCQkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7b3BlcmF0b3J9TyIsCisJCQkJ CQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoT3BlcmF0b3JSZWxhdGlvbklkLAorCQkJ CQkJCQkJCQkJCQkJIG9wZXItPm9iamVjdCkpOworCisJCS8qIEFkZCB0aGUgdHlwZXMgKi8KKwkJ YXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIigle2x0eXBlfVQsIiwKKwkJCQkJCQkgbmV3 X29ianRyZWVfZm9yX3R5cGUob3Blci0+bGVmdHR5cGUsIC0xKSk7CisJCWFwcGVuZF9vYmplY3Rf b2JqZWN0KHRtcF9vYmosICIle3J0eXBlfVQpIiwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3R5 cGUob3Blci0+cmlnaHR0eXBlLCAtMSkpOworCisJCS8qIEFkZCB0aGUgRk9SIFNFQVJDSCAvIEZP UiBPUkRFUiBCWSBjbGF1c2U7IG5vdCBpbiB0aGUgRFJPUCBjYXNlICovCisJCWlmICghc3RtdC0+ aXNEcm9wKQorCQl7CisJCQlpZiAob3Blci0+c29ydGZhbWlseSA9PSBJbnZhbGlkT2lkKQorCQkJ CWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIle3B1cnBvc2V9cyIsICJwdXJwb3NlIiwK KwkJCQkJCQkJCSAiRk9SIFNFQVJDSCIpOworCQkJZWxzZQorCQkJeworCQkJCU9ialRyZWUgICAg Km9yZGVyYnlfb2JqOworCisJCQkJb3JkZXJieV9vYmogPSBuZXdfb2JqdHJlZV9WQSgiRk9SIE9S REVSIEJZICV7b3BmYW1pbHl9RCIsIDEsCisJCQkJCQkJCQkJCSJvcGZhbWlseSIsIE9ialR5cGVP YmplY3QsCisJCQkJCQkJCQkJCW5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChPcGVyYXRvckZh bWlseVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCQkJCQlvcGVyLT5zb3J0ZmFtaWx5KSk7CisJ CQkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7cHVycG9zZX1zIiwgb3JkZXJieV9v YmopOworCQkJfQorCQl9CisKKwkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmpl Y3QodG1wX29iaikpOworCX0KKworCWZvcmVhY2goY2VsbCwgY21kLT5kLm9wZmFtLnByb2NlZHVy ZXMpCisJeworCQlPcEZhbWlseU1lbWJlciAqcHJvYyA9IGxmaXJzdChjZWxsKTsKKwkJT2JqVHJl ZSAgICAqdG1wX29iajsKKworCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkZVTkNUSU9OICV7 bnVtfW4gKCV7bHR5cGV9VCwgJXtydHlwZX1UKSIsIDMsCisJCQkJCQkJCSJudW0iLCBPYmpUeXBl SW50ZWdlciwgcHJvYy0+bnVtYmVyLAorCQkJCQkJCQkibHR5cGUiLCBPYmpUeXBlT2JqZWN0LAor CQkJCQkJCQluZXdfb2JqdHJlZV9mb3JfdHlwZShwcm9jLT5sZWZ0dHlwZSwgLTEpLAorCQkJCQkJ CQkicnR5cGUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQluZXdfb2JqdHJlZV9mb3JfdHlwZShw cm9jLT5yaWdodHR5cGUsIC0xKSk7CisKKwkJLyoKKwkJICogQWRkIHRoZSBmdW5jdGlvbiBuYW1l IGFuZCBhcmcgdHlwZXM7IHRoZSBEUk9QIGNhc2UgZG9lc24ndCBoYXZlCisJCSAqIHRoaXMKKwkJ ICovCisJCWlmICghc3RtdC0+aXNEcm9wKQorCQl7CisJCQlIZWFwVHVwbGUJcHJvY1R1cDsKKwkJ CUZvcm1fcGdfcHJvYyBwcm9jRm9ybTsKKwkJCU9pZAkJICAgKnByb2FyZ3R5cGVzOworCQkJTGlz dAkgICAqYXJnbGlzdCA9IE5JTDsKKwkJCWludAkJCWk7CisKKwkJCXByb2NUdXAgPSBTZWFyY2hT eXNDYWNoZTEoUFJPQ09JRCwgT2JqZWN0SWRHZXREYXR1bShwcm9jLT5vYmplY3QpKTsKKwkJCWlm ICghSGVhcFR1cGxlSXNWYWxpZChwcm9jVHVwKSkKKwkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgcHJvY2VkdXJlIHdpdGggT0lEICV1IiwKKwkJCQkJIHByb2MtPm9iamVj dCk7CisJCQlwcm9jRm9ybSA9IChGb3JtX3BnX3Byb2MpIEdFVFNUUlVDVChwcm9jVHVwKTsKKwor CQkJcHJvYXJndHlwZXMgPSBwcm9jRm9ybS0+cHJvYXJndHlwZXMudmFsdWVzOworCQkJZm9yIChp ID0gMDsgaSA8IHByb2NGb3JtLT5wcm9uYXJnczsgaSsrKQorCQkJeworCQkJCU9ialRyZWUgICAg KmFyZzsKKworCQkJCWFyZyA9IG5ld19vYmp0cmVlX2Zvcl90eXBlKHByb2FyZ3R5cGVzW2ldLCAt MSk7CisJCQkJYXJnbGlzdCA9IGxhcHBlbmQoYXJnbGlzdCwgbmV3X29iamVjdF9vYmplY3QoYXJn KSk7CisJCQl9CisKKwkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmosICIle2Z1bmN0aW9u fUQiLAorCQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHByb2NGb3JtLT5wcm9uYW1l c3BhY2UsCisJCQkJCQkJCQkJCQkJCSAgTmFtZVN0cihwcm9jRm9ybS0+cHJvbmFtZSkpKTsKKwor CQkJYXBwZW5kX2Zvcm1hdF9zdHJpbmcodG1wX29iaiwgIigiKTsKKwkJCWFwcGVuZF9hcnJheV9v YmplY3QodG1wX29iaiwgIiV7YXJndHlwZXM6LCB9VCIsIGFyZ2xpc3QpOworCQkJYXBwZW5kX2Zv cm1hdF9zdHJpbmcodG1wX29iaiwgIikiKTsKKworCQkJUmVsZWFzZVN5c0NhY2hlKHByb2NUdXAp OworCQl9CisKKwkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wX29i aikpOworCX0KKworCWlmIChzdG10LT5pc0Ryb3ApCisJCWFwcGVuZF9mb3JtYXRfc3RyaW5nKHJl dCwgIkRST1AiKTsKKwllbHNlCisJCWFwcGVuZF9mb3JtYXRfc3RyaW5nKHJldCwgIkFERCIpOwor CisJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICIle2l0ZW1zOiwgfXMiLCBsaXN0KTsKKworCVJl bGVhc2VTeXNDYWNoZShmdHApOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2Ug YW4gQWx0ZXJPd25lclN0bXQgKEFMVEVSIC4uLiBPV05FUiBUTyAuLi4pLgorICoKKyAqIEdpdmVu IHRoZSBvYmplY3QgYWRkcmVzcyBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCBy ZXR1cm4gYW4KKyAqIE9ialRyZWUgcmVwcmVzZW50aW5nIHRoZSBhbHRlciBjb21tYW5kLgorICoK KyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRFUiAle29ianR5cGV9cyAle2lkZW50aXR5fXMgT1dO RVIgVE8gJXtuZXdvd25lcn1JCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJP d25lclN0bXQoT2JqZWN0QWRkcmVzcyBhZGRyZXNzLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQWx0 ZXJPd25lclN0bXQgKm5vZGUgPSAoQWx0ZXJPd25lclN0bXQgKikgcGFyc2V0cmVlOworCisJcmV0 dXJuIG5ld19vYmp0cmVlX1ZBKCJBTFRFUiAle29ianR5cGV9cyAle2lkZW50aXR5fXMgT1dORVIg VE8gJXtuZXdvd25lcn1JIiwgMywKKwkJCQkJCSAgIm9ianR5cGUiLCBPYmpUeXBlU3RyaW5nLAor CQkJCQkJICBzdHJpbmdpZnlfb2JqdHlwZShub2RlLT5vYmplY3RUeXBlLCBmYWxzZSksCiAJCQkJ CQkgICJpZGVudGl0eSIsIE9ialR5cGVTdHJpbmcsCiAJCQkJCQkgIGdldE9iamVjdElkZW50aXR5 KCZhZGRyZXNzLCBmYWxzZSksCiAJCQkJCQkgICJuZXdvd25lciIsIE9ialR5cGVTdHJpbmcsCkBA IC0zNTAwLDE0OCArNDQ5Myw1Mzg1IEBAIGRlcGFyc2VfQWx0ZXJPd25lclN0bXQoT2JqZWN0QWRk cmVzcyBhZGRyZXNzLCBOb2RlICpwYXJzZXRyZWUpCiB9CiAKIC8qCi0gKiBEZXBhcnNlIGEgUmVu YW1lU3RtdC4KKyAqIERlcGFyc2UgYW4gQWx0ZXJTZXFTdG10LgorICoKKyAqIEdpdmVuIGEgc2Vx dWVuY2UgT0lEIGFuZCBhIHBhcnNlIHRyZWUgdGhhdCBtb2RpZmllZCBpdCwgcmV0dXJuIGFuIE9i alRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgYWx0ZXIgY29tbWFuZC4KKyAqCisgKiBWZXJib3Nl IHN5bnRheAorICogQUxURVIgU0VRVUVOQ0UgJXtpZGVudGl0eX1EICV7ZGVmaW5pdGlvbjogfXMK KyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlclNlcVN0bXQoT2lkIG9iamVjdElk LCBOb2RlICpwYXJzZXRyZWUpCit7CisJT2JqVHJlZSAgICAqcmV0OworCVJlbGF0aW9uCXJlbGF0 aW9uOworCUxpc3QJICAgKmVsZW1zID0gTklMOworCUxpc3RDZWxsICAgKmNlbGw7CisJRm9ybV9w Z19zZXF1ZW5jZSBzZXFmb3JtOworCVNlcXVlbmNlX3ZhbHVlcyAqc2VxdmFsdWVzOworCUFsdGVy U2VxU3RtdCAqYWx0ZXJTZXFTdG10ID0gKEFsdGVyU2VxU3RtdCAqKSBwYXJzZXRyZWU7CisKKwkv KgorCSAqIFNlcXVlbmNlIGZvciBJREVOVElUWSBDT0xVTU4gb3V0cHV0IHNlcGFyYXRlbHkgKHZp YSBDUkVBVEUgVEFCTEUgb3IKKwkgKiBBTFRFUiBUQUJMRSk7IHJldHVybiBlbXB0eSBoZXJlLgor CSAqLworCWlmIChhbHRlclNlcVN0bXQtPmZvcl9pZGVudGl0eSkKKwkJcmV0dXJuIE5VTEw7CisK KwlzZXF2YWx1ZXMgPSBnZXRfc2VxdWVuY2VfdmFsdWVzKG9iamVjdElkKTsKKwlzZXFmb3JtID0g c2VxdmFsdWVzLT5zZXFmb3JtOworCisJZm9yZWFjaChjZWxsLCAoKEFsdGVyU2VxU3RtdCAqKSBw YXJzZXRyZWUpLT5vcHRpb25zKQorCXsKKwkJRGVmRWxlbSAgICAqZWxlbSA9IChEZWZFbGVtICop IGxmaXJzdChjZWxsKTsKKwkJT2JqRWxlbSAgICAqbmV3ZWxtOworCisJCWlmIChzdHJjbXAoZWxl bS0+ZGVmbmFtZSwgImNhY2hlIikgPT0gMCkKKwkJCW5ld2VsbSA9IGRlcGFyc2VfU2VxX0NhY2hl KHNlcWZvcm0sIGZhbHNlKTsKKwkJZWxzZSBpZiAoc3RyY21wKGVsZW0tPmRlZm5hbWUsICJjeWNs ZSIpID09IDApCisJCQluZXdlbG0gPSBkZXBhcnNlX1NlcV9DeWNsZShzZXFmb3JtLCBmYWxzZSk7 CisJCWVsc2UgaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAiaW5jcmVtZW50IikgPT0gMCkKKwkJ CW5ld2VsbSA9IGRlcGFyc2VfU2VxX0luY3JlbWVudEJ5KHNlcWZvcm0sIGZhbHNlKTsKKwkJZWxz ZSBpZiAoc3RyY21wKGVsZW0tPmRlZm5hbWUsICJtaW52YWx1ZSIpID09IDApCisJCQluZXdlbG0g PSBkZXBhcnNlX1NlcV9NaW52YWx1ZShzZXFmb3JtLCBmYWxzZSk7CisJCWVsc2UgaWYgKHN0cmNt cChlbGVtLT5kZWZuYW1lLCAibWF4dmFsdWUiKSA9PSAwKQorCQkJbmV3ZWxtID0gZGVwYXJzZV9T ZXFfTWF4dmFsdWUoc2VxZm9ybSwgZmFsc2UpOworCQllbHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVm bmFtZSwgInN0YXJ0IikgPT0gMCkKKwkJCW5ld2VsbSA9IGRlcGFyc2VfU2VxX1N0YXJ0d2l0aChz ZXFmb3JtLCBmYWxzZSk7CisJCWVsc2UgaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAicmVzdGFy dCIpID09IDApCisJCQluZXdlbG0gPSBkZXBhcnNlX1NlcV9SZXN0YXJ0KHNlcXZhbHVlcy0+bGFz dF92YWx1ZSk7CisJCWVsc2UgaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAib3duZWRfYnkiKSA9 PSAwKQorCQkJbmV3ZWxtID0gZGVwYXJzZV9TZXFfT3duZWRCeShvYmplY3RJZCwgZmFsc2UpOwor CQllbHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgImFzIikgPT0gMCkKKwkJCW5ld2VsbSA9 IGRlcGFyc2VfU2VxX0FzKHNlcWZvcm0pOworCQllbHNlCisJCQllbG9nKEVSUk9SLCAiaW52YWxp ZCBzZXF1ZW5jZSBvcHRpb24gJXMiLCBlbGVtLT5kZWZuYW1lKTsKKworCQllbGVtcyA9IGxhcHBl bmQoZWxlbXMsIG5ld2VsbSk7CisJfQorCisJcmVsYXRpb24gPSByZWxhdGlvbl9vcGVuKG9iamVj dElkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIFNF UVVFTkNFICV7aWRlbnRpdHl9RCAle2RlZmluaXRpb246IH1zIiwgMiwKKwkJCQkJCSAiaWRlbnRp dHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShyZWxh dGlvbi0+cmRfcmVsLT5yZWxuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbGF0aW9uKSksCisJCQkJCQkgImRlZmluaXRpb24iLCBPYmpUeXBlQXJyYXks IGVsZW1zKTsKKworCXJlbGF0aW9uX2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOwor CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYW4gQWx0ZXJUeXBlU3RtdC4KKyAq CisgKiBHaXZlbiBhIHR5cGUgT0lEIGFuZCBhIHBhcnNlIHRyZWUgdGhhdCBtb2RpZmllZCBpdCwg cmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgYWx0ZXIgdHlwZS4KKyAqCisg KiBWZXJib3NlIHN5bnRheAorICogQUxURVIgVFlQRSAle2lkZW50aXR5fUQgU0VUICgle2RlZmlu aXRpb246IH1zKQorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0FsdGVyVHlwZVNldFN0 bXQoT2lkIG9iamVjdElkLCBOb2RlICpjbWQpCit7CisJQWx0ZXJUeXBlU3RtdCAqYWx0ZXJUeXBl U2V0U3RtdCA9IChBbHRlclR5cGVTdG10ICopIGNtZDsKKwlMaXN0Q2VsbCAgICpwbDsKKwlMaXN0 CSAgICplbGVtcyA9IE5JTDsKKwlIZWFwVHVwbGUJdHlwVHVwOworCUZvcm1fcGdfdHlwZSB0eXBG b3JtOworCisJdHlwVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsIE9iamVjdElkR2V0RGF0 dW0ob2JqZWN0SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHlwVHVwKSkKKwkJZWxvZyhF UlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHR5cGUgd2l0aCBPSUQgJXUiLCBvYmplY3RJ ZCk7CisJdHlwRm9ybSA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVDVCh0eXBUdXApOworCisJZm9y ZWFjaChwbCwgYWx0ZXJUeXBlU2V0U3RtdC0+b3B0aW9ucykKKwl7CisJCURlZkVsZW0gICAgKmRl ZmVsID0gKERlZkVsZW0gKikgbGZpcnN0KHBsKTsKKwkJT2JqRWxlbSAgICAqbmV3ZWxtOworCisJ CWlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJzdG9yYWdlIikgPT0gMCkKKwkJCW5ld2VsbSA9 IGRlcGFyc2VfVHlwZV9TdG9yYWdlKHR5cEZvcm0pOworCQllbHNlIGlmIChzdHJjbXAoZGVmZWwt PmRlZm5hbWUsICJyZWNlaXZlIikgPT0gMCkKKwkJCW5ld2VsbSA9IGRlcGFyc2VfVHlwZV9SZWNl aXZlKHR5cEZvcm0pOworCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJzZW5kIikg PT0gMCkKKwkJCW5ld2VsbSA9IGRlcGFyc2VfVHlwZV9TZW5kKHR5cEZvcm0pOworCQllbHNlIGlm IChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ0eXBtb2RfaW4iKSA9PSAwKQorCQkJbmV3ZWxtID0g ZGVwYXJzZV9UeXBlX1R5cG1vZF9Jbih0eXBGb3JtKTsKKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVs LT5kZWZuYW1lLCAidHlwbW9kX291dCIpID09IDApCisJCQluZXdlbG0gPSBkZXBhcnNlX1R5cGVf VHlwbW9kX091dCh0eXBGb3JtKTsKKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAi YW5hbHl6ZSIpID09IDApCisJCQluZXdlbG0gPSBkZXBhcnNlX1R5cGVfQW5hbHl6ZSh0eXBGb3Jt KTsKKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAic3Vic2NyaXB0IikgPT0gMCkK KwkJCW5ld2VsbSA9IGRlcGFyc2VfVHlwZV9TdWJzY3JpcHQodHlwRm9ybSk7CisJCWVsc2UKKwkJ CWVsb2coRVJST1IsICJpbnZhbGlkIHR5cGUgb3B0aW9uICVzIiwgZGVmZWwtPmRlZm5hbWUpOwor CisJCWVsZW1zID0gbGFwcGVuZChlbGVtcywgbmV3ZWxtKTsKKwl9CisKKwlSZWxlYXNlU3lzQ2Fj aGUodHlwVHVwKTsKKworCXJldHVybiBuZXdfb2JqdHJlZV9WQSgiQUxURVIgVFlQRSAle2lkZW50 aXR5fUQgU0VUICgle2RlZmluaXRpb246LCB9cykiLCAyLAorCQkJCQkJICAiaWRlbnRpdHkiLCBP YmpUeXBlT2JqZWN0LAorCQkJCQkJICBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoVHlwZVJl bGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJICBvYmplY3RJZCksCisJCQkJCQkgICJkZWZpbml0aW9u IiwgT2JqVHlwZUFycmF5LCBlbGVtcyk7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ29tcG9zaXRl VHlwZVN0bXQgKENSRUFURSBUWVBFIEFTKQorICoKKyAqIEdpdmVuIGEgQ29tcG9zaXRlIHR5cGUg T0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbgorICogT2Jq VHJlZSByZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9uIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBz eW50YXgKKyAqIENSRUFURSBUWVBFICV7aWRlbnRpdHl9RCBBUyAoJXtjb2x1bW5zOiwgfXMpCisg Ki8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ29tcG9zaXRlVHlwZVN0bXQoT2lkIG9iamVj dElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQ29tcG9zaXRlVHlwZVN0bXQgKm5vZGUgPSAoQ29t cG9zaXRlVHlwZVN0bXQgKikgcGFyc2V0cmVlOworCUhlYXBUdXBsZQl0eXB0dXA7CisJRm9ybV9w Z190eXBlIHR5cGZvcm07CisJUmVsYXRpb24JdHlwZXJlbDsKKwlMaXN0CSAgICpkcGNvbnRleHQ7 CisJTGlzdAkgICAqdGFibGVlbHRzID0gTklMOworCisJLyogRmluZCB0aGUgcGdfdHlwZSBlbnRy eSBhbmQgb3BlbiB0aGUgY29ycmVzcG9uZGluZyByZWxhdGlvbiAqLworCXR5cHR1cCA9IFNlYXJj aFN5c0NhY2hlMShUWVBFT0lELCBPYmplY3RJZEdldERhdHVtKG9iamVjdElkKSk7CisJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKHR5cHR1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciB0eXBlIHdpdGggT0lEICV1Iiwgb2JqZWN0SWQpOworCXR5cGZvcm0gPSAoRm9ybV9w Z190eXBlKSBHRVRTVFJVQ1QodHlwdHVwKTsKKwl0eXBlcmVsID0gcmVsYXRpb25fb3Blbih0eXBm b3JtLT50eXByZWxpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCWRwY29udGV4dCA9IGRlcGFyc2Vf Y29udGV4dF9mb3IoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodHlwZXJlbCksCisJCQkJCQkJCQlS ZWxhdGlvbkdldFJlbGlkKHR5cGVyZWwpKTsKKworCXRhYmxlZWx0cyA9IGRlcGFyc2VfVGFibGVF bGVtZW50cyh0eXBlcmVsLCBub2RlLT5jb2xkZWZsaXN0LCBkcGNvbnRleHQsCisJCQkJCQkJCQkg IGZhbHNlLAkvKiBub3QgdHlwZWQgKi8KKwkJCQkJCQkJCSAgdHJ1ZSk7CS8qIGNvbXBvc2l0ZSB0 eXBlICovCisKKwl0YWJsZV9jbG9zZSh0eXBlcmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCVJlbGVh c2VTeXNDYWNoZSh0eXB0dXApOworCisJcmV0dXJuIG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUgVFlQ RSAle2lkZW50aXR5fUQgQVMgKCV7Y29sdW1uczosIH1zKSIsIDIsCisJCQkJCQkgICJpZGVudGl0 eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChU eXBlUmVsYXRpb25JZCwgb2JqZWN0SWQpLAorCQkJCQkJICAiY29sdW1ucyIsIE9ialR5cGVBcnJh eSwgdGFibGVlbHRzKTsKK30KKworLyoKKyAqIERlcGFyc2UgYSBDcmVhdGVDb252ZXJzaW9uU3Rt dAorICoKKyAqIEdpdmVuIGEgY29udmVyc2lvbiBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQg Y3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgY3JlYXRp b24gY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFICV7ZGVmYXVsdH1z IENPTlZFUlNJT04gJXtpZGVudGl0eX1EIEZPUiAle3NvdXJjZX1MIFRPICV7ZGVzdH1MCisgKiBG Uk9NICV7ZnVuY3Rpb259RAorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NyZWF0ZUNv bnZlcnNpb24oT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJSGVhcFR1cGxlCWNv blR1cDsKKwlSZWxhdGlvbgljb252cmVsOworCUZvcm1fcGdfY29udmVyc2lvbiBjb25Gb3JtOwor CU9ialRyZWUgICAgKnJldDsKKworCWNvbnZyZWwgPSB0YWJsZV9vcGVuKENvbnZlcnNpb25SZWxh dGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCWNvblR1cCA9IGdldF9jYXRhbG9nX29iamVjdF9i eV9vaWQoY29udnJlbCwgQW51bV9wZ19jb252ZXJzaW9uX29pZCwgb2JqZWN0SWQpOworCWlmICgh SGVhcFR1cGxlSXNWYWxpZChjb25UdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgY29udmVyc2lvbiB3aXRoIE9JRCAldSIsIG9iamVjdElkKTsKKwljb25Gb3JtID0g KEZvcm1fcGdfY29udmVyc2lvbikgR0VUU1RSVUNUKGNvblR1cCk7CisKKwlyZXQgPSBuZXdfb2Jq dHJlZV9WQSgiQ1JFQVRFICV7ZGVmYXVsdH1zIENPTlZFUlNJT04gJXtpZGVudGl0eX1EIEZPUiAl e3NvdXJjZX1MIFRPICV7ZGVzdH1MIEZST00gJXtmdW5jdGlvbn1EIiwgNSwKKwkJCQkJCSAgImRl ZmF1bHQiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJICBjb25Gb3JtLT5jb25kZWZhdWx0ID8gIkRF RkFVTFQiIDogIiIsCisJCQkJCQkgICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkg IG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShjb25Gb3JtLT5jb25uYW1lc3BhY2UsCisJCQkJCQkJ CQkJCQkgICBOYW1lU3RyKGNvbkZvcm0tPmNvbm5hbWUpKSwKKwkJCQkJCSAgInNvdXJjZSIsIE9i alR5cGVTdHJpbmcsCisJCQkJCQkgIChjaGFyICopcGdfZW5jb2RpbmdfdG9fY2hhcihjb25Gb3Jt LT5jb25mb3JlbmNvZGluZyksCisJCQkJCQkgICJkZXN0IiwgT2JqVHlwZVN0cmluZywKKwkJCQkJ CSAgKGNoYXIgKilwZ19lbmNvZGluZ190b19jaGFyKGNvbkZvcm0tPmNvbnRvZW5jb2RpbmcpLAor CQkJCQkJICAiZnVuY3Rpb24iLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJICBuZXdfb2JqdHJlZV9m b3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkgIGNvbkZv cm0tPmNvbnByb2MpKTsKKworCXRhYmxlX2Nsb3NlKGNvbnZyZWwsIEFjY2Vzc1NoYXJlTG9jayk7 CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIENyZWF0ZUVudW1TdG10IChD UkVBVEUgVFlQRSBBUyBFTlVNKQorICoKKyAqIEdpdmVuIGEgRW51bSB0eXBlIE9JRCBhbmQgdGhl IHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVz ZW50aW5nIHRoZSBjcmVhdGlvbiBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBD UkVBVEUgVFlQRSAle2lkZW50aXR5fUQgQVMgRU5VTSAoJXt2YWx1ZXM6LCB9TCkKKyAqLworc3Rh dGljIE9ialRyZWUgKgorZGVwYXJzZV9DcmVhdGVFbnVtU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUg KnBhcnNldHJlZSkKK3sKKwlDcmVhdGVFbnVtU3RtdCAqbm9kZSA9IChDcmVhdGVFbnVtU3RtdCAq KSBwYXJzZXRyZWU7CisJTGlzdAkgICAqdmFsdWVzID0gTklMOworCUxpc3RDZWxsICAgKmNlbGw7 CisKKwlmb3JlYWNoKGNlbGwsIG5vZGUtPnZhbHMpCisJCXZhbHVlcyA9IGxhcHBlbmQodmFsdWVz LCBuZXdfc3RyaW5nX29iamVjdChzdHJWYWwobGZpcnN0X25vZGUoU3RyaW5nLCBjZWxsKSkpKTsK KworCXJldHVybiBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIFRZUEUgJXtpZGVudGl0eX1EIEFTIEVO VU0gKCV7dmFsdWVzOiwgfUwpIiwgMiwKKwkJCQkJCSAgImlkZW50aXR5IiwgT2JqVHlwZU9iamVj dCwKKwkJCQkJCSAgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFR5cGVSZWxhdGlvbklkLCBv YmplY3RJZCksCisJCQkJCQkgICJ2YWx1ZXMiLCBPYmpUeXBlQXJyYXksIHZhbHVlcyk7Cit9CisK Ky8qCisgKiBEZXBhcnNlIGEgQ3JlYXRlRXh0ZW5zaW9uU3RtdAorICoKKyAqIEdpdmVuIGFuIGV4 dGVuc2lvbiBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFu IE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisgKiBW ZXJib3NlIHN5bnRheAorICogQ1JFQVRFIEVYVEVOU0lPTiAle2lmX25vdF9leGlzdHN9cyAle25h bWV9SSAle29wdGlvbnM6IH1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRl RXh0ZW5zaW9uU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlDcmVhdGVF eHRlbnNpb25TdG10ICpub2RlID0gKENyZWF0ZUV4dGVuc2lvblN0bXQgKikgcGFyc2V0cmVlOwor CVJlbGF0aW9uCXBnX2V4dGVuc2lvbjsKKwlIZWFwVHVwbGUJZXh0VHVwOworCUZvcm1fcGdfZXh0 ZW5zaW9uIGV4dEZvcm07CisJT2JqVHJlZSAgICAqdG1wOworCUxpc3QJICAgKmxpc3QgPSBOSUw7 CisJTGlzdENlbGwgICAqY2VsbDsKKworCXBnX2V4dGVuc2lvbiA9IHRhYmxlX29wZW4oRXh0ZW5z aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlleHRUdXAgPSBnZXRfY2F0YWxvZ19v YmplY3RfYnlfb2lkKHBnX2V4dGVuc2lvbiwgQW51bV9wZ19leHRlbnNpb25fb2lkLCBvYmplY3RJ ZCk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGV4dFR1cCkpCisJCWVsb2coRVJST1IsICJjYWNo ZSBsb29rdXAgZmFpbGVkIGZvciBleHRlbnNpb24gd2l0aCBPSUQgJXUiLCBvYmplY3RJZCk7CisJ ZXh0Rm9ybSA9IChGb3JtX3BnX2V4dGVuc2lvbikgR0VUU1RSVUNUKGV4dFR1cCk7CisKKwkvKiBM aXN0IG9mIG9wdGlvbnMgKi8KKwlmb3JlYWNoKGNlbGwsIG5vZGUtPm9wdGlvbnMpCisJeworCQlE ZWZFbGVtICAgICpvcHQgPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7CisKKwkJaWYgKHN0cmNt cChvcHQtPmRlZm5hbWUsICJzY2hlbWEiKSA9PSAwKQorCQl7CisJCQkvKiBTa2lwIHRoaXMgb25l OyB3ZSBhZGQgb25lIHVuY29uZGl0aW9uYWxseSBiZWxvdyAqLworCQkJY29udGludWU7CisJCX0K KwkJZWxzZSBpZiAoc3RyY21wKG9wdC0+ZGVmbmFtZSwgIm5ld192ZXJzaW9uIikgPT0gMCkKKwkJ eworCQkJdG1wID0gbmV3X29ianRyZWVfVkEoIlZFUlNJT04gJXt2ZXJzaW9ufUwiLCAyLAorCQkJ CQkJCQkgInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAidmVyc2lvbiIsCisJCQkJCQkJCSAidmVyc2lv biIsIE9ialR5cGVTdHJpbmcsIGRlZkdldFN0cmluZyhvcHQpKTsKKwkJCWxpc3QgPSBsYXBwZW5k KGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCQl9CisJCWVsc2UgaWYgKHN0cmNtcChv cHQtPmRlZm5hbWUsICJvbGRfdmVyc2lvbiIpID09IDApCisJCXsKKwkJCXRtcCA9IG5ld19vYmp0 cmVlX1ZBKCJGUk9NICV7dmVyc2lvbn1MIiwgMiwKKwkJCQkJCQkJICJ0eXBlIiwgT2JqVHlwZVN0 cmluZywgImZyb20iLAorCQkJCQkJCQkgInZlcnNpb24iLCBPYmpUeXBlU3RyaW5nLCBkZWZHZXRT dHJpbmcob3B0KSk7CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0 bXApKTsKKwkJfQorCQllbHNlCisJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgb3B0aW9uICVz Iiwgb3B0LT5kZWZuYW1lKTsKKwl9CisKKwkvKiBBZGQgdGhlIFNDSEVNQSBvcHRpb24gKi8KKwl0 bXAgPSBuZXdfb2JqdHJlZV9WQSgiU0NIRU1BICV7c2NoZW1hfUkiLCAyLAorCQkJCQkJICJ0eXBl IiwgT2JqVHlwZVN0cmluZywgInNjaGVtYSIsCisJCQkJCQkgInNjaGVtYSIsIE9ialR5cGVTdHJp bmcsCisJCQkJCQkgZ2V0X25hbWVzcGFjZV9uYW1lKGV4dEZvcm0tPmV4dG5hbWVzcGFjZSkpOwor CWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCXRhYmxlX2Ns b3NlKHBnX2V4dGVuc2lvbiwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiBuZXdfb2JqdHJl ZV9WQSgiQ1JFQVRFIEVYVEVOU0lPTiAle2lmX25vdF9leGlzdHN9cyAle25hbWV9SSAle29wdGlv bnM6IH1zIiwgMywKKwkJCQkJCSAgImlmX25vdF9leGlzdHMiLCBPYmpUeXBlU3RyaW5nLAorCQkJ CQkJICBub2RlLT5pZl9ub3RfZXhpc3RzID8gIklGIE5PVCBFWElTVFMiIDogIiIsCisJCQkJCQkg ICJuYW1lIiwgT2JqVHlwZVN0cmluZywgbm9kZS0+ZXh0bmFtZSwKKwkJCQkJCSAgIm9wdGlvbnMi LCBPYmpUeXBlQXJyYXksIGxpc3QpOworfQorCisvKgorICogSWYgYSBjb2x1bW4gbmFtZSBpcyBz cGVjaWZpZWQsIGFkZCBhbiBlbGVtZW50IGZvciBpdDsgb3RoZXJ3aXNlIGl0J3MgYQorICogdGFi bGUtbGV2ZWwgb3B0aW9uLgorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0Zkd09wdGlv bnMoTGlzdCAqb3B0aW9ucywgY2hhciAqY29sbmFtZSwgYm9vbCBhbHRlcmNvbG9wdGlvbnMpCit7 CisJT2JqVHJlZSAgICAqcmV0OworCisJaWYgKGNvbG5hbWUpCisJCXJldCA9IG5ld19vYmp0cmVl X1ZBKCJBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSAle29wdGlvbnN9cyIsIDIsCisJCQkJCQkJICJj b2x1bW4iLCBPYmpUeXBlU3RyaW5nLCBjb2xuYW1lLAorCQkJCQkJCSAib3B0aW9ucyIsIE9ialR5 cGVTdHJpbmcsCisJCQkJCQkJIGFsdGVyY29sb3B0aW9ucyA/ICJPUFRJT05TIiA6ICIiKTsKKwll bHNlCisJCXJldCA9IG5ld19vYmp0cmVlKCJPUFRJT05TIik7CisKKwlpZiAob3B0aW9ucyAhPSBO SUwpCisJeworCQlMaXN0CSAgICpvcHRvdXQgPSBOSUw7CisJCUxpc3RDZWxsICAgKmNlbGw7CisK KwkJZm9yZWFjaChjZWxsLCBvcHRpb25zKQorCQl7CisJCQlEZWZFbGVtICAgICplbGVtOworCQkJ T2JqVHJlZSAgICAqb3B0OworCisJCQllbGVtID0gKERlZkVsZW0gKikgbGZpcnN0KGNlbGwpOwor CisJCQlzd2l0Y2ggKGVsZW0tPmRlZmFjdGlvbikKKwkJCXsKKwkJCQljYXNlIERFRkVMRU1fVU5T UEVDOgorCQkJCQlvcHQgPSBuZXdfb2JqdHJlZV9WQSgiJXtsYWJlbH1JICV7dmFsdWV9TCIsIDIs CisJCQkJCQkJCQkJICJsYWJlbCIsIE9ialR5cGVTdHJpbmcsIGVsZW0tPmRlZm5hbWUsCisJCQkJ CQkJCQkJICJ2YWx1ZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJIGVsZW0tPmFyZyA/IGRl ZkdldFN0cmluZyhlbGVtKSA6CisJCQkJCQkJCQkJIGRlZkdldEJvb2xlYW4oZWxlbSkgPyAiVFJV RSIgOiAiRkFMU0UiKTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBERUZFTEVNX1NFVDoKKwkJCQkJ b3B0ID0gbmV3X29ianRyZWVfVkEoIlNFVCAle2xhYmVsfUkgJXt2YWx1ZX1MIiwgMiwKKwkJCQkJ CQkJCQkgImxhYmVsIiwgT2JqVHlwZVN0cmluZywgZWxlbS0+ZGVmbmFtZSwKKwkJCQkJCQkJCQkg InZhbHVlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQkgZWxlbS0+YXJnID8gZGVmR2V0U3Ry aW5nKGVsZW0pIDoKKwkJCQkJCQkJCQkgZGVmR2V0Qm9vbGVhbihlbGVtKSA/ICJUUlVFIiA6ICJG QUxTRSIpOworCQkJCQlicmVhazsKKwkJCQljYXNlIERFRkVMRU1fQUREOgorCQkJCQlvcHQgPSBu ZXdfb2JqdHJlZV9WQSgiQUREICV7bGFiZWx9SSAle3ZhbHVlfUwiLCAyLAorCQkJCQkJCQkJCSAi bGFiZWwiLCBPYmpUeXBlU3RyaW5nLCBlbGVtLT5kZWZuYW1lLAorCQkJCQkJCQkJCSAidmFsdWUi LCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCSBlbGVtLT5hcmcgPyBkZWZHZXRTdHJpbmcoZWxl bSkgOgorCQkJCQkJCQkJCSBkZWZHZXRCb29sZWFuKGVsZW0pID8gIlRSVUUiIDogIkZBTFNFIik7 CisJCQkJCWJyZWFrOworCQkJCWNhc2UgREVGRUxFTV9EUk9QOgorCQkJCQlvcHQgPSBuZXdfb2Jq dHJlZV9WQSgiRFJPUCAle2xhYmVsfUkiLCAxLAorCQkJCQkJCQkJCSAibGFiZWwiLCBPYmpUeXBl U3RyaW5nLCBlbGVtLT5kZWZuYW1lKTsKKwkJCQkJYnJlYWs7CisJCQkJZGVmYXVsdDoKKwkJCQkJ ZWxvZyhFUlJPUiwgImludmFsaWQgZGVmIGFjdGlvbiAlZCIsIGVsZW0tPmRlZmFjdGlvbik7CisJ CQkJCW9wdCA9IE5VTEw7CisJCQl9CisKKwkJCW9wdG91dCA9IGxhcHBlbmQob3B0b3V0LCBuZXdf b2JqZWN0X29iamVjdChvcHQpKTsKKwkJfQorCisJCWFwcGVuZF9hcnJheV9vYmplY3QocmV0LCAi KCV7b3B0aW9uOiAsfXMpIiwgb3B0b3V0KTsKKwl9CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNl bnQocmV0KTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ3JlYXRlRmR3 U3RtdCAoQ1JFQVRFIEZPUkVJR04gREFUQSBXUkFQUEVSKQorICoKKyAqIEdpdmVuIGFuIEZEVyBP SUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUK KyAqIHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5 bnRheAorICogQ1JFQVRFIEZPUkVJR04gREFUQSBXUkFQUEVSICV7aWRlbnRpdHl9SSAle2hhbmRs ZXJ9cyAle3ZhbGlkYXRvcn1zICV7Z2VuZXJpY19vcHRpb25zfXMKKyAqLworc3RhdGljIE9ialRy ZWUgKgorZGVwYXJzZV9DcmVhdGVGZHdTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVl KQoreworCUNyZWF0ZUZkd1N0bXQgKm5vZGUgPSAoQ3JlYXRlRmR3U3RtdCAqKSBwYXJzZXRyZWU7 CisJSGVhcFR1cGxlCWZkd1R1cDsKKwlGb3JtX3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyIGZkd0Zv cm07CisJUmVsYXRpb24JcmVsOworCU9ialRyZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXA7 CisKKwlyZWwgPSB0YWJsZV9vcGVuKEZvcmVpZ25EYXRhV3JhcHBlclJlbGF0aW9uSWQsIFJvd0V4 Y2x1c2l2ZUxvY2spOworCisJZmR3VHVwID0gU2VhcmNoU3lzQ2FjaGUxKEZPUkVJR05EQVRBV1JB UFBFUk9JRCwKKwkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJZCkpOworCWlmICghSGVh cFR1cGxlSXNWYWxpZChmZHdUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3IgZm9yZWlnbi1kYXRhIHdyYXBwZXIgd2l0aCBPSUQgJXUiLAorCQkJIG9iamVjdElkKTsK KworCWZkd0Zvcm0gPSAoRm9ybV9wZ19mb3JlaWduX2RhdGFfd3JhcHBlcikgR0VUU1RSVUNUKGZk d1R1cCk7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIEZPUkVJR04gREFUQSBXUkFQ UEVSICV7aWRlbnRpdHl9SSIsIDEsCisJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZVN0cmluZywg TmFtZVN0cihmZHdGb3JtLT5mZHduYW1lKSk7CisKKwkvKiBBZGQgSEFORExFUiBjbGF1c2UgKi8K KwlpZiAoIU9pZElzVmFsaWQoZmR3Rm9ybS0+ZmR3aGFuZGxlcikpCisJCXRtcCA9IG5ld19vYmp0 cmVlKCJOTyBIQU5ETEVSIik7CisJZWxzZQorCXsKKwkJdG1wID0gbmV3X29ianRyZWVfVkEoIkhB TkRMRVIgJXtwcm9jZWR1cmV9RCIsIDEsCisJCQkJCQkJICJwcm9jZWR1cmUiLCBPYmpUeXBlT2Jq ZWN0LAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRp b25JZCwKKwkJCQkJCQkJCQkJCQkJIGZkd0Zvcm0tPmZkd2hhbmRsZXIpKTsKKwl9CisJYXBwZW5k X29iamVjdF9vYmplY3QocmV0LCAiJXtoYW5kbGVyfXMiLCB0bXApOworCisJLyogQWRkIFZBTElE QVRPUiBjbGF1c2UgKi8KKwlpZiAoIU9pZElzVmFsaWQoZmR3Rm9ybS0+ZmR3dmFsaWRhdG9yKSkK KwkJdG1wID0gbmV3X29ianRyZWUoIk5PIFZBTElEQVRPUiIpOworCWVsc2UKKwl7CisJCXRtcCA9 IG5ld19vYmp0cmVlX1ZBKCJWQUxJREFUT1IgJXtwcm9jZWR1cmV9RCIsIDEsCisJCQkJCQkJICJw cm9jZWR1cmUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5h bWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJIGZkd0Zvcm0tPmZkd3Zh bGlkYXRvcikpOworCX0KKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle3ZhbGlkYXRvcn1z IiwgdG1wKTsKKworCS8qIEFkZCBhbiBPUFRJT05TIGNsYXVzZSwgaWYgYW55ICovCisJYXBwZW5k X29iamVjdF9vYmplY3QocmV0LCAiJXtnZW5lcmljX29wdGlvbnN9cyIsCisJCQkJCQkgZGVwYXJz ZV9GZHdPcHRpb25zKG5vZGUtPm9wdGlvbnMsIE5VTEwsIGZhbHNlKSk7CisKKwlSZWxlYXNlU3lz Q2FjaGUoZmR3VHVwKTsKKwl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJ cmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYW4gQWx0ZXJGZHdTdG10IChBTFRFUiBG T1JFSUdOIERBVEEgV1JBUFBFUikKKyAqCisgKiBHaXZlbiBhbiBGRFcgT0lEIGFuZCB0aGUgcGFy c2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbiBPYmpUcmVlCisgKiByZXByZXNlbnRp bmcgdGhlIGFsdGVyIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIEFMVEVSIEZP UkVJR04gREFUQSBXUkFQUEVSICV7aWRlbnRpdHl9SSAle2Zkd19vcHRpb25zOiB9cyAle2dlbmVy aWNfb3B0aW9uc31ECisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJGZHdTdG10 KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUFsdGVyRmR3U3RtdCAqbm9kZSA9 IChBbHRlckZkd1N0bXQgKikgcGFyc2V0cmVlOworCUhlYXBUdXBsZQlmZHdUdXA7CisJRm9ybV9w Z19mb3JlaWduX2RhdGFfd3JhcHBlciBmZHdGb3JtOworCVJlbGF0aW9uCXJlbDsKKwlPYmpUcmVl ICAgICpyZXQ7CisJTGlzdAkgICAqZmR3X29wdGlvbnMgPSBOSUw7CisJTGlzdENlbGwgICAqY2Vs bDsKKworCXJlbCA9IHRhYmxlX29wZW4oRm9yZWlnbkRhdGFXcmFwcGVyUmVsYXRpb25JZCwgUm93 RXhjbHVzaXZlTG9jayk7CisKKwlmZHdUdXAgPSBTZWFyY2hTeXNDYWNoZTEoRk9SRUlHTkRBVEFX UkFQUEVST0lELAorCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKG9iamVjdElkKSk7CisJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKGZkd1R1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciBmb3JlaWduLWRhdGEgd3JhcHBlciB3aXRoIE9JRCAldSIsCisJCQkgb2JqZWN0SWQp OworCisJZmR3Rm9ybSA9IChGb3JtX3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyKSBHRVRTVFJVQ1Qo ZmR3VHVwKTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBGT1JFSUdOIERBVEEgV1JB UFBFUiAle2lkZW50aXR5fUkiLCAxLAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVTdHJpbmcs IE5hbWVTdHIoZmR3Rm9ybS0+ZmR3bmFtZSkpOworCisJLyoKKwkgKiBJdGVyYXRlIHRocm91Z2gg b3B0aW9ucywgdG8gc2VlIHdoYXQgY2hhbmdlZCwgYnV0IHVzZSBjYXRhbG9nIGFzIGEKKwkgKiBi YXNpcyBmb3IgbmV3IHZhbHVlcy4KKwkgKi8KKwlmb3JlYWNoKGNlbGwsIG5vZGUtPmZ1bmNfb3B0 aW9ucykKKwl7CisJCURlZkVsZW0gICAgKmVsZW07CisJCU9ialRyZWUgICAgKnRtcDsKKworCQll bGVtID0gbGZpcnN0KGNlbGwpOworCisJCWlmIChwZ19zdHJjYXNlY21wKGVsZW0tPmRlZm5hbWUs ICJoYW5kbGVyIikgPT0gMCkKKwkJeworCQkJLyogYWRkIEhBTkRMRVIgY2xhdXNlICovCisJCQlp ZiAoIU9pZElzVmFsaWQoZmR3Rm9ybS0+ZmR3aGFuZGxlcikpCisJCQkJdG1wID0gbmV3X29ianRy ZWUoIk5PIEhBTkRMRVIiKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQl0bXAgPSBuZXdfb2JqdHJlZV9W QSgiSEFORExFUiAle3Byb2NlZHVyZX1EIiwgMSwKKwkJCQkJCQkJCSAicHJvY2VkdXJlIiwgT2Jq VHlwZU9iamVjdCwKKwkJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2Vk dXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJCQkgZmR3Rm9ybS0+ZmR3aGFuZGxlcikpOwor CQkJfQorCQkJZmR3X29wdGlvbnMgPSBsYXBwZW5kKGZkd19vcHRpb25zLCBuZXdfb2JqZWN0X29i amVjdCh0bXApKTsKKwkJfQorCQllbHNlIGlmIChwZ19zdHJjYXNlY21wKGVsZW0tPmRlZm5hbWUs ICJ2YWxpZGF0b3IiKSA9PSAwKQorCQl7CisJCQkvKiBhZGQgVkFMSURBVE9SIGNsYXVzZSAqLwor CQkJaWYgKCFPaWRJc1ZhbGlkKGZkd0Zvcm0tPmZkd3ZhbGlkYXRvcikpCisJCQkJdG1wID0gbmV3 X29ianRyZWUoIk5PIFZBTElEQVRPUiIpOworCQkJZWxzZQorCQkJeworCQkJCXRtcCA9IG5ld19v Ymp0cmVlX1ZBKCJWQUxJREFUT1IgJXtwcm9jZWR1cmV9RCIsIDEsCisJCQkJCQkJCQkgInByb2Nl ZHVyZSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1l X2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCQkJIGZkd0Zvcm0tPmZkd3Zh bGlkYXRvcikpOworCQkJfQorCQkJZmR3X29wdGlvbnMgPSBsYXBwZW5kKGZkd19vcHRpb25zLCBu ZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwkJfQorCX0KKworCS8qIEFkZCBIQU5ETEVSL1ZBTElE QVRPUiBpZiBzcGVjaWZpZWQgKi8KKwlhcHBlbmRfYXJyYXlfb2JqZWN0KHJldCwgIiV7ZmR3X29w dGlvbnM6IH1zIiwgZmR3X29wdGlvbnMpOworCisJLyogQWRkIGFuIE9QVElPTlMgY2xhdXNlLCBp ZiBhbnkgKi8KKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle2dlbmVyaWNfb3B0aW9uc31E IiwKKwkJCQkJCSBkZXBhcnNlX0Zkd09wdGlvbnMobm9kZS0+b3B0aW9ucywgTlVMTCwgZmFsc2Up KTsKKworCVJlbGVhc2VTeXNDYWNoZShmZHdUdXApOworCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhj bHVzaXZlTG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIENSRUFU RSBUWVBFIEFTIFJBTkdFIHN0YXRlbWVudAorICoKKyAqIEdpdmVuIGEgUmFuZ2UgdHlwZSBPSUQg YW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAq IHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRh eAorICogQ1JFQVRFIFRZUEUgJXtpZGVudGl0eX1EIEFTIFJBTkdFICgle2RlZmluaXRpb246LCB9 cykKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9DcmVhdGVSYW5nZVN0bXQoT2lkIG9i amVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJT2JqVHJlZSAgICAqdG1wOworCUxpc3QJICAg KmRlZmluaXRpb24gPSBOSUw7CisJUmVsYXRpb24JcGdfcmFuZ2U7CisJSGVhcFR1cGxlCXJhbmdl VHVwOworCUZvcm1fcGdfcmFuZ2UgcmFuZ2VGb3JtOworCVNjYW5LZXlEYXRhIGtleVsxXTsKKwlT eXNTY2FuRGVzYyBzY2FuOworCisJcGdfcmFuZ2UgPSB0YWJsZV9vcGVuKFJhbmdlUmVsYXRpb25J ZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgma2V5WzBdLAorCQkJCUFudW1f cGdfcmFuZ2Vfcm5ndHlwaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAor CQkJCU9iamVjdElkR2V0RGF0dW0ob2JqZWN0SWQpKTsKKworCXNjYW4gPSBzeXN0YWJsZV9iZWdp bnNjYW4ocGdfcmFuZ2UsIFJhbmdlVHlwaWRJbmRleElkLCB0cnVlLAorCQkJCQkJCSAgTlVMTCwg MSwga2V5KTsKKworCXJhbmdlVHVwID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKTsKKwlpZiAoIUhl YXBUdXBsZUlzVmFsaWQocmFuZ2VUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgcmFuZ2Ugd2l0aCB0eXBlIE9JRCAldSIsCisJCQkgb2JqZWN0SWQpOworCisJcmFu Z2VGb3JtID0gKEZvcm1fcGdfcmFuZ2UpIEdFVFNUUlVDVChyYW5nZVR1cCk7CisKKwkvKiBTVUJU WVBFICovCisJdG1wID0gbmV3X29ianRyZWVfVkEoIlNVQlRZUEUgPSAle3R5cGV9RCIsIDIsCisJ CQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJzdWJ0eXBlIiwKKwkJCQkJCSAidHlwZSIs IE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFR5cGVS ZWxhdGlvbklkLCByYW5nZUZvcm0tPnJuZ3N1YnR5cGUpKTsKKwlkZWZpbml0aW9uID0gbGFwcGVu ZChkZWZpbml0aW9uLCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIFNVQlRZUEVfT1BD TEFTUyAqLworCWlmIChPaWRJc1ZhbGlkKHJhbmdlRm9ybS0+cm5nc3Vib3BjKSkKKwl7CisJCXRt cCA9IG5ld19vYmp0cmVlX1ZBKCJTVUJUWVBFX09QQ0xBU1MgPSAle29wY2xhc3N9RCIsIDIsCisJ CQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAib3BjbGFzcyIsCisJCQkJCQkJICJvcGNs YXNzIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lk KE9wZXJhdG9yQ2xhc3NSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkgcmFuZ2VGb3JtLT5ybmdz dWJvcGMpKTsKKwkJZGVmaW5pdGlvbiA9IGxhcHBlbmQoZGVmaW5pdGlvbiwgbmV3X29iamVjdF9v YmplY3QodG1wKSk7CisJfQorCisJLyogQ09MTEFUSU9OICovCisJaWYgKE9pZElzVmFsaWQocmFu Z2VGb3JtLT5ybmdjb2xsYXRpb24pKQorCXsKKwkJdG1wID0gbmV3X29ianRyZWVfVkEoIkNPTExB VElPTiA9ICV7Y29sbGF0aW9ufUQiLCAyLAorCQkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmlu ZywgImNvbGxhdGlvbiIsCisJCQkJCQkJICJjb2xsYXRpb24iLCBPYmpUeXBlT2JqZWN0LAorCQkJ CQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoQ29sbGF0aW9uUmVsYXRpb25JZCwKKwkJ CQkJCQkJCQkJCQkJIHJhbmdlRm9ybS0+cm5nY29sbGF0aW9uKSk7CisJCWRlZmluaXRpb24gPSBs YXBwZW5kKGRlZmluaXRpb24sIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCX0KKworCS8qIENB Tk9OSUNBTCAqLworCWlmIChPaWRJc1ZhbGlkKHJhbmdlRm9ybS0+cm5nY2Fub25pY2FsKSkKKwl7 CisJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJDQU5PTklDQUwgPSAle2Nhbm9uaWNhbH1EIiwgMiwK KwkJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJjYW5vbmljYWwiLAorCQkJCQkJCSAi Y2Fub25pY2FsIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxu YW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSByYW5nZUZvcm0tPnJu Z2Nhbm9uaWNhbCkpOworCQlkZWZpbml0aW9uID0gbGFwcGVuZChkZWZpbml0aW9uLCBuZXdfb2Jq ZWN0X29iamVjdCh0bXApKTsKKwl9CisKKwkvKiBTVUJUWVBFX0RJRkYgKi8KKwlpZiAoT2lkSXNW YWxpZChyYW5nZUZvcm0tPnJuZ3N1YmRpZmYpKQorCXsKKwkJdG1wID0gbmV3X29ianRyZWVfVkEo IlNVQlRZUEVfRElGRiA9ICV7c3VidHlwZV9kaWZmfUQiLCAyLAorCQkJCQkJCSAiY2xhdXNlIiwg T2JqVHlwZVN0cmluZywgInN1YnR5cGVfZGlmZiIsCisJCQkJCQkJICJzdWJ0eXBlX2RpZmYiLCBP YmpUeXBlT2JqZWN0LAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2Vk dXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJIHJhbmdlRm9ybS0+cm5nc3ViZGlmZikpOwor CQlkZWZpbml0aW9uID0gbGFwcGVuZChkZWZpbml0aW9uLCBuZXdfb2JqZWN0X29iamVjdCh0bXAp KTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKHBnX3Jhbmdl LCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIFRZ UEUgJXtpZGVudGl0eX1EIEFTIFJBTkdFICgle2RlZmluaXRpb246LCB9cykiLCAyLAorCQkJCQkJ ICAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJICBuZXdfb2JqdHJlZV9mb3JfcXVh bG5hbWVfaWQoVHlwZVJlbGF0aW9uSWQsIG9iamVjdElkKSwKKwkJCQkJCSAgImRlZmluaXRpb24i LCBPYmpUeXBlQXJyYXksIGRlZmluaXRpb24pOworfQorCisvKgorICogRGVwYXJzZSBhbiBBbHRl ckVudW1TdG10LgorICoKKyAqIEdpdmVuIGFuIGVudW0gT0lEIGFuZCBhIHBhcnNlIHRyZWUgdGhh dCBtb2RpZmllZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgYWx0 ZXIgdHlwZS4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIgVFlQRSAle2lkZW50aXR5 fUQgQUREIFZBTFVFICV7aWZfbm90X2V4aXN0c31zICV7dmFsdWV9TAorICogJXthZnRlcl9vcl9i ZWZvcmV9cyAle25laWdoYm9yfUwKKyAqIAlPUgorICogQUxURVIgVFlQRSAle2lkZW50aXR5fUQg UkVOQU1FIFZBTFVFICV7dmFsdWV9TCBUTyAle25ld3ZhbHVlfUwKKyAqLworc3RhdGljIE9ialRy ZWUgKgorZGVwYXJzZV9BbHRlckVudW1TdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVl KQoreworCUFsdGVyRW51bVN0bXQgKm5vZGUgPSAoQWx0ZXJFbnVtU3RtdCAqKSBwYXJzZXRyZWU7 CisJT2JqVHJlZSAgICAqcmV0OworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIFRZUEUg JXtpZGVudGl0eX1EIiwgMSwKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJ CQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChUeXBlUmVsYXRpb25JZCwKKwkJCQkJCQkJ CQkJCQkgb2JqZWN0SWQpKTsKKworCWlmICghbm9kZS0+b2xkVmFsKQorCXsKKwkJYXBwZW5kX2Zv cm1hdF9zdHJpbmcocmV0LCAiQUREIFZBTFVFIik7CisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJl dCwgIiV7aWZfbm90X2V4aXN0c31zIiwgImlmX25vdF9leGlzdHMiLAorCQkJCQkJCSBub2RlLT5z a2lwSWZOZXdWYWxFeGlzdHMgPyAiSUYgTk9UIEVYSVNUUyIgOiAiIik7CisKKwkJYXBwZW5kX3N0 cmluZ19vYmplY3QocmV0LCAiJXt2YWx1ZX1MIiwgInZhbHVlIiwgbm9kZS0+bmV3VmFsKTsKKwor CQlpZiAobm9kZS0+bmV3VmFsTmVpZ2hib3IpCisJCXsKKwkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0 KHJldCwgIiV7YWZ0ZXJfb3JfYmVmb3JlfXMiLAorCQkJCQkJCQkgImFmdGVyX29yX2JlZm9yZSIs CisJCQkJCQkJCSBub2RlLT5uZXdWYWxJc0FmdGVyID8gIkFGVEVSIiA6ICJCRUZPUkUiKTsKKwkJ CWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7bmVpZ2hib3J9TCIsICJuZWlnaGJvciIsCisJ CQkJCQkJCSBub2RlLT5uZXdWYWxOZWlnaGJvcik7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJYXBw ZW5kX3N0cmluZ19vYmplY3QocmV0LCAiUkVOQU1FIFZBTFVFICV7dmFsdWV9TCBUTyIsICJ2YWx1 ZSIsCisJCQkJCQkJIG5vZGUtPm9sZFZhbCk7CisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwg IiV7bmV3dmFsdWV9TCIsICJuZXd2YWx1ZSIsIG5vZGUtPm5ld1ZhbCk7CisJfQorCisJcmV0dXJu IHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYW4gQWx0ZXJFeHRlbnNpb25TdG10IChBTFRFUiBF WFRFTlNJT04gLi4gVVBEQVRFIFRPIFZFUlNJT04pCisgKgorICogR2l2ZW4gYW4gZXh0ZW5zaW9u IE9JRCBhbmQgYSBwYXJzZSB0cmVlIHRoYXQgbW9kaWZpZWQgaXQsIHJldHVybiBhbiBPYmpUcmVl CisgKiByZXByZXNlbnRpbmcgdGhlIGFsdGVyIHR5cGUuCisgKgorICogVmVyYm9zZSBzeW50YXgK KyAqIEFMVEVSIEVYVEVOU0lPTiAle2lkZW50aXR5fUkgVVBEQVRFICV7b3B0aW9uczogfXMKKyAq Lworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlckV4dGVuc2lvblN0bXQoT2lkIG9iamVj dElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQWx0ZXJFeHRlbnNpb25TdG10ICpub2RlID0gKEFs dGVyRXh0ZW5zaW9uU3RtdCAqKSBwYXJzZXRyZWU7CisJUmVsYXRpb24JcGdfZXh0ZW5zaW9uOwor CUhlYXBUdXBsZQlleHRUdXA7CisJRm9ybV9wZ19leHRlbnNpb24gZXh0Rm9ybTsKKwlPYmpUcmVl ICAgICpyZXQ7CisJTGlzdAkgICAqbGlzdCA9IE5JTDsKKwlMaXN0Q2VsbCAgICpjZWxsOworCURl ZkVsZW0gICAgKmRfbmV3X3ZlcnNpb24gPSBOVUxMOworCisJcGdfZXh0ZW5zaW9uID0gdGFibGVf b3BlbihFeHRlbnNpb25SZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCWV4dFR1cCA9IGdl dF9jYXRhbG9nX29iamVjdF9ieV9vaWQocGdfZXh0ZW5zaW9uLCBBbnVtX3BnX2V4dGVuc2lvbl9v aWQsIG9iamVjdElkKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoZXh0VHVwKSkKKwkJZWxvZyhF UlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGV4dGVuc2lvbiB3aXRoIE9JRCAldSIsCisJ CQkgb2JqZWN0SWQpOworCWV4dEZvcm0gPSAoRm9ybV9wZ19leHRlbnNpb24pIEdFVFNUUlVDVChl eHRUdXApOworCisJZm9yZWFjaChjZWxsLCBub2RlLT5vcHRpb25zKQorCXsKKwkJRGVmRWxlbSAg ICAqb3B0ID0gKERlZkVsZW0gKikgbGZpcnN0KGNlbGwpOworCisJCWlmIChzdHJjbXAob3B0LT5k ZWZuYW1lLCAibmV3X3ZlcnNpb24iKSA9PSAwKQorCQl7CisJCQlPYmpUcmVlICAgICp0bXA7CisK KwkJCWlmIChkX25ld192ZXJzaW9uKQorCQkJCWVsb2coRVJST1IsICJjb25mbGljdGluZyBvciBy ZWR1bmRhbnQgb3B0aW9ucyBmb3IgZXh0ZW5zaW9uIHdpdGggT0lEICV1IiwKKwkJCQkJIG9iamVj dElkKTsKKworCQkJZF9uZXdfdmVyc2lvbiA9IG9wdDsKKworCQkJdG1wID0gbmV3X29ianRyZWVf VkEoIlRPICV7dmVyc2lvbn1MIiwgMiwKKwkJCQkJCQkJICJ0eXBlIiwgT2JqVHlwZVN0cmluZywg InZlcnNpb24iLAorCQkJCQkJCQkgInZlcnNpb24iLCBPYmpUeXBlU3RyaW5nLCBkZWZHZXRTdHJp bmcob3B0KSk7CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXAp KTsKKwkJfQorCQllbHNlCisJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgb3B0aW9uICVzIiwg b3B0LT5kZWZuYW1lKTsKKwl9CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgRVhURU5T SU9OICV7aWRlbnRpdHl9SSBVUERBVEUgJXtvcHRpb25zOiB9cyIsIDIsCisJCQkJCQkgImlkZW50 aXR5IiwgT2JqVHlwZVN0cmluZywgTmFtZVN0cihleHRGb3JtLT5leHRuYW1lKSwKKwkJCQkJCSAi b3B0aW9ucyIsIE9ialR5cGVBcnJheSwgbGlzdCk7CisKKwl0YWJsZV9jbG9zZShwZ19leHRlbnNp b24sIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJz ZSBhbiBBbHRlckV4dGVuc2lvbkNvbnRlbnRzU3RtdCAoQUxURVIgRVhURU5TSU9OIGV4dCBBREQv RFJPUCBvYmplY3QpCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIEFMVEVSIEVYVEVOU0lPTiAl e2V4dGlkZW50aXR5fUkgJXtleHRvcHRpb259cyAle2V4dG9ianR5cGV9cworICogQUREL0RST1Ag JXtvYmppZGVudGl0eX1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJFeHRl bnNpb25Db250ZW50c1N0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUsCisJCQkJCQkJ CSAgIE9iamVjdEFkZHJlc3Mgb2JqZWN0QWRkcmVzcykKK3sKKwlBbHRlckV4dGVuc2lvbkNvbnRl bnRzU3RtdCAqbm9kZSA9IChBbHRlckV4dGVuc2lvbkNvbnRlbnRzU3RtdCAqKSBwYXJzZXRyZWU7 CisKKwlBc3NlcnQobm9kZS0+YWN0aW9uID09ICsxIHx8IG5vZGUtPmFjdGlvbiA9PSAtMSk7CisK KwlyZXR1cm4gbmV3X29ianRyZWVfVkEoIkFMVEVSIEVYVEVOU0lPTiAle2V4dGlkZW50aXR5fUkg JXtleHRvcHRpb259cyAle2V4dG9ianR5cGV9cyAle29iamlkZW50aXR5fXMiLCA0LAorCQkJCQkJ ICAiZXh0aWRlbnRpdHkiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5leHRuYW1lLAorCQkJCQkJICAi ZXh0b3B0aW9uIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSAgbm9kZS0+YWN0aW9uID09ICsxID8g IkFERCIgOiAiRFJPUCIsCisJCQkJCQkgICJleHRvYmp0eXBlIiwgT2JqVHlwZVN0cmluZywKKwkJ CQkJCSAgc3RyaW5naWZ5X29ianR5cGUobm9kZS0+b2JqdHlwZSwgZmFsc2UpLAorCQkJCQkJICAi b2JqaWRlbnRpdHkiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJICBnZXRPYmplY3RJZGVudGl0eSgm b2JqZWN0QWRkcmVzcywgZmFsc2UpKTsKK30KKworLyoKKyAqIERlcGFyc2UgYW4gQ3JlYXRlQ2Fz dFN0bXQuCisgKgorICogR2l2ZW4gYSBzZXF1ZW5jZSBPSUQgYW5kIGEgcGFyc2UgdHJlZSB0aGF0 IG1vZGlmaWVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVzZW50aW5nIHRoZSBjcmVh dGlvbiBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgQ0FTVCAoJXtz b3VyY2V0eXBlfVQgQVMgJXt0YXJnZXR0eXBlfVQpICV7bWVjaGFuaXNtfXMgJXtjb250ZXh0fXMK KyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9DcmVhdGVDYXN0U3RtdChPaWQgb2JqZWN0 SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlDcmVhdGVDYXN0U3RtdCAqbm9kZSA9IChDcmVhdGVD YXN0U3RtdCAqKSBwYXJzZXRyZWU7CisJUmVsYXRpb24JY2FzdHJlbDsKKwlIZWFwVHVwbGUJY2Fz dFR1cDsKKwlGb3JtX3BnX2Nhc3QgY2FzdEZvcm07CisJT2JqVHJlZSAgICAqcmV0OworCWNoYXIJ ICAgKmNvbnRleHQ7CisKKwljYXN0cmVsID0gdGFibGVfb3BlbihDYXN0UmVsYXRpb25JZCwgQWNj ZXNzU2hhcmVMb2NrKTsKKwljYXN0VHVwID0gZ2V0X2NhdGFsb2dfb2JqZWN0X2J5X29pZChjYXN0 cmVsLCBBbnVtX3BnX2Nhc3Rfb2lkLCBvYmplY3RJZCk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KGNhc3RUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgY2FzdCB3 aXRoIE9JRCAldSIsIG9iamVjdElkKTsKKwljYXN0Rm9ybSA9IChGb3JtX3BnX2Nhc3QpIEdFVFNU UlVDVChjYXN0VHVwKTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUgQ0FTVCAoJXtz b3VyY2V0eXBlfVQgQVMgJXt0YXJnZXR0eXBlfVQpIiwgMiwKKwkJCQkJCSAic291cmNldHlwZSIs IE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3R5cGUoY2FzdEZvcm0tPmNh c3Rzb3VyY2UsIC0xKSwKKwkJCQkJCSAidGFyZ2V0dHlwZSIsIE9ialR5cGVPYmplY3QsCisJCQkJ CQkgbmV3X29ianRyZWVfZm9yX3R5cGUoY2FzdEZvcm0tPmNhc3R0YXJnZXQsIC0xKSk7CisKKwlp ZiAobm9kZS0+aW5vdXQpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7bWVjaGFuaXNt fXMiLCAibWVjaGFuaXNtIiwKKwkJCQkJCQkgIldJVEggSU5PVVQiKTsKKwllbHNlIGlmIChub2Rl LT5mdW5jID09IE5VTEwpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7bWVjaGFuaXNt fXMiLCAibWVjaGFuaXNtIiwKKwkJCQkJCQkgIldJVEhPVVQgRlVOQ1RJT04iKTsKKwllbHNlCisJ eworCQlPYmpUcmVlICAgICp0bXBfb2JqOworCQlTdHJpbmdJbmZvRGF0YSBmdW5jOworCQlIZWFw VHVwbGUJZnVuY1R1cDsKKwkJRm9ybV9wZ19wcm9jIGZ1bmNGb3JtOworCQlpbnQJCQlpOworCisJ CWZ1bmNUdXAgPSBTZWFyY2hTeXNDYWNoZTEoUFJPQ09JRCwgY2FzdEZvcm0tPmNhc3RmdW5jKTsK KwkJZnVuY0Zvcm0gPSAoRm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QoZnVuY1R1cCk7CisKKwkJaW5p dFN0cmluZ0luZm8oJmZ1bmMpOworCQlhcHBlbmRTdHJpbmdJbmZvKCZmdW5jLCAiJXMoIiwKKwkJ CQkJCSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihnZXRfbmFtZXNwYWNlX25hbWUoZnVuY0Zv cm0tPnByb25hbWVzcGFjZSksCisJCQkJCQkJCQkJCQkJTmFtZVN0cihmdW5jRm9ybS0+cHJvbmFt ZSkpKTsKKwkJZm9yIChpID0gMDsgaSA8IGZ1bmNGb3JtLT5wcm9uYXJnczsgaSsrKQorCQl7CisJ CQlpZiAoaSAhPSAwKQorCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZmdW5jLCAnLCcpOworCisJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmdW5jLAorCQkJCQkJCQkgICBmb3JtYXRfdHlwZV9i ZV9xdWFsaWZpZWQoZnVuY0Zvcm0tPnByb2FyZ3R5cGVzLnZhbHVlc1tpXSkpOworCQl9CisJCWFw cGVuZFN0cmluZ0luZm9DaGFyKCZmdW5jLCAnKScpOworCisJCXRtcF9vYmogPSBuZXdfb2JqdHJl ZV9WQSgiV0lUSCBGVU5DVElPTiAle2Nhc3RmdW5jdGlvbn1zIiwgMSwKKwkJCQkJCQkJImNhc3Rm dW5jdGlvbiIsIE9ialR5cGVTdHJpbmcsIGZ1bmMuZGF0YSk7CisJCWFwcGVuZF9vYmplY3Rfb2Jq ZWN0KHJldCwgIiV7bWVjaGFuaXNtfXMiLCB0bXBfb2JqKTsKKworCQlSZWxlYXNlU3lzQ2FjaGUo ZnVuY1R1cCk7CisJfQorCisJc3dpdGNoIChub2RlLT5jb250ZXh0KQorCXsKKwkJY2FzZSBDT0VS Q0lPTl9JTVBMSUNJVDoKKwkJCWNvbnRleHQgPSAiQVMgSU1QTElDSVQiOworCQkJYnJlYWs7CisJ CWNhc2UgQ09FUkNJT05fQVNTSUdOTUVOVDoKKwkJCWNvbnRleHQgPSAiQVMgQVNTSUdOTUVOVCI7 CisJCQlicmVhazsKKwkJY2FzZSBDT0VSQ0lPTl9FWFBMSUNJVDoKKwkJCWNvbnRleHQgPSAiIjsK KwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgImludmFsaWQgY29lcmNpb24g Y29kZSAlYyIsIG5vZGUtPmNvbnRleHQpOworCQkJcmV0dXJuIE5VTEw7CQkvKiBrZWVwIGNvbXBp bGVyIHF1aWV0ICovCisJfQorCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7Y29udGV4dH1z IiwgImNvbnRleHQiLCBjb250ZXh0KTsKKworCXRhYmxlX2Nsb3NlKGNhc3RyZWwsIEFjY2Vzc1No YXJlTG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhbiBBTFRFUiBE RUZBVUxUIFBSSVZJTEVHRVMgc3RhdGVtZW50LgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBB TFRFUiBERUZBVUxUIFBSSVZJTEVHRVMgJXtpbl9zY2hlbWF9cyAle2Zvcl9yb2xlc31zICV7Z3Jh bnR9cworICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0FsdGVyRGVmYXVsdFByaXZpbGVn ZXNTdG10KENvbGxlY3RlZENvbW1hbmQgKmNtZCkKK3sKKwlPYmpUcmVlICAgICpyZXQ7CisJQWx0 ZXJEZWZhdWx0UHJpdmlsZWdlc1N0bXQgKnN0bXQgPSAoQWx0ZXJEZWZhdWx0UHJpdmlsZWdlc1N0 bXQgKikgY21kLT5wYXJzZXRyZWU7CisJTGlzdAkgICAqcm9sZXMgPSBOSUw7CisJTGlzdAkgICAq c2NoZW1hcyA9IE5JTDsKKwlMaXN0CSAgICpncmFudGVlczsKKwlMaXN0CSAgICpwcml2czsKKwlM aXN0Q2VsbCAgICpjZWxsOworCU9ialRyZWUgICAgKnRtcDsKKwlPYmpUcmVlICAgICpncmFudDsK KwljaGFyCSAgICpvYmp0eXBlOworCisJcmV0ID0gbmV3X29ianRyZWUoIkFMVEVSIERFRkFVTFQg UFJJVklMRUdFUyIpOworCisJLyogU2NhbiB0aGUgcGFyc2Ugbm9kZSB0byBkaWcgb3V0IHRoZSBG T1IgUk9MRSBhbmQgSU4gU0NIRU1BIGNsYXVzZXMgKi8KKwlmb3JlYWNoKGNlbGwsIHN0bXQtPm9w dGlvbnMpCisJeworCQlEZWZFbGVtICAgICpvcHQgPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7 CisJCUxpc3RDZWxsICAgKmNlbGwyOworCisJCUFzc2VydChJc0Eob3B0LCBEZWZFbGVtKSk7CisJ CUFzc2VydChJc0Eob3B0LT5hcmcsIExpc3QpKTsKKwkJaWYgKHN0cmNtcChvcHQtPmRlZm5hbWUs ICJyb2xlcyIpID09IDApCisJCXsKKwkJCWZvcmVhY2goY2VsbDIsIChMaXN0ICopIG9wdC0+YXJn KQorCQkJeworCQkJCVJvbGVTcGVjICAgKnJvbGVzcGVjID0gbGZpcnN0KGNlbGwyKTsKKwkJCQlP YmpUcmVlICAgICpvYmogPSBuZXdfb2JqdHJlZV9mb3Jfcm9sZXNwZWMocm9sZXNwZWMpOworCisJ CQkJcm9sZXMgPSBsYXBwZW5kKHJvbGVzLCBuZXdfb2JqZWN0X29iamVjdChvYmopKTsKKwkJCX0K KwkJfQorCQllbHNlIGlmIChzdHJjbXAob3B0LT5kZWZuYW1lLCAic2NoZW1hcyIpID09IDApCisJ CXsKKwkJCWZvcmVhY2goY2VsbDIsIChMaXN0ICopIG9wdC0+YXJnKQorCQkJeworCQkJCVN0cmlu ZwkgICAqdmFsID0gbGZpcnN0X25vZGUoU3RyaW5nLCBjZWxsMik7CisKKwkJCQlzY2hlbWFzID0g bGFwcGVuZChzY2hlbWFzLCBuZXdfc3RyaW5nX29iamVjdChzdHJWYWwodmFsKSkpOworCQkJfQor CQl9CisJfQorCisJLyogQWRkIHRoZSBJTiBTQ0hFTUEgY2xhdXNlLCBpZiBhbnkgKi8KKwl0bXAg PSBuZXdfb2JqdHJlZSgiSU4gU0NIRU1BIik7CisJYXBwZW5kX2FycmF5X29iamVjdCh0bXAsICIl e3NjaGVtYXM6LCB9SSIsIHNjaGVtYXMpOworCWlmIChzY2hlbWFzID09IE5JTCkKKwkJYXBwZW5k X25vdF9wcmVzZW50KHRtcCk7CisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtpbl9zY2hl bWF9cyIsIHRtcCk7CisKKwkvKiBBZGQgdGhlIEZPUiBST0xFIGNsYXVzZSwgaWYgYW55ICovCisJ dG1wID0gbmV3X29ianRyZWUoIkZPUiBST0xFIik7CisJYXBwZW5kX2FycmF5X29iamVjdCh0bXAs ICIle3JvbGVzOiwgfVIiLCByb2xlcyk7CisJaWYgKHJvbGVzID09IE5JTCkKKwkJYXBwZW5kX25v dF9wcmVzZW50KHRtcCk7CisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtmb3Jfcm9sZXN9 cyIsIHRtcCk7CisKKwkvKgorCSAqIEFkZCB0aGUgR1JBTlQgc3ViY29tbWFuZAorCSAqIFZlcmJv c2Ugc3ludGF4CisJICogR1JBTlQgJXtwcml2aWxlZ2VzOiwgfXMgT04gJXt0YXJnZXR9cyBUTyAl e2dyYW50ZWVzOiwgfVIgJXtncmFudF9vcHRpb259cworCSAqIG9yCisJICogUkVWT0tFICV7Z3Jh bnRfb3B0aW9ufXMgJXtwcml2aWxlZ2VzOiwgfXMgT04gJXt0YXJnZXR9cyBGUk9NICV7Z3JhbnRl ZXM6LCB9UgorCSAqLworCWlmIChzdG10LT5hY3Rpb24tPmlzX2dyYW50KQorCQlncmFudCA9IG5l d19vYmp0cmVlKCJHUkFOVCIpOworCWVsc2UKKwl7CisJCWdyYW50ID0gbmV3X29ianRyZWUoIlJF Vk9LRSIpOworCisJCS8qIEFkZCB0aGUgR1JBTlQgT1BUSU9OIGNsYXVzZSBmb3IgUkVWT0tFIHN1 YmNvbW1hbmQgKi8KKwkJdG1wID0gbmV3X29ianRyZWVfVkEoIkdSQU5UIE9QVElPTiBGT1IiLCAx LAorCQkJCQkJCSAicHJlc2VudCIsIE9ialR5cGVCb29sLAorCQkJCQkJCSBzdG10LT5hY3Rpb24t PmdyYW50X29wdGlvbik7CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KGdyYW50LCAiJXtncmFudF9v cHRpb259cyIsIHRtcCk7CisJfQorCisJLyoKKwkgKiBBZGQgdGhlIHByaXZpbGVnZXMgbGlzdC4g IFRoaXMgdXNlcyB0aGUgcGFyc2VyIHN0cnVjdCwgYXMgb3Bwb3NlZCB0bworCSAqIHRoZSBJbnRl cm5hbEdyYW50IGZvcm1hdCB1c2VkIGJ5IEdSQU5ULiAgVGhlcmUgYXJlIGVub3VnaCBvdGhlcgor CSAqIGRpZmZlcmVuY2VzIHRoYXQgdGhpcyBkb2Vzbid0IHNlZW0gd29ydGggaW1wcm92aW5nLgor CSAqLworCWlmIChzdG10LT5hY3Rpb24tPnByaXZpbGVnZXMgPT0gTklMKQorCQlwcml2cyA9IGxp c3RfbWFrZTEobmV3X3N0cmluZ19vYmplY3QoIkFMTCBQUklWSUxFR0VTIikpOworCWVsc2UKKwl7 CisJCXByaXZzID0gTklMOworCisJCWZvcmVhY2goY2VsbCwgc3RtdC0+YWN0aW9uLT5wcml2aWxl Z2VzKQorCQl7CisJCQlBY2Nlc3NQcml2ICpwcml2ID0gbGZpcnN0KGNlbGwpOworCisJCQlBc3Nl cnQocHJpdi0+Y29scyA9PSBOSUwpOworCQkJcHJpdnMgPSBsYXBwZW5kKHByaXZzLCBuZXdfc3Ry aW5nX29iamVjdChwcml2LT5wcml2X25hbWUpKTsKKwkJfQorCX0KKworCWFwcGVuZF9hcnJheV9v YmplY3QoZ3JhbnQsICIle3ByaXZpbGVnZXM6LCB9cyIsIHByaXZzKTsKKworCXN3aXRjaCAoY21k LT5kLmRlZnByaXZzLm9ianR5cGUpCisJeworCQljYXNlIE9CSkVDVF9UQUJMRToKKwkJCW9ianR5 cGUgPSAiVEFCTEVTIjsKKwkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9GVU5DVElPTjoKKwkJCW9i anR5cGUgPSAiRlVOQ1RJT05TIjsKKwkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9ST1VUSU5FOgor CQkJb2JqdHlwZSA9ICJST1VUSU5FUyI7CisJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfU0VRVUVO Q0U6CisJCQlvYmp0eXBlID0gIlNFUVVFTkNFUyI7CisJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1Rf VFlQRToKKwkJCW9ianR5cGUgPSAiVFlQRVMiOworCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ND SEVNQToKKwkJCW9ianR5cGUgPSAiU0NIRU1BUyI7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJ CWVsb2coRVJST1IsICJpbnZhbGlkIE9CSkVDVCB2YWx1ZSAlZCBmb3IgZGVmYXVsdCBwcml2aWxl Z2VzIiwgY21kLT5kLmRlZnByaXZzLm9ianR5cGUpOworCX0KKworCS8qIEFkZCB0aGUgdGFyZ2V0 IG9iamVjdCB0eXBlICovCisJYXBwZW5kX3N0cmluZ19vYmplY3QoZ3JhbnQsICJPTiAle3Rhcmdl dH1zIiwgInRhcmdldCIsIG9ianR5cGUpOworCisJLyogQWRkIHRoZSBncmFudGVlIGxpc3QgKi8K KwlncmFudGVlcyA9IE5JTDsKKwlmb3JlYWNoKGNlbGwsIHN0bXQtPmFjdGlvbi0+Z3JhbnRlZXMp CisJeworCQlSb2xlU3BlYyAgICpzcGVjID0gKFJvbGVTcGVjICopIGxmaXJzdChjZWxsKTsKKwkJ T2JqVHJlZSAgICAqb2JqID0gbmV3X29ianRyZWVfZm9yX3JvbGVzcGVjKHNwZWMpOworCisJCWdy YW50ZWVzID0gbGFwcGVuZChncmFudGVlcywgbmV3X29iamVjdF9vYmplY3Qob2JqKSk7CisJfQor CisJaWYgKHN0bXQtPmFjdGlvbi0+aXNfZ3JhbnQpCisJeworCQlhcHBlbmRfYXJyYXlfb2JqZWN0 KGdyYW50LCAiVE8gJXtncmFudGVlczosIH1SIiwgZ3JhbnRlZXMpOworCisJCS8qIEFkZCB0aGUg V0lUSCBHUkFOVCBPUFRJT04gY2xhdXNlIGZvciBHUkFOVCBzdWJjb21tYW5kICovCisJCXRtcCA9 IG5ld19vYmp0cmVlX1ZBKCJXSVRIIEdSQU5UIE9QVElPTiIsIDEsCisJCQkJCQkJICJwcmVzZW50 IiwgT2JqVHlwZUJvb2wsCisJCQkJCQkJIHN0bXQtPmFjdGlvbi0+Z3JhbnRfb3B0aW9uKTsKKwkJ YXBwZW5kX29iamVjdF9vYmplY3QoZ3JhbnQsICIle2dyYW50X29wdGlvbn1zIiwgdG1wKTsKKwl9 CisJZWxzZQorCQlhcHBlbmRfYXJyYXlfb2JqZWN0KGdyYW50LCAiRlJPTSAle2dyYW50ZWVzOiwg fVIiLCBncmFudGVlcyk7CisKKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle2dyYW50fXMi LCBncmFudCk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSB0aGUgQ1JFQVRF IERPTUFJTgorICoKKyAqIEdpdmVuIGEgZnVuY3Rpb24gT0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0 aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbiBPYmpUcmVlCisgKiByZXByZXNlbnRpbmcgdGhlIGNy ZWF0aW9uIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSBET01BSU4g JXtpZGVudGl0eX1EIEFTICV7dHlwZX1UICV7bm90X251bGx9cyAle2NvbnN0cmFpbnRzfXMKKyAq ICV7Y29sbGF0aW9ufXMKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9DcmVhdGVEb21h aW4oT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJT2JqVHJlZSAgICAqcmV0Owor CU9ialRyZWUgICAgKnRtcF9vYmo7CisJSGVhcFR1cGxlCXR5cFR1cDsKKwlGb3JtX3BnX3R5cGUg dHlwRm9ybTsKKwlMaXN0CSAgICpjb25zdHJhaW50czsKKwljaGFyCSAgICpkZWZ2YWw7CisKKwl0 eXBUdXAgPSBTZWFyY2hTeXNDYWNoZTEoVFlQRU9JRCwgb2JqZWN0SWQpOworCWlmICghSGVhcFR1 cGxlSXNWYWxpZCh0eXBUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3IgZG9tYWluIHdpdGggT0lEICV1Iiwgb2JqZWN0SWQpOworCXR5cEZvcm0gPSAoRm9ybV9wZ190 eXBlKSBHRVRTVFJVQ1QodHlwVHVwKTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUg RE9NQUlOICV7aWRlbnRpdHl9RCBBUyAle3R5cGV9VCAle25vdF9udWxsfXMiLCAzLAorCQkJCQkJ ICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxu YW1lX2lkKFR5cGVSZWxhdGlvbklkLCBvYmplY3RJZCksCisJCQkJCQkgInR5cGUiLCBPYmpUeXBl T2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKHR5cEZvcm0tPnR5cGJhc2V0eXBl LAorCQkJCQkJCQkJCQkgIHR5cEZvcm0tPnR5cHR5cG1vZCksCisJCQkJCQkgIm5vdF9udWxsIiwg T2JqVHlwZVN0cmluZywKKwkJCQkJCSB0eXBGb3JtLT50eXBub3RudWxsID8gIk5PVCBOVUxMIiA6 ICIiKTsKKworCWNvbnN0cmFpbnRzID0gb2J0YWluQ29uc3RyYWludHMoTklMLCBJbnZhbGlkT2lk LCBvYmplY3RJZCwKKwkJCQkJCQkJCUNvbnN0ck9iakRvbWFpbik7CisJaWYgKGNvbnN0cmFpbnRz ID09IE5JTCkKKwl7CisJCXRtcF9vYmogPSBuZXdfb2JqdHJlZSgiIik7CisJCWFwcGVuZF9ub3Rf cHJlc2VudCh0bXBfb2JqKTsKKwl9CisJZWxzZQorCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEo IiV7ZWxlbWVudHM6LCB9cyIsIDEsCisJCQkJCQkJCSJlbGVtZW50cyIsIE9ialR5cGVBcnJheSwg Y29uc3RyYWludHMpOworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7Y29uc3RyYWludHN9 cyIsIHRtcF9vYmopOworCisJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJDT0xMQVRFIik7CisJaWYg KE9pZElzVmFsaWQodHlwRm9ybS0+dHlwY29sbGF0aW9uKSkKKwl7CisJCU9ialRyZWUgICAgKmNv bGxuYW1lOworCisJCWNvbGxuYW1lID0gbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKENvbGxh dGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCSAgIHR5cEZvcm0tPnR5cGNvbGxhdGlvbik7CisJ CWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmosICIle25hbWV9RCIsIGNvbGxuYW1lKTsKKwl9 CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisJYXBwZW5kX29iamVjdF9v YmplY3QocmV0LCAiJXtjb2xsYXRpb259cyIsIHRtcF9vYmopOworCisJZGVmdmFsID0gRG9tYWlu R2V0RGVmYXVsdCh0eXBUdXAsIHRydWUpOworCWlmIChkZWZ2YWwpCisJCWFwcGVuZF9zdHJpbmdf b2JqZWN0KHJldCwgIkRFRkFVTFQgJXtkZWZhdWx0fXMiLCAiZGVmYXVsdCIsIGRlZnZhbCk7CisK KwlSZWxlYXNlU3lzQ2FjaGUodHlwVHVwKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBE ZXBhcnNlIGEgQ3JlYXRlRnVuY3Rpb25TdG10IChDUkVBVEUgRlVOQ1RJT04pCisgKgorICogR2l2 ZW4gYSBmdW5jdGlvbiBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0 dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAq CisgKiBWZXJib3NlIHN5bnRheAorICoKKyAqIENSRUFURSAle29yX3JlcGxhY2V9cyBGVU5DVElP TiAle3NpZ25hdHVyZX1zIFJFVFVSTlMgJXtyZXR1cm5fdHlwZX1zCisgKiBMQU5HVUFHRSAle3Ry YW5zZm9ybV90eXBlfXMgJXtsYW5ndWFnZX1JICV7d2luZG93fXMgJXt2b2xhdGlsaXR5fXMKKyAq ICV7cGFyYWxsZWxfc2FmZXR5fXMgJXtsZWFrcHJvb2Z9cyAle3N0cmljdH1zICV7c2VjdXJpdHlf ZGVmaW5lcn1zCisgKiAle2Nvc3R9cyAle3Jvd3N9cyAle3N1cHBvcnR9cyAle3NldF9vcHRpb25z OiB9cyBBUyAle29iamZpbGV9TCwKKyAqICV7c3ltYm9sfUwKKyAqLworc3RhdGljIE9ialRyZWUg KgorZGVwYXJzZV9DcmVhdGVGdW5jdGlvbihPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkK K3sKKwlDcmVhdGVGdW5jdGlvblN0bXQgKm5vZGUgPSAoQ3JlYXRlRnVuY3Rpb25TdG10ICopIHBh cnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQ7CisJT2JqVHJlZSAgICAqdG1wX29iajsKKwlEYXR1 bQkJdG1wZGF0dW07CisJY2hhcgkgICAqc291cmNlOworCWNoYXIJICAgKnByb2JpbiA9IE5VTEw7 CisJTGlzdAkgICAqcGFyYW1zOworCUxpc3QJICAgKmRlZmF1bHRzOworCUxpc3QJICAgKnNldHMg PSBOSUw7CisJTGlzdAkgICAqdHlwZXMgPSBOSUw7CisJTGlzdENlbGwgICAqY2VsbDsKKwlMaXN0 Q2VsbCAgICpjdXJkZWY7CisJTGlzdENlbGwgICAqdGFibGVfcGFyYW1zID0gTlVMTDsKKwlIZWFw VHVwbGUJcHJvY1R1cDsKKwlGb3JtX3BnX3Byb2MgcHJvY0Zvcm07CisJSGVhcFR1cGxlCWxhbmdU dXA7CisJT2lkCQkgICAqdHlwYXJyYXk7CisJT2lkCQkgICAqdHJmdHlwZXM7CisJRm9ybV9wZ19s YW5ndWFnZSBsYW5nRm9ybTsKKwlpbnQJCQlpOworCWludAkJCXR5cG51bTsKKwlpbnQJCQludHlw ZXM7CisJaW50CQkJcGFyYW1jb3VudCA9IGxpc3RfbGVuZ3RoKG5vZGUtPnBhcmFtZXRlcnMpOwor CWJvb2wJCWlzbnVsbDsKKwlib29sCQlpc2Z1bmN0aW9uOworCisJLyogR2V0IHRoZSBwZ19wcm9j IHR1cGxlICovCisJcHJvY1R1cCA9IFNlYXJjaFN5c0NhY2hlMShQUk9DT0lELCBvYmplY3RJZCk7 CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHByb2NUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3IgZnVuY3Rpb24gd2l0aCBPSUQgJXUiLAorCQkJIG9iamVjdElkKTsK Kwlwcm9jRm9ybSA9IChGb3JtX3BnX3Byb2MpIEdFVFNUUlVDVChwcm9jVHVwKTsKKworCS8qIEdl dCB0aGUgY29ycmVzcG9uZGluZyBwZ19sYW5ndWFnZSB0dXBsZSAqLworCWxhbmdUdXAgPSBTZWFy Y2hTeXNDYWNoZTEoTEFOR09JRCwgcHJvY0Zvcm0tPnByb2xhbmcpOworCWlmICghSGVhcFR1cGxl SXNWYWxpZChsYW5nVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9y IGxhbmd1YWdlIHdpdGggT0lEICV1IiwKKwkJCSBwcm9jRm9ybS0+cHJvbGFuZyk7CisJbGFuZ0Zv cm0gPSAoRm9ybV9wZ19sYW5ndWFnZSkgR0VUU1RSVUNUKGxhbmdUdXApOworCisJLyoKKwkgKiBE ZXRlcm1pbmUgdXNlZnVsIHZhbHVlcyBmb3IgcHJvc3JjIGFuZCBwcm9iaW4uICBXZSBjb3BlIHdp dGggcHJvYmluCisJICogYmVpbmcgZWl0aGVyIE5VTEwgb3IgIi0iLCBidXQgcHJvc3JjIG11c3Qg aGF2ZSBhIHZhbGlkIHZhbHVlLgorCSAqLworCXRtcGRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBS T0NPSUQsIHByb2NUdXAsCisJCQkJCQkJICAgQW51bV9wZ19wcm9jX3Byb3NyYywgJmlzbnVsbCk7 CisJaWYgKGlzbnVsbCkKKwkJZWxvZyhFUlJPUiwgIm51bGwgcHJvc3JjIGluIGZ1bmN0aW9uIHdp dGggT0lEICV1Iiwgb2JqZWN0SWQpOworCXNvdXJjZSA9IFRleHREYXR1bUdldENTdHJpbmcodG1w ZGF0dW0pOworCisJLyogRGV0ZXJtaW5lIGEgdXNlZnVsIHZhbHVlIGZvciBwcm9iaW4gKi8KKwl0 bXBkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihQUk9DT0lELCBwcm9jVHVwLAorCQkJCQkJCSAgIEFu dW1fcGdfcHJvY19wcm9iaW4sICZpc251bGwpOworCWlmICghaXNudWxsKQorCXsKKwkJcHJvYmlu ID0gVGV4dERhdHVtR2V0Q1N0cmluZyh0bXBkYXR1bSk7CisJCWlmIChwcm9iaW5bMF0gPT0gJ1ww JyB8fCBzdHJjbXAocHJvYmluLCAiLSIpID09IDApCisJCQlwcm9iaW4gPSBOVUxMOworCX0KKwor CXJldCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUgJXtvcl9yZXBsYWNlfXMiLCAxLAorCQkJCQkJ ICJvcl9yZXBsYWNlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBub2RlLT5yZXBsYWNlID8gIk9S IFJFUExBQ0UiIDogIiIpOworCisJLyoKKwkgKiBUbyBjb25zdHJ1Y3QgdGhlIGFyZ3VtZW50cyBh cnJheSwgZXh0cmFjdCB0aGUgdHlwZSBPSURzIGZyb20gdGhlCisJICogZnVuY3Rpb24ncyBwZ19w cm9jIGVudHJ5LiAgSWYgcHJvbmFyZ3MgZXF1YWxzIHRoZSBwYXJhbWV0ZXIgbGlzdAorCSAqIGxl bmd0aCwgdGhlcmUgYXJlIG5vIE9VVCBwYXJhbWV0ZXJzIGFuZCB0aHVzIHdlIGNhbiBleHRyYWN0 IHRoZSB0eXBlCisJICogT0lEIGZyb20gcHJvYXJndHlwZXM7IG90aGVyd2lzZSB3ZSBuZWVkIHRv IGRlY29kZSBwcm9hbGxhcmd0eXBlcywgd2hpY2gKKwkgKiBpcyBhIGJpdCBtb3JlIGludm9sdmVk LgorCSAqLworCXR5cGFycmF5ID0gcGFsbG9jKHBhcmFtY291bnQgKiBzaXplb2YoT2lkKSk7CisJ aWYgKHBhcmFtY291bnQgPiBwcm9jRm9ybS0+cHJvbmFyZ3MpCisJeworCQlEYXR1bQkJYWxsdHlw ZXM7CisJCURhdHVtCSAgICp2YWx1ZXM7CisJCWJvb2wJICAgKm51bGxzOworCQlpbnQJCQluZWxl bXM7CisKKwkJYWxsdHlwZXMgPSBTeXNDYWNoZUdldEF0dHIoUFJPQ09JRCwgcHJvY1R1cCwKKwkJ CQkJCQkJICAgQW51bV9wZ19wcm9jX3Byb2FsbGFyZ3R5cGVzLCAmaXNudWxsKTsKKwkJaWYgKGlz bnVsbCkKKwkJCWVsb2coRVJST1IsICJudWxsIHByb2FsbGFyZ3R5cGVzLCBtb3JlIG51bWJlciBv ZiBwYXJhbWV0ZXJzIHRoYW4gYXJncyBpbiBmdW5jdGlvbiB3aXRoIE9JRCAldSIsCisJCQkJIG9i amVjdElkKTsKKwkJZGVjb25zdHJ1Y3RfYXJyYXkoRGF0dW1HZXRBcnJheVR5cGVQKGFsbHR5cGVz KSwKKwkJCQkJCSAgT0lET0lELCA0LCAndCcsICdpJywKKwkJCQkJCSAgJnZhbHVlcywgJm51bGxz LCAmbmVsZW1zKTsKKwkJaWYgKG5lbGVtcyAhPSBwYXJhbWNvdW50KQorCQkJZWxvZyhFUlJPUiwg Im1pc21hdGNoZWQgcHJvYWxsYXJnYXR5cGVzIik7CisJCWZvciAoaSA9IDA7IGkgPCBwYXJhbWNv dW50OyBpKyspCisJCQl0eXBhcnJheVtpXSA9IHZhbHVlc1tpXTsKKwl9CisJZWxzZQorCXsKKwkJ Zm9yIChpID0gMDsgaSA8IHBhcmFtY291bnQ7IGkrKykKKwkJCXR5cGFycmF5W2ldID0gcHJvY0Zv cm0tPnByb2FyZ3R5cGVzLnZhbHVlc1tpXTsKKwl9CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBh bnkgZGVmYXVsdCBleHByZXNzaW9ucywgd2UgcmVhZCB0aGUgZGVwYXJzZWQgZXhwcmVzc2lvbgor CSAqIGFzIGEgbGlzdCBzbyB0aGF0IHdlIGNhbiBhdHRhY2ggdGhlbSB0byBlYWNoIGFyZ3VtZW50 LgorCSAqLworCXRtcGRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBST0NPSUQsIHByb2NUdXAsCisJ CQkJCQkJICAgQW51bV9wZ19wcm9jX3Byb2FyZ2RlZmF1bHRzLCAmaXNudWxsKTsKKwlpZiAoIWlz bnVsbCkKKwl7CisJCWRlZmF1bHRzID0gRnVuY3Rpb25HZXREZWZhdWx0cyhEYXR1bUdldFRleHRQ KHRtcGRhdHVtKSk7CisJCWN1cmRlZiA9IGxpc3RfaGVhZChkZWZhdWx0cyk7CisJfQorCWVsc2UK Kwl7CisJCWRlZmF1bHRzID0gTklMOworCQljdXJkZWYgPSBOVUxMOworCX0KKworCS8qCisJICog Tm93IGl0ZXJhdGUgb3ZlciBlYWNoIHBhcmFtZXRlciBpbiB0aGUgcGFyc2UgdHJlZSB0byBjcmVh dGUgdGhlCisJICogcGFyYW1ldGVycyBhcnJheS4KKwkgKi8KKwlwYXJhbXMgPSBOSUw7CisJdHlw bnVtID0gMDsKKwlmb3JlYWNoKGNlbGwsIG5vZGUtPnBhcmFtZXRlcnMpCisJeworCQlGdW5jdGlv blBhcmFtZXRlciAqcGFyYW0gPSAoRnVuY3Rpb25QYXJhbWV0ZXIgKikgbGZpcnN0KGNlbGwpOwor CQlPYmpUcmVlICAgICpwYXJhbV9vYmo7CisJCU9ialRyZWUgICAgKmRlZmF1bHR2YWw7CisJCU9i alRyZWUgICAgKm5hbWU7CisKKwkJLyoKKwkJICogQSBQQVJBTV9UQUJMRSBwYXJhbWV0ZXIgaW5k aWNhdGVzIHRoZSBlbmQgb2YgaW5wdXQgYXJndW1lbnRzOyB0aGUKKwkJICogZm9sbG93aW5nIHBh cmFtZXRlcnMgYXJlIHBhcnQgb2YgdGhlIHJldHVybiB0eXBlLiAgV2UgaWdub3JlIHRoZW0KKwkJ ICogaGVyZSwgYnV0IGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIGxp c3Qgc28gdGhhdCB3ZQorCQkgKiBjYW4gZWFzaWx5IHByb2R1Y2UgdGhlIHJldHVybiB0eXBlIGJl bG93LgorCQkgKi8KKwkJaWYgKHBhcmFtLT5tb2RlID09IEZVTkNfUEFSQU1fVEFCTEUpCisJCXsK KwkJCXRhYmxlX3BhcmFtcyA9IGNlbGw7CisJCQlicmVhazsKKwkJfQorCisJCS8qCisJCSAqIFZl cmJvc2Ugc3ludGF4IGZvciBwYXJhbWF0ZXI6ICV7bW9kZX1zICV7bmFtZX1zICV7dHlwZX1UCisJ CSAqICV7ZGVmYXVsdH1zCisJCSAqLworCQlwYXJhbV9vYmogPSBuZXdfb2JqdHJlZV9WQSgiJXtt b2RlfXMiLCAxLAorCQkJCQkJCQkgICJtb2RlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJICBw YXJhbS0+bW9kZSA9PSBGVU5DX1BBUkFNX09VVCA/ICJPVVQiIDoKKwkJCQkJCQkJICBwYXJhbS0+ bW9kZSA9PSBGVU5DX1BBUkFNX0lOT1VUID8gIklOT1VUIiA6CisJCQkJCQkJCSAgcGFyYW0tPm1v ZGUgPT0gRlVOQ19QQVJBTV9WQVJJQURJQyA/ICJWQVJJQURJQyIgOgorCQkJCQkJCQkgICJJTiIp OworCisJCS8qIE9wdGlvbmFsIHdob2xlc2FsZSBzdXBwcmVzc2lvbiBvZiAibmFtZSIgb2NjdXJz IGhlcmUgKi8KKwkJbmFtZSA9IG5ld19vYmp0cmVlKCIiKTsKKwkJaWYgKHBhcmFtLT5uYW1lKQor CQkJYXBwZW5kX3N0cmluZ19vYmplY3QobmFtZSwgIiV7bmFtZX1JIiwgIm5hbWUiLCBwYXJhbS0+ bmFtZSk7CisJCWVsc2UKKwkJeworCQkJYXBwZW5kX251bGxfb2JqZWN0KG5hbWUsICIle25hbWV9 SSIpOworCQkJYXBwZW5kX25vdF9wcmVzZW50KG5hbWUpOworCQl9CisKKwkJYXBwZW5kX29iamVj dF9vYmplY3QocGFyYW1fb2JqLCAiJXtuYW1lfXMiLCBuYW1lKTsKKworCQlkZWZhdWx0dmFsID0g bmV3X29ianRyZWUoIkRFRkFVTFQiKTsKKwkJaWYgKFBvaW50ZXJJc1ZhbGlkKHBhcmFtLT5kZWZl eHByKSkKKwkJeworCQkJY2hhcgkgICAqZXhwcjsKKworCQkJaWYgKGN1cmRlZiA9PSBOVUxMKQor CQkJCWVsb2coRVJST1IsICJwcm9hcmdkZWZhdWx0cyBsaXN0IHRvbyBzaG9ydCIpOworCQkJZXhw ciA9IGxmaXJzdChjdXJkZWYpOworCisJCQlhcHBlbmRfc3RyaW5nX29iamVjdChkZWZhdWx0dmFs LCAiJXt2YWx1ZX1zIiwgInZhbHVlIiwgZXhwcik7CisJCQljdXJkZWYgPSBsbmV4dChkZWZhdWx0 cywgY3VyZGVmKTsKKwkJfQorCQllbHNlCisJCQlhcHBlbmRfbm90X3ByZXNlbnQoZGVmYXVsdHZh bCk7CisKKwkJYXBwZW5kX29iamVjdF9vYmplY3QocGFyYW1fb2JqLCAiJXt0eXBlfVQiLAorCQkJ CQkJCSBuZXdfb2JqdHJlZV9mb3JfdHlwZSh0eXBhcnJheVt0eXBudW0rK10sIC0xKSk7CisKKwkJ YXBwZW5kX29iamVjdF9vYmplY3QocGFyYW1fb2JqLCAiJXtkZWZhdWx0fXMiLCBkZWZhdWx0dmFs KTsKKworCQlwYXJhbXMgPSBsYXBwZW5kKHBhcmFtcywgbmV3X29iamVjdF9vYmplY3QocGFyYW1f b2JqKSk7CisJfQorCisJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCIle2lkZW50aXR5fUQiLCAx LAorCQkJCQkJCSJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJbmV3X29ianRyZWVf Zm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCW9iamVj dElkKSk7CisKKwlhcHBlbmRfZm9ybWF0X3N0cmluZyh0bXBfb2JqLCAiKCIpOworCWFwcGVuZF9h cnJheV9vYmplY3QodG1wX29iaiwgIiV7YXJndW1lbnRzOiwgfXMiLCBwYXJhbXMpOworCWFwcGVu ZF9mb3JtYXRfc3RyaW5nKHRtcF9vYmosICIpIik7CisKKwlpc2Z1bmN0aW9uID0gKHByb2NGb3Jt LT5wcm9raW5kICE9IFBST0tJTkRfUFJPQ0VEVVJFKTsKKworCWlmIChpc2Z1bmN0aW9uKQorCQlh cHBlbmRfb2JqZWN0X29iamVjdChyZXQsICJGVU5DVElPTiAle3NpZ25hdHVyZX1zIiwgdG1wX29i aik7CisJZWxzZQorCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICJQUk9DRURVUkUgJXtzaWdu YXR1cmV9cyIsIHRtcF9vYmopOworCisJLyoKKwkgKiBBIHJldHVybiB0eXBlIGNhbiBhZG9wdCBv bmUgb2YgdHdvIGZvcm1zOiBlaXRoZXIgYSBbU0VUT0ZdIHNvbWVfdHlwZSwKKwkgKiBvciBhIFRB QkxFKGxpc3Qtb2YtdHlwZXMpLiAgV2UgY2FuIHRlbGwgdGhlIHNlY29uZCBmb3JtIGJlY2F1c2Ug d2Ugc2F3CisJICogYSB0YWJsZSBwYXJhbSBhYm92ZSB3aGlsZSBzY2FubmluZyB0aGUgYXJndW1l bnQgbGlzdC4KKwkgKi8KKwlpZiAodGFibGVfcGFyYW1zID09IE5VTEwpCisJeworCQl0bXBfb2Jq ID0gbmV3X29ianRyZWVfVkEoIiIsIDEsCisJCQkJCQkJCSJyZXR1cm5fZm9ybSIsIE9ialR5cGVT dHJpbmcsICJwbGFpbiIpOworCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXBfb2JqLCAiJXtzZXRv Zn1zIiwgInNldG9mIiwKKwkJCQkJCQkgcHJvY0Zvcm0tPnByb3JldHNldCA/ICJTRVRPRiIgOiAi Iik7CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmosICIle3JldHR5cGV9VCIsCisJCQkJ CQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKHByb2NGb3JtLT5wcm9yZXR0eXBlLCAtMSkpOworCX0K KwllbHNlCisJeworCQlMaXN0CSAgICpyZXR0eXBlcyA9IE5JTDsKKwkJT2JqVHJlZSAgICAqcGFy YW1fb2JqOworCisJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiVEFCTEUiLCAxLAorCQkJCQkJ CQkicmV0dXJuX2Zvcm0iLCBPYmpUeXBlU3RyaW5nLCAidGFibGUiKTsKKwkJZm9yICg7IHRhYmxl X3BhcmFtcyAhPSBOVUxMOyB0YWJsZV9wYXJhbXMgPSBsbmV4dChub2RlLT5wYXJhbWV0ZXJzLCB0 YWJsZV9wYXJhbXMpKQorCQl7CisJCQlGdW5jdGlvblBhcmFtZXRlciAqcGFyYW0gPSBsZmlyc3Qo dGFibGVfcGFyYW1zKTsKKworCQkJcGFyYW1fb2JqID0gbmV3X29ianRyZWVfVkEoIiV7bmFtZX1J ICV7dHlwZX1UIiwgMiwKKwkJCQkJCQkJCSAgIm5hbWUiLCBPYmpUeXBlU3RyaW5nLCBwYXJhbS0+ bmFtZSwKKwkJCQkJCQkJCSAgInR5cGUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJICBuZXdf b2JqdHJlZV9mb3JfdHlwZSh0eXBhcnJheVt0eXBudW0rK10sIC0xKSk7CisJCQlyZXR0eXBlcyA9 IGxhcHBlbmQocmV0dHlwZXMsIG5ld19vYmplY3Rfb2JqZWN0KHBhcmFtX29iaikpOworCQl9CisK KwkJYXBwZW5kX2FycmF5X29iamVjdCh0bXBfb2JqLCAiKCV7cmV0dHlwZXM6LCB9cykiLCByZXR0 eXBlcyk7CisJfQorCisJaWYgKGlzZnVuY3Rpb24pCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJl dCwgIlJFVFVSTlMgJXtyZXR1cm5fdHlwZX1zIiwgdG1wX29iaik7CisKKwkvKiBUUkFOU0ZPUk0g Rk9SIFRZUEUgKi8KKwl0bXBfb2JqID0gbmV3X29ianRyZWUoIlRSQU5TRk9STSIpOworCisJbnR5 cGVzID0gZ2V0X2Z1bmNfdHJmdHlwZXMocHJvY1R1cCwgJnRyZnR5cGVzKTsKKwlmb3IgKGkgPSAw OyBpIDwgbnR5cGVzOyBpKyspCisJeworCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkZPUiBU WVBFICV7dHlwZX1UIiwgMSwKKwkJCQkJCQkJInR5cGUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJ CQluZXdfb2JqdHJlZV9mb3JfdHlwZSh0cmZ0eXBlc1tpXSwgLTEpKTsKKwkJdHlwZXMgPSBsYXBw ZW5kKHR5cGVzLCB0bXBfb2JqKTsKKwl9CisKKwlpZiAodHlwZXMpCisJCWFwcGVuZF9hcnJheV9v YmplY3QodG1wX29iaiwgIiV7Zm9yX3R5cGU6LCB9cyIsIHR5cGVzKTsKKwllbHNlCisJCWFwcGVu ZF9ub3RfcHJlc2VudCh0bXBfb2JqKTsKKworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7 dHJhbnNmb3JtX3R5cGV9cyIsIHRtcF9vYmopOworCisJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0 LCAiTEFOR1VBR0UgJXtsYW5ndWFnZX1JIiwgImxhbmd1YWdlIiwKKwkJCQkJCSBOYW1lU3RyKGxh bmdGb3JtLT5sYW5uYW1lKSk7CisKKwlpZiAoaXNmdW5jdGlvbikKKwl7CisJCWFwcGVuZF9zdHJp bmdfb2JqZWN0KHJldCwgIiV7d2luZG93fXMiLCAid2luZG93IiwKKwkJCQkJCQkgcHJvY0Zvcm0t PnByb2tpbmQgPT0gUFJPS0lORF9XSU5ET1cgPyAiV0lORE9XIiA6ICIiKTsKKwkJYXBwZW5kX3N0 cmluZ19vYmplY3QocmV0LCAiJXt2b2xhdGlsaXR5fXMiLCAidm9sYXRpbGl0eSIsCisJCQkJCQkJ IHByb2NGb3JtLT5wcm92b2xhdGlsZSA9PSBQUk9WT0xBVElMRV9WT0xBVElMRSA/CisJCQkJCQkJ ICJWT0xBVElMRSIgOgorCQkJCQkJCSBwcm9jRm9ybS0+cHJvdm9sYXRpbGUgPT0gUFJPVk9MQVRJ TEVfU1RBQkxFID8KKwkJCQkJCQkgIlNUQUJMRSIgOiAiSU1NVVRBQkxFIik7CisKKwkJYXBwZW5k X3N0cmluZ19vYmplY3QocmV0LCAiJXtwYXJhbGxlbF9zYWZldHl9cyIsCisJCQkJCQkJICJwYXJh bGxlbF9zYWZldHkiLAorCQkJCQkJCSBwcm9jRm9ybS0+cHJvcGFyYWxsZWwgPT0gUFJPUEFSQUxM RUxfU0FGRSA/CisJCQkJCQkJICJQQVJBTExFTCBTQUZFIiA6CisJCQkJCQkJIHByb2NGb3JtLT5w cm9wYXJhbGxlbCA9PSBQUk9QQVJBTExFTF9SRVNUUklDVEVEID8KKwkJCQkJCQkgIlBBUkFMTEVM IFJFU1RSSUNURUQiIDogIlBBUkFMTEVMIFVOU0FGRSIpOworCisJCWFwcGVuZF9zdHJpbmdfb2Jq ZWN0KHJldCwgIiV7bGVha3Byb29mfXMiLCAibGVha3Byb29mIiwKKwkJCQkJCQkgcHJvY0Zvcm0t PnByb2xlYWtwcm9vZiA/ICJMRUFLUFJPT0YiIDogIiIpOworCQlhcHBlbmRfc3RyaW5nX29iamVj dChyZXQsICIle3N0cmljdH1zIiwgInN0cmljdCIsCisJCQkJCQkJIHByb2NGb3JtLT5wcm9pc3N0 cmljdCA/CisJCQkJCQkJICJSRVRVUk5TIE5VTEwgT04gTlVMTCBJTlBVVCIgOgorCQkJCQkJCSAi Q0FMTEVEIE9OIE5VTEwgSU5QVVQiKTsKKworCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIl e3NlY3VyaXR5X2RlZmluZXJ9cyIsCisJCQkJCQkJICJzZWN1cml0eV9kZWZpbmVyIiwKKwkJCQkJ CQkgcHJvY0Zvcm0tPnByb3NlY2RlZiA/CisJCQkJCQkJICJTRUNVUklUWSBERUZJTkVSIiA6ICJT RUNVUklUWSBJTlZPS0VSIik7CisKKwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtjb3N0 fXMiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9WQSgiQ09TVCAle2Nvc3R9biIsIDEsCisJCQkJCQkJ CQkJCSJjb3N0IiwgT2JqVHlwZUZsb2F0LAorCQkJCQkJCQkJCQlwcm9jRm9ybS0+cHJvY29zdCkp OworCisJCXRtcF9vYmogPSBuZXdfb2JqdHJlZSgiUk9XUyIpOworCQlpZiAocHJvY0Zvcm0tPnBy b3Jvd3MgPT0gMCkKKwkJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXBfb2JqKTsKKwkJZWxzZQorCQkJ YXBwZW5kX2Zsb2F0X29iamVjdCh0bXBfb2JqLCAiJXtyb3dzfW4iLCBwcm9jRm9ybS0+cHJvcm93 cyk7CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7cm93c31zIiwgdG1wX29iaik7CisK KwkJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJTVVBQT1JUICV7bmFtZX1zIik7CisJCWlmIChwcm9j Rm9ybS0+cHJvc3VwcG9ydCkKKwkJeworCQkJT2lkCQkJYXJndHlwZXNbXSA9IHsgSU5URVJOQUxP SUQgfTsKKworCQkJLyoKKwkJCSAqIFdlIHNob3VsZCBxdWFsaWZ5IHRoZSBzdXBwb3J0IGZ1bmN0 aW9uJ3MgbmFtZSBpZiBpdCB3b3VsZG4ndCBiZQorCQkJICogcmVzb2x2ZWQgYnkgbG9va3VwIGlu IHRoZSBjdXJyZW50IHNlYXJjaCBwYXRoLgorCQkJICovCisJCQlhcHBlbmRfc3RyaW5nX29iamVj dCh0bXBfb2JqLCAiJXtuYW1lfXMiLCAibmFtZSIsCisJCQkJCQkJCSBnZW5lcmF0ZV9mdW5jdGlv bl9uYW1lKHByb2NGb3JtLT5wcm9zdXBwb3J0LCAxLAorCQkJCQkJCQkJCQkJCQlOSUwsIGFyZ3R5 cGVzLAorCQkJCQkJCQkJCQkJCQlmYWxzZSwgTlVMTCwKKwkJCQkJCQkJCQkJCQkJRVhQUl9LSU5E X05PTkUpKTsKKwkJfQorCQllbHNlCisJCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisK KwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtzdXBwb3J0fXMiLCB0bXBfb2JqKTsKKwl9 CisKKwlmb3JlYWNoKGNlbGwsIG5vZGUtPm9wdGlvbnMpCisJeworCQlEZWZFbGVtICAgICpkZWZl bCA9IChEZWZFbGVtICopIGxmaXJzdChjZWxsKTsKKworCQlpZiAoc3RyY21wKGRlZmVsLT5kZWZu YW1lLCAic2V0IikgPT0gMCkKKwkJeworCQkJVmFyaWFibGVTZXRTdG10ICpzc3RtdCA9IChWYXJp YWJsZVNldFN0bXQgKikgZGVmZWwtPmFyZzsKKwkJCWNoYXIJICAgKnZhbHVlID0gRXh0cmFjdFNl dFZhcmlhYmxlQXJncyhzc3RtdCk7CisKKwkJCXRtcF9vYmogPSBkZXBhcnNlX0Z1bmN0aW9uU2V0 KHNzdG10LT5raW5kLCBzc3RtdC0+bmFtZSwgdmFsdWUpOworCQkJc2V0cyA9IGxhcHBlbmQoc2V0 cywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQl9CisJfQorCWFwcGVuZF9hcnJheV9v YmplY3QocmV0LCAiJXtzZXRfb3B0aW9uczogfXMiLCBzZXRzKTsKKworCS8qIEFkZCB0aGUgZnVu Y3Rpb24gZGVmaW5pdGlvbiAqLworCSh2b2lkKSBTeXNDYWNoZUdldEF0dHIoUFJPQ09JRCwgcHJv Y1R1cCwgQW51bV9wZ19wcm9jX3Byb3NxbGJvZHksICZpc251bGwpOworCWlmIChwcm9jRm9ybS0+ cHJvbGFuZyA9PSBTUUxsYW5ndWFnZUlkICYmICFpc251bGwpCisJeworCQlTdHJpbmdJbmZvRGF0 YSBidWY7CisKKwkJaW5pdFN0cmluZ0luZm8oJmJ1Zik7CisJCXByaW50X2Z1bmN0aW9uX3NxbGJv ZHkoJmJ1ZiwgcHJvY1R1cCk7CisKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtkZWZp bml0aW9ufXMiLCAiZGVmaW5pdGlvbiIsCisJCQkJCQkJIGJ1Zi5kYXRhKTsKKwl9CisJZWxzZSBp ZiAocHJvYmluID09IE5VTEwpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIkFTICV7ZGVm aW5pdGlvbn1MIiwgImRlZmluaXRpb24iLCBzb3VyY2UpOworCWVsc2UKKwl7CisJCWFwcGVuZF9z dHJpbmdfb2JqZWN0KHJldCwgIkFTICV7b2JqZmlsZX1MIiwgIm9iamZpbGUiLCBwcm9iaW4pOwor CQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIsICV7c3ltYm9sfUwiLCAic3ltYm9sIiwgc291 cmNlKTsKKwl9CisKKwlSZWxlYXNlU3lzQ2FjaGUobGFuZ1R1cCk7CisJUmVsZWFzZVN5c0NhY2hl KHByb2NUdXApOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYSBDUkVBVEUg T1BFUkFUT1IgQ0xBU1MgY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRF IE9QRVJBVE9SIENMQVNTICV7aWRlbnRpdHl9RCAle2RlZmF1bHR9cyBGT1IgVFlQRSAle3R5cGV9 VCBVU0lORworICogJXthbW5hbWV9SSAle29wZmFtaWx5fXMgQVMgJXtpdGVtczosIH1zCisgKi8K K3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRlT3BDbGFzc1N0bXQoQ29sbGVjdGVkQ29t bWFuZCAqY21kKQoreworCU9pZAkJCW9wY29pZCA9IGNtZC0+ZC5jcmVhdGVvcGMuYWRkcmVzcy5v YmplY3RJZDsKKwlIZWFwVHVwbGUJb3BjVHVwOworCUhlYXBUdXBsZQlvcGZUdXA7CisJRm9ybV9w Z19vcGZhbWlseSBvcGZGb3JtOworCUZvcm1fcGdfb3BjbGFzcyBvcGNGb3JtOworCU9ialRyZWUg ICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXBfb2JqOworCUxpc3QJICAgKmxpc3Q7CisJTGlzdENl bGwgICAqY2VsbDsKKworCS8qIERvbid0IGRlcGFyc2UgU1FMIGNvbW1hbmRzIGdlbmVyYXRlZCB3 aGlsZSBjcmVhdGluZyBleHRlbnNpb24gKi8KKwlpZiAoY21kLT5pbl9leHRlbnNpb24pCisJCXJl dHVybiBOVUxMOworCisJb3BjVHVwID0gU2VhcmNoU3lzQ2FjaGUxKENMQU9JRCwgT2JqZWN0SWRH ZXREYXR1bShvcGNvaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQob3BjVHVwKSkKKwkJZWxv ZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wY2xhc3Mgd2l0aCBPSUQgJXUiLCBv cGNvaWQpOworCW9wY0Zvcm0gPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJVQ1Qob3BjVHVwKTsK KworCW9wZlR1cCA9IFNlYXJjaFN5c0NhY2hlMShPUEZBTUlMWU9JRCwgb3BjRm9ybS0+b3BjZmFt aWx5KTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQob3BmVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNh Y2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wZXJhdG9yIGZhbWlseSB3aXRoIE9JRCAldSIsIG9wY0Zv cm0tPm9wY2ZhbWlseSk7CisJb3BmRm9ybSA9IChGb3JtX3BnX29wZmFtaWx5KSBHRVRTVFJVQ1Qo b3BmVHVwKTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUgT1BFUkFUT1IgQ0xBU1Mg JXtpZGVudGl0eX1EICV7ZGVmYXVsdH1zIEZPUiBUWVBFICV7dHlwZX1UIFVTSU5HICV7YW1uYW1l fUkiLCA0LAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29i anRyZWVfZm9yX3F1YWxuYW1lKG9wY0Zvcm0tPm9wY25hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCSAg TmFtZVN0cihvcGNGb3JtLT5vcGNuYW1lKSksCisJCQkJCQkgImRlZmF1bHQiLCBPYmpUeXBlU3Ry aW5nLAorCQkJCQkJIG9wY0Zvcm0tPm9wY2RlZmF1bHQgPyAiREVGQVVMVCIgOiAiIiwKKwkJCQkJ CSAidHlwZSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3R5cGUob3Bj Rm9ybS0+b3BjaW50eXBlLCAtMSksCisJCQkJCQkgImFtbmFtZSIsIE9ialR5cGVTdHJpbmcsIGdl dF9hbV9uYW1lKG9wY0Zvcm0tPm9wY21ldGhvZCkpOworCisJLyoKKwkgKiBBZGQgdGhlIEZBTUlM WSBjbGF1c2UsIGJ1dCBpZiBpdCBoYXMgdGhlIHNhbWUgbmFtZSBhbmQgbmFtZXNwYWNlIGFzIHRo ZQorCSAqIG9wY2xhc3MsIHRoZW4gaGF2ZSBpdCBleHBhbmQgdG8gZW1wdHkgYmVjYXVzZSBpdCB3 b3VsZCBjYXVzZSBhIGZhaWx1cmUKKwkgKiBpZiB0aGUgb3BmYW1pbHkgd2FzIGNyZWF0ZWQgaW50 ZXJuYWxseS4KKwkgKi8KKwl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkZBTUlMWSAle29wZmFt aWx5fUQiLCAxLAorCQkJCQkJCSJvcGZhbWlseSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJbmV3 X29ianRyZWVfZm9yX3F1YWxuYW1lKG9wZkZvcm0tPm9wZm5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJ CQkgTmFtZVN0cihvcGZGb3JtLT5vcGZuYW1lKSkpOworCisJaWYgKHN0cmNtcChOYW1lU3RyKG9w ZkZvcm0tPm9wZm5hbWUpLCBOYW1lU3RyKG9wY0Zvcm0tPm9wY25hbWUpKSA9PSAwICYmCisJCW9w ZkZvcm0tPm9wZm5hbWVzcGFjZSA9PSBvcGNGb3JtLT5vcGNuYW1lc3BhY2UpCisJCWFwcGVuZF9u b3RfcHJlc2VudCh0bXBfb2JqKTsKKworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7b3Bm YW1pbHl9cyIsIHRtcF9vYmopOworCisJLyoKKwkgKiBBZGQgdGhlIGluaXRpYWwgaXRlbSBsaXN0 LiAgTm90ZSB3ZSBhbHdheXMgYWRkIHRoZSBTVE9SQUdFIGNsYXVzZSwgZXZlbgorCSAqIHdoZW4g aXQgaXMgaW1wbGljaXQgaW4gdGhlIG9yaWdpbmFsIGNvbW1hbmQuCisJICovCisJdG1wX29iaiA9 IG5ld19vYmp0cmVlKCJTVE9SQUdFIik7CisJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwg IiV7dHlwZX1UIiwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfdHlwZShPaWRJc1ZhbGlkKG9wY0Zv cm0tPm9wY2tleXR5cGUpID8KKwkJCQkJCQkJCQkJICBvcGNGb3JtLT5vcGNrZXl0eXBlIDogb3Bj Rm9ybS0+b3BjaW50eXBlLAorCQkJCQkJCQkJCQkgIC0xKSk7CisJbGlzdCA9IGxpc3RfbWFrZTEo bmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCisJLyogQWRkIHRoZSBkZWNsYXJlZCBvcGVy YXRvcnMgKi8KKwlmb3JlYWNoKGNlbGwsIGNtZC0+ZC5jcmVhdGVvcGMub3BlcmF0b3JzKQorCXsK KwkJT3BGYW1pbHlNZW1iZXIgKm9wZXIgPSBsZmlyc3QoY2VsbCk7CisKKwkJdG1wX29iaiA9IG5l d19vYmp0cmVlX1ZBKCJPUEVSQVRPUiAle251bX1uICV7b3BlcmF0b3J9Tygle2x0eXBlfVQsICV7 cnR5cGV9VCkiLCA0LAorCQkJCQkJCQkibnVtIiwgT2JqVHlwZUludGVnZXIsIG9wZXItPm51bWJl ciwKKwkJCQkJCQkJIm9wZXJhdG9yIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJbmV3X29ianRy ZWVfZm9yX3F1YWxuYW1lX2lkKE9wZXJhdG9yUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJCW9w ZXItPm9iamVjdCksCisJCQkJCQkJCSJsdHlwZSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCW5l d19vYmp0cmVlX2Zvcl90eXBlKG9wZXItPmxlZnR0eXBlLCAtMSksCisJCQkJCQkJCSJydHlwZSIs IE9ialR5cGVPYmplY3QsCisJCQkJCQkJCW5ld19vYmp0cmVlX2Zvcl90eXBlKG9wZXItPnJpZ2h0 dHlwZSwgLTEpKTsKKworCQkvKiBBZGQgdGhlIEZPUiBTRUFSQ0ggLyBGT1IgT1JERVIgQlkgY2xh dXNlICovCisJCWlmIChvcGVyLT5zb3J0ZmFtaWx5ID09IEludmFsaWRPaWQpCisJCQlhcHBlbmRf c3RyaW5nX29iamVjdCh0bXBfb2JqLCAiJXtwdXJwb3NlfXMiLCAicHVycG9zZSIsCisJCQkJCQkJ CSAiRk9SIFNFQVJDSCIpOworCQllbHNlCisJCXsKKwkJCU9ialRyZWUgICAgKnRtcF9vYmoyOwor CisJCQl0bXBfb2JqMiA9IG5ld19vYmp0cmVlKCJGT1IgT1JERVIgQlkgJXtvcGZhbWlseX1EIik7 CisJCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2JqMiwgIm9wZmFtaWx5IiwKKwkJCQkJCQkJ IG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChPcGVyYXRvckZhbWlseVJlbGF0aW9uSWQsCisJ CQkJCQkJCQkJCQkJCQkgb3Blci0+c29ydGZhbWlseSkpOworCQkJYXBwZW5kX29iamVjdF9vYmpl Y3QodG1wX29iaiwgIiV7cHVycG9zZX1zIiwgdG1wX29iajIpOworCQl9CisKKwkJbGlzdCA9IGxh cHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCX0KKworCS8qIEFkZCB0 aGUgZGVjbGFyZWQgc3VwcG9ydCBmdW5jdGlvbnMgKi8KKwlmb3JlYWNoKGNlbGwsIGNtZC0+ZC5j cmVhdGVvcGMucHJvY2VkdXJlcykKKwl7CisJCU9wRmFtaWx5TWVtYmVyICpwcm9jID0gbGZpcnN0 KGNlbGwpOworCQlIZWFwVHVwbGUJcHJvY1R1cDsKKwkJRm9ybV9wZ19wcm9jIHByb2NGb3JtOwor CQlPaWQJCSAgICpwcm9hcmd0eXBlczsKKwkJTGlzdAkgICAqYXJnbGlzdCA9IE5JTDsKKwkJaW50 CQkJaTsKKworCQlwcm9jVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFBST0NPSUQsIE9iamVjdElkR2V0 RGF0dW0ocHJvYy0+b2JqZWN0KSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZChwcm9jVHVwKSkK KwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBwcm9jZWR1cmUgd2l0aCBP SUQgJXUiLAorCQkJCSBwcm9jLT5vYmplY3QpOworCQlwcm9jRm9ybSA9IChGb3JtX3BnX3Byb2Mp IEdFVFNUUlVDVChwcm9jVHVwKTsKKworCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkZVTkNU SU9OICV7bnVtfW4gKCV7bHR5cGV9VCwgJXtydHlwZX1UKSAle2Z1bmN0aW9ufUQiLCA0LAorCQkJ CQkJCQkibnVtIiwgT2JqVHlwZUludGVnZXIsIHByb2MtPm51bWJlciwKKwkJCQkJCQkJImx0eXBl IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJbmV3X29ianRyZWVfZm9yX3R5cGUocHJvYy0+bGVm dHR5cGUsIC0xKSwKKwkJCQkJCQkJInJ0eXBlIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJbmV3 X29ianRyZWVfZm9yX3R5cGUocHJvYy0+cmlnaHR0eXBlLCAtMSksCisJCQkJCQkJCSJmdW5jdGlv biIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCW5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShwcm9j Rm9ybS0+cHJvbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJCQkgTmFtZVN0cihwcm9jRm9ybS0+cHJv bmFtZSkpKTsKKworCQlwcm9hcmd0eXBlcyA9IHByb2NGb3JtLT5wcm9hcmd0eXBlcy52YWx1ZXM7 CisJCWZvciAoaSA9IDA7IGkgPCBwcm9jRm9ybS0+cHJvbmFyZ3M7IGkrKykKKwkJeworCQkJT2Jq VHJlZSAgICAqYXJnOworCisJCQlhcmcgPSBuZXdfb2JqdHJlZV9mb3JfdHlwZShwcm9hcmd0eXBl c1tpXSwgLTEpOworCQkJYXJnbGlzdCA9IGxhcHBlbmQoYXJnbGlzdCwgbmV3X29iamVjdF9vYmpl Y3QoYXJnKSk7CisJCX0KKworCQlhcHBlbmRfZm9ybWF0X3N0cmluZyh0bXBfb2JqLCAiKCIpOwor CQlhcHBlbmRfYXJyYXlfb2JqZWN0KHRtcF9vYmosICIle2FyZ3R5cGVzOiwgfVQiLCBhcmdsaXN0 KTsKKwkJYXBwZW5kX2Zvcm1hdF9zdHJpbmcodG1wX29iaiwgIikiKTsKKworCQlSZWxlYXNlU3lz Q2FjaGUocHJvY1R1cCk7CisKKwkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmpl Y3QodG1wX29iaikpOworCX0KKworCWFwcGVuZF9hcnJheV9vYmplY3QocmV0LCAiQVMgJXtpdGVt czosIH1zIiwgbGlzdCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUob3BmVHVwKTsKKwlSZWxlYXNlU3lz Q2FjaGUob3BjVHVwKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ3Jl YXRlT3BGYW1pbHlTdG10IChDUkVBVEUgT1BFUkFUT1IgRkFNSUxZKQorICoKKyAqIEdpdmVuIGEg b3BlcmF0b3IgZmFtaWx5IE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCBy ZXR1cm4gYW4KKyAqIE9ialRyZWUgcmVwcmVzZW50aW5nIHRoZSBjcmVhdGlvbiBjb21tYW5kLgor ICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgT1BFUkFUT1IgRkFNSUxZICV7aWRlbnRp dHl9RCBVU0lORyAle2FtbmFtZX1JCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3Jl YXRlT3BGYW1pbHkoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJSGVhcFR1cGxl CW9wZlR1cDsKKwlIZWFwVHVwbGUJYW1UdXA7CisJRm9ybV9wZ19vcGZhbWlseSBvcGZGb3JtOwor CUZvcm1fcGdfYW0JYW1Gb3JtOworCU9ialRyZWUgICAgKnJldDsKKworCW9wZlR1cCA9IFNlYXJj aFN5c0NhY2hlMShPUEZBTUlMWU9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJZCkpOworCWlm ICghSGVhcFR1cGxlSXNWYWxpZChvcGZUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3Vw IGZhaWxlZCBmb3Igb3BlcmF0b3IgZmFtaWx5IHdpdGggT0lEICV1Iiwgb2JqZWN0SWQpOworCW9w ZkZvcm0gPSAoRm9ybV9wZ19vcGZhbWlseSkgR0VUU1RSVUNUKG9wZlR1cCk7CisKKwlhbVR1cCA9 IFNlYXJjaFN5c0NhY2hlMShBTU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGZGb3JtLT5vcGZtZXRo b2QpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoYW1UdXApKQorCQllbG9nKEVSUk9SLCAiY2Fj aGUgbG9va3VwIGZhaWxlZCBmb3IgYWNjZXNzIG1ldGhvZCB3aXRoIE9JRCAldSIsCisJCQkgb3Bm Rm9ybS0+b3BmbWV0aG9kKTsKKwlhbUZvcm0gPSAoRm9ybV9wZ19hbSkgR0VUU1RSVUNUKGFtVHVw KTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUgT1BFUkFUT1IgRkFNSUxZICV7aWRl bnRpdHl9RCBVU0lORyAle2FtbmFtZX1JIiwgMiwKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBl T2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShvcGZGb3JtLT5vcGZuYW1l c3BhY2UsCisJCQkJCQkJCQkJCQkgIE5hbWVTdHIob3BmRm9ybS0+b3BmbmFtZSkpLAorCQkJCQkJ ICJhbW5hbWUiLCBPYmpUeXBlU3RyaW5nLCBOYW1lU3RyKGFtRm9ybS0+YW1uYW1lKSk7CisKKwlS ZWxlYXNlU3lzQ2FjaGUoYW1UdXApOworCVJlbGVhc2VTeXNDYWNoZShvcGZUdXApOworCisJcmV0 dXJuIHJldDsKK30KKworLyoKKyAqIEFkZCBjb21tb24gY2xhdXNlcyB0byBDcmVhdGVQb2xpY3kg b3IgQWx0ZXJQb2xpY3kgZGVwYXJzZSBvYmplY3RzLgorICovCitzdGF0aWMgdm9pZAorYWRkX3Bv bGljeV9jbGF1c2VzKE9ialRyZWUgKnJldCwgT2lkIHBvbGljeU9pZCwgTGlzdCAqcm9sZXMsIGJv b2wgZG9fcXVhbCwKKwkJCQkgICBib29sIGRvX3dpdGhfY2hlY2spCit7CisJUmVsYXRpb24JcG9s UmVsID0gdGFibGVfb3BlbihQb2xpY3lSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCUhl YXBUdXBsZQlwb2xUdXAgPSBnZXRfY2F0YWxvZ19vYmplY3RfYnlfb2lkKHBvbFJlbCwgQW51bV9w Z19wb2xpY3lfb2lkLCBwb2xpY3lPaWQpOworCUZvcm1fcGdfcG9saWN5IHBvbEZvcm07CisKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQocG9sVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIHBvbGljeSB3aXRoIE9JRCAldSIsIHBvbGljeU9pZCk7CisKKwlwb2xGb3Jt ID0gKEZvcm1fcGdfcG9saWN5KSBHRVRTVFJVQ1QocG9sVHVwKTsKKworCS8qIEFkZCB0aGUgIk9O IHRhYmxlIiBjbGF1c2UgKi8KKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICJPTiAle3RhYmxl fUQiLAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxhdGlvblJlbGF0aW9u SWQsCisJCQkJCQkJCQkJCQkJIHBvbEZvcm0tPnBvbHJlbGlkKSk7CisKKwkvKgorCSAqIEFkZCB0 aGUgIlRPIHJvbGUiIGNsYXVzZSwgaWYgYW55LiAgSW4gdGhlIENSRUFURSBjYXNlLCBpdCBhbHdh eXMKKwkgKiBjb250YWlucyBhdCBsZWFzdCBQVUJMSUMsIGJ1dCBpbiB0aGUgQUxURVIgY2FzZSBp dCBtaWdodCBiZSBlbXB0eS4KKwkgKi8KKwlpZiAocm9sZXMpCisJeworCQlMaXN0CSAgICpsaXN0 ID0gTklMOworCQlMaXN0Q2VsbCAgICpjZWxsOworCisJCWZvcmVhY2goY2VsbCwgcm9sZXMpCisJ CXsKKwkJCVJvbGVTcGVjICAgKnNwZWMgPSAoUm9sZVNwZWMgKikgbGZpcnN0KGNlbGwpOworCisJ CQlsaXN0ID0gbGFwcGVuZChsaXN0LAorCQkJCQkJICAgbmV3X29iamVjdF9vYmplY3QobmV3X29i anRyZWVfZm9yX3JvbGVzcGVjKHNwZWMpKSk7CisJCX0KKwkJYXBwZW5kX2FycmF5X29iamVjdChy ZXQsICJUTyAle3JvbGU6LCB9UiIsIGxpc3QpOworCX0KKwllbHNlCisJCWFwcGVuZF9ub3RfcHJl c2VudChyZXQpOworCisJLyogQWRkIHRoZSBVU0lORyBjbGF1c2UsIGlmIGFueSAqLworCWlmIChk b19xdWFsKQorCXsKKwkJRGF0dW0JCWRlcGFyc2VkOworCQlEYXR1bQkJc3RvcmVkZXhwcjsKKwkJ Ym9vbAkJaXNudWxsOworCisJCXN0b3JlZGV4cHIgPSBoZWFwX2dldGF0dHIocG9sVHVwLCBBbnVt X3BnX3BvbGljeV9wb2xxdWFsLAorCQkJCQkJCQkgIFJlbGF0aW9uR2V0RGVzY3IocG9sUmVsKSwg JmlzbnVsbCk7CisJCWlmIChpc251bGwpCisJCQllbG9nKEVSUk9SLCAibnVsbCBwb2xxdWFsIGV4 cHJlc3Npb24gaW4gcG9saWN5ICV1IiwgcG9saWN5T2lkKTsKKwkJZGVwYXJzZWQgPSBEaXJlY3RG dW5jdGlvbkNhbGwyKHBnX2dldF9leHByLCBzdG9yZWRleHByLCBwb2xGb3JtLT5wb2xyZWxpZCk7 CisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIlVTSU5HICgle2V4cHJlc3Npb259cykiLCAi ZXhwcmVzc2lvbiIsCisJCQkJCQkJIFRleHREYXR1bUdldENTdHJpbmcoZGVwYXJzZWQpKTsKKwl9 CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQocmV0KTsKKworCS8qIEFkZCB0aGUgV0lUSCBD SEVDSyBjbGF1c2UsIGlmIGFueSAqLworCWlmIChkb193aXRoX2NoZWNrKQorCXsKKwkJRGF0dW0J CWRlcGFyc2VkOworCQlEYXR1bQkJc3RvcmVkZXhwcjsKKwkJYm9vbAkJaXNudWxsOworCisJCXN0 b3JlZGV4cHIgPSBoZWFwX2dldGF0dHIocG9sVHVwLCBBbnVtX3BnX3BvbGljeV9wb2x3aXRoY2hl Y2ssCisJCQkJCQkJCSAgUmVsYXRpb25HZXREZXNjcihwb2xSZWwpLCAmaXNudWxsKTsKKwkJaWYg KGlzbnVsbCkKKwkJCWVsb2coRVJST1IsICJudWxsIHBvbHdpdGhjaGVjayBleHByZXNzaW9uIGlu IHBvbGljeSAldSIsIHBvbGljeU9pZCk7CisJCWRlcGFyc2VkID0gRGlyZWN0RnVuY3Rpb25DYWxs MihwZ19nZXRfZXhwciwgc3RvcmVkZXhwciwgcG9sRm9ybS0+cG9scmVsaWQpOworCQlhcHBlbmRf c3RyaW5nX29iamVjdChyZXQsICJXSVRIIENIRUNLICgle2V4cHJlc3Npb259cykiLAorCQkJCQkJ CSAiZXhwcmVzc2lvbiIsIFRleHREYXR1bUdldENTdHJpbmcoZGVwYXJzZWQpKTsKKwl9CisJZWxz ZQorCQlhcHBlbmRfbm90X3ByZXNlbnQocmV0KTsKKworCXJlbGF0aW9uX2Nsb3NlKHBvbFJlbCwg QWNjZXNzU2hhcmVMb2NrKTsKK30KKworLyoKKyAqIERlcGFyc2UgYSBDcmVhdGVQb2xpY3lTdG10 IChDUkVBVEUgUE9MSUNZKQorICoKKyAqIEdpdmVuIGEgcG9saWN5IE9JRCBhbmQgdGhlIHBhcnNl IHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVzZW50aW5n IHRoZSBjcmVhdGlvbiBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUg UE9MSUNZICV7aWRlbnRpdHl9SQorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NyZWF0 ZVBvbGljeVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQ3JlYXRlUG9s aWN5U3RtdCAqbm9kZSA9IChDcmVhdGVQb2xpY3lTdG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVl ICAgICpyZXQ7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIFBPTElDWSAle2lkZW50 aXR5fUkiLCAxLAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPnBvbGlj eV9uYW1lKTsKKworCS8qIEFkZCB0aGUgcmVzdCBvZiB0aGUgc3R1ZmYgKi8KKwlhZGRfcG9saWN5 X2NsYXVzZXMocmV0LCBvYmplY3RJZCwgbm9kZS0+cm9sZXMsIG5vZGUtPnF1YWwgIT0gTlVMTCwK KwkJCQkJICAgbm9kZS0+d2l0aF9jaGVjayAhPSBOVUxMKTsKKworCXJldHVybiByZXQ7Cit9CisK Ky8qCisgKiBEZXBhcnNlIGEgQWx0ZXJQb2xpY3lTdG10IChBTFRFUiBQT0xJQ1kpCisgKgorICog R2l2ZW4gYSBwb2xpY3kgT0lEIGFuZCB0aGUgcGFyc2UgdHJlZSBvZiB0aGUgQUxURVIgUE9MSUNZ IGNvbW1hbmQsIHJldHVybgorICogYW4gT2JqVHJlZSByZXByZXNlbnRpbmcgdGhlIGFsdGVyIGNv bW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIEFMVEVSIFBPTElDWSAle2lkZW50aXR5 fUkKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlclBvbGljeVN0bXQoT2lkIG9i amVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQWx0ZXJQb2xpY3lTdG10ICpub2RlID0gKEFs dGVyUG9saWN5U3RtdCAqKSBwYXJzZXRyZWU7CisJT2JqVHJlZSAgICAqcmV0OworCisJcmV0ID0g bmV3X29ianRyZWVfVkEoIkFMVEVSIFBPTElDWSAle2lkZW50aXR5fUkiLCAxLAorCQkJCQkJICJp ZGVudGl0eSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPnBvbGljeV9uYW1lKTsKKworCS8qIEFkZCB0 aGUgcmVzdCBvZiB0aGUgc3R1ZmYgKi8KKwlhZGRfcG9saWN5X2NsYXVzZXMocmV0LCBvYmplY3RJ ZCwgbm9kZS0+cm9sZXMsIG5vZGUtPnF1YWwgIT0gTlVMTCwKKwkJCQkJICAgbm9kZS0+d2l0aF9j aGVjayAhPSBOVUxMKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ3Jl YXRlU2NoZW1hU3RtdC4KKyAqCisgKiBHaXZlbiBhIHNjaGVtYSBPSUQgYW5kIHRoZSBwYXJzZSB0 cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0 aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFIFND SEVNQSAle2lmX25vdF9leGlzdHN9cyAle25hbWV9SSBBVVRIT1JJWkFUSU9OICV7YXV0aG9yaXph dGlvbn1zCisqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9DcmVhdGVTY2hlbWFTdG10KE9p ZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUNyZWF0ZVNjaGVtYVN0bXQgKm5vZGUg PSAoQ3JlYXRlU2NoZW1hU3RtdCAqKSBwYXJzZXRyZWU7CisJT2JqVHJlZSAgICAqcmV0OworCU9i alRyZWUgICAgKmF1dGg7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIFNDSEVNQSAl e2lmX25vdF9leGlzdHN9cyAle25hbWV9SSIsIDIsCisJCQkJCQkgImlmX25vdF9leGlzdHMiLCBP YmpUeXBlU3RyaW5nLAorCQkJCQkJIG5vZGUtPmlmX25vdF9leGlzdHMgPyAiSUYgTk9UIEVYSVNU UyIgOiAiIiwKKwkJCQkJCSAibmFtZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgbm9kZS0+c2No ZW1hbmFtZSA/IG5vZGUtPnNjaGVtYW5hbWUgOiAiIik7CisKKwlhdXRoID0gbmV3X29ianRyZWUo IkFVVEhPUklaQVRJT04iKTsKKwlpZiAobm9kZS0+YXV0aHJvbGUpCisJCWFwcGVuZF9zdHJpbmdf b2JqZWN0KGF1dGgsICIle2F1dGhvcml6YXRpb25fcm9sZX1JIiwKKwkJCQkJCQkgImF1dGhvcml6 YXRpb25fcm9sZSIsCisJCQkJCQkJIGdldF9yb2xlc3BlY19uYW1lKG5vZGUtPmF1dGhyb2xlKSk7 CisJZWxzZQorCXsKKwkJYXBwZW5kX251bGxfb2JqZWN0KGF1dGgsICIle2F1dGhvcml6YXRpb25f cm9sZX1JIik7CisJCWFwcGVuZF9ub3RfcHJlc2VudChhdXRoKTsKKwl9CisJYXBwZW5kX29iamVj dF9vYmplY3QocmV0LCAiJXthdXRob3JpemF0aW9ufXMiLCBhdXRoKTsKKworCXJldHVybiByZXQ7 Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIGRlZmF1bHQgdmFsdWUgb2YgYSBkb21haW4uCisgKi8K K3N0YXRpYyBjaGFyICoKK0RvbWFpbkdldERlZmF1bHQoSGVhcFR1cGxlIGRvbVR1cCwgYm9vbCBt aXNzaW5nX29rKQoreworCURhdHVtCQlkZWY7CisJTm9kZQkgICAqZGVmdmFsOworCWNoYXIJICAg KmRlZnN0cjsKKwlib29sCQlpc251bGw7CisKKwlkZWYgPSBTeXNDYWNoZUdldEF0dHIoVFlQRU9J RCwgZG9tVHVwLCBBbnVtX3BnX3R5cGVfdHlwZGVmYXVsdGJpbiwKKwkJCQkJCSAgJmlzbnVsbCk7 CisJaWYgKGlzbnVsbCkKKwl7CisJCWlmICghbWlzc2luZ19vaykKKwkJCWVsb2coRVJST1IsICJk b21haW4gXCIlc1wiIGRvZXMgbm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlIiwKKwkJCQlOYW1lU3Ry KCgoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1QoZG9tVHVwKSktPnR5cG5hbWUpKTsKKwkJZWxzZQor CQkJcmV0dXJuIE5VTEw7CisJfQorCisJZGVmdmFsID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdl dENTdHJpbmcoZGVmKSk7CisJZGVmc3RyID0gZGVwYXJzZV9leHByZXNzaW9uKGRlZnZhbCwgTlVM TCAvKiBkcGNvbnRleHQ/ICovICwKKwkJCQkJCQkJZmFsc2UsIGZhbHNlKTsKKworCXJldHVybiBk ZWZzdHI7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQWx0ZXJEb21haW5TdG10LgorICoKKyAqIFZl cmJvc2Ugc3ludGF4CisgKiBBTFRFUiBET01BSU4gJXtpZGVudGl0eX1EIERST1AgREVGQVVMVAor ICogT1IKKyAqIEFMVEVSIERPTUFJTiAle2lkZW50aXR5fUQgU0VUIERFRkFVTFQgJXtkZWZhdWx0 fXMKKyAqIE9SCisgKiBBTFRFUiBET01BSU4gJXtpZGVudGl0eX1EIERST1AgTk9UIE5VTEwKKyAq IE9SCisgKiBBTFRFUiBET01BSU4gJXtpZGVudGl0eX1EIFNFVCBOT1QgTlVMTAorICogT1IKKyAq IEFMVEVSIERPTUFJTiAle2lkZW50aXR5fUQgQUREIENPTlNUUkFJTlQgJXtjb25zdHJhaW50X25h bWV9cyAle2RlZmluaXRpb259cworICogT1IKKyAqIEFMVEVSIERPTUFJTiAle2lkZW50aXR5fUQg RFJPUCBDT05TVFJBSU5UIElGIEVYSVNUUyAle2NvbnN0cmFpbnRfbmFtZX1zICV7Y2FzY2FkZX1z CisgKiBPUgorICogQUxURVIgRE9NQUlOICV7aWRlbnRpdHl9RCBWQUxJREFURSBDT05TVFJBSU5U ICV7Y29uc3RyYWludF9uYW1lfXMKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRl ckRvbWFpblN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUsCisJCQkJCQlPYmplY3RB ZGRyZXNzIGNvbnN0cmFpbnRBZGRyKQoreworCUFsdGVyRG9tYWluU3RtdCAqbm9kZSA9IChBbHRl ckRvbWFpblN0bXQgKikgcGFyc2V0cmVlOworCUhlYXBUdXBsZQlkb21UdXA7CisJRm9ybV9wZ190 eXBlIGRvbUZvcm07CisJT2JqVHJlZSAgICAqcmV0OworCisJZG9tVHVwID0gU2VhcmNoU3lzQ2Fj aGUxKFRZUEVPSUQsIG9iamVjdElkKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoZG9tVHVwKSkK KwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGRvbWFpbiB3aXRoIE9JRCAl dSIsIG9iamVjdElkKTsKKwlkb21Gb3JtID0gKEZvcm1fcGdfdHlwZSkgR0VUU1RSVUNUKGRvbVR1 cCk7CisKKwlzd2l0Y2ggKG5vZGUtPnN1YnR5cGUpCisJeworCQljYXNlICdUJzoKKwkJCS8qIFNF VCBERUZBVUxUIC8gRFJPUCBERUZBVUxUICovCisJCQlpZiAobm9kZS0+ZGVmID09IE5VTEwpCisJ CQkJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIERPTUFJTiAle2lkZW50aXR5fUQgRFJPUCBE RUZBVUxUIiwgMiwKKwkJCQkJCQkJCSAidHlwZSIsIE9ialR5cGVTdHJpbmcsICJkcm9wIGRlZmF1 bHQiLAorCQkJCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCQkgbmV3 X29ianRyZWVfZm9yX3F1YWxuYW1lKGRvbUZvcm0tPnR5cG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJ CQkJCSAgTmFtZVN0cihkb21Gb3JtLT50eXBuYW1lKSkpOworCQkJZWxzZQorCQkJCXJldCA9IG5l d19vYmp0cmVlX1ZBKCJBTFRFUiBET01BSU4gJXtpZGVudGl0eX1EIFNFVCBERUZBVUxUICV7ZGVm YXVsdH1zIiwgMywKKwkJCQkJCQkJCSAidHlwZSIsIE9ialR5cGVTdHJpbmcsICJzZXQgZGVmYXVs dCIsCisJCQkJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJCSBuZXdf b2JqdHJlZV9mb3JfcXVhbG5hbWUoZG9tRm9ybS0+dHlwbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJ CQkJICBOYW1lU3RyKGRvbUZvcm0tPnR5cG5hbWUpKSwKKwkJCQkJCQkJCSAiZGVmYXVsdCIsIE9i alR5cGVTdHJpbmcsCisJCQkJCQkJCQkgRG9tYWluR2V0RGVmYXVsdChkb21UdXAsIGZhbHNlKSk7 CisJCQlicmVhazsKKwkJY2FzZSAnTic6CisJCQkvKiBEUk9QIE5PVCBOVUxMICovCisJCQlyZXQg PSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgRE9NQUlOICV7aWRlbnRpdHl9RCBEUk9QIE5PVCBOVUxM IiwgMiwKKwkJCQkJCQkJCSAgInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZHJvcCBub3QgbnVsbCIs CisJCQkJCQkJCQkgICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCQkgIG5ld19v Ymp0cmVlX2Zvcl9xdWFsbmFtZShkb21Gb3JtLT50eXBuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkJ CQkgICBOYW1lU3RyKGRvbUZvcm0tPnR5cG5hbWUpKSk7CisJCQlicmVhazsKKwkJY2FzZSAnTyc6 CisJCQkvKiBTRVQgTk9UIE5VTEwgKi8KKwkJCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBE T01BSU4gJXtpZGVudGl0eX1EIFNFVCBOT1QgTlVMTCIsIDIsCisJCQkJCQkJCSAidHlwZSIsIE9i alR5cGVTdHJpbmcsICJzZXQgbm90IG51bGwiLAorCQkJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlw ZU9iamVjdCwKKwkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShkb21Gb3JtLT50eXBu YW1lc3BhY2UsCisJCQkJCQkJCQkJCQkJCSAgTmFtZVN0cihkb21Gb3JtLT50eXBuYW1lKSkpOwor CQkJYnJlYWs7CisJCWNhc2UgJ0MnOgorCQkJLyoKKwkJCSAqIEFERCBDT05TVFJBSU5ULiAgT25s eSBDSEVDSyBjb25zdHJhaW50cyBhcmUgc3VwcG9ydGVkIGJ5CisJCQkgKiBkb21haW5zCisJCQkg Ki8KKwkJCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBET01BSU4gJXtpZGVudGl0eX1EIEFE RCBDT05TVFJBSU5UICV7Y29uc3RyYWludF9uYW1lfXMgJXtkZWZpbml0aW9ufXMiLCA0LAorCQkJ CQkJCQkgInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiYWRkIGNvbnN0cmFpbnQiLAorCQkJCQkJCQkg ImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFs bmFtZShkb21Gb3JtLT50eXBuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkJCSAgTmFtZVN0cihkb21G b3JtLT50eXBuYW1lKSksCisJCQkJCQkJCSAiY29uc3RyYWludF9uYW1lIiwgT2JqVHlwZVN0cmlu ZywKKwkJCQkJCQkJIGdldF9jb25zdHJhaW50X25hbWUoY29uc3RyYWludEFkZHIub2JqZWN0SWQp LAorCQkJCQkJCQkgImRlZmluaXRpb24iLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkgcGdfZ2V0 X2NvbnN0cmFpbnRkZWZfc3RyaW5nKGNvbnN0cmFpbnRBZGRyLm9iamVjdElkKSk7CisJCQlicmVh azsKKwkJY2FzZSAnVic6CisJCQkvKiBWQUxJREFURSBDT05TVFJBSU5UICovCisJCQkvKgorCQkJ ICogUHJvY2VzcyBzdWJ0eXBlPXNwZWNpZmljIG9wdGlvbnMuIFZhbGlkYXRpb24gYSBjb25zdHJh aW50CisJCQkgKiByZXF1aXJlcyBpdHMgbmFtZS4KKwkJCSAqLworCQkJcmV0ID0gbmV3X29ianRy ZWVfVkEoIkFMVEVSIERPTUFJTiAle2lkZW50aXR5fUQgVkFMSURBVEUgQ09OU1RSQUlOVCAle2Nv bnN0cmFpbnRfbmFtZX1zIiwgMywKKwkJCQkJCQkJICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgInZh bGlkYXRlIGNvbnN0cmFpbnQiLAorCQkJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwK KwkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShkb21Gb3JtLT50eXBuYW1lc3BhY2Us CisJCQkJCQkJCQkJCQkJCSAgTmFtZVN0cihkb21Gb3JtLT50eXBuYW1lKSksCisJCQkJCQkJCSAi Y29uc3RyYWludF9uYW1lIiwgT2JqVHlwZVN0cmluZywgbm9kZS0+bmFtZSk7CisJCQlicmVhazsK KwkJY2FzZSAnWCc6CisJCQl7CisJCQkJT2JqVHJlZSAgICAqdG1wX29iajsKKworCQkJCS8qIERS T1AgQ09OU1RSQUlOVCAqLworCQkJCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBET01BSU4g JXtpZGVudGl0eX1EIERST1AgQ09OU1RSQUlOVCBJRiBFWElTVFMgJXtjb25zdHJhaW50X25hbWV9 cyIsIDMsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZHJvcCBjb25zdHJhaW50 IiwKKwkJCQkJCQkJCQkiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJCW5ld19v Ymp0cmVlX2Zvcl9xdWFsbmFtZShkb21Gb3JtLT50eXBuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkJ CQkJTmFtZVN0cihkb21Gb3JtLT50eXBuYW1lKSksCisJCQkJCQkJCQkJImNvbnN0cmFpbnRfbmFt ZSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPm5hbWUpOworCisJCQkJdG1wX29iaiA9IG5ld19vYmp0 cmVlX1ZBKCJDQVNDQURFIiwgMSwKKwkJCQkJCQkJCQkicHJlc2VudCIsIE9ialR5cGVCb29sLCBu b2RlLT5iZWhhdmlvciA9PSBEUk9QX0NBU0NBREUpOworCisJCQkJYXBwZW5kX29iamVjdF9vYmpl Y3QocmV0LCAiJXtjYXNjYWRlfXMiLCB0bXBfb2JqKTsKKwkJCX0KKwkJCWJyZWFrOworCQlkZWZh dWx0OgorCQkJZWxvZyhFUlJPUiwgImludmFsaWQgc3VidHlwZSAlYyIsIG5vZGUtPnN1YnR5cGUp OworCX0KKworCS8qIERvbmUgKi8KKwlSZWxlYXNlU3lzQ2FjaGUoZG9tVHVwKTsKKworCXJldHVy biByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ3JlYXRlU3RhdHNTdG10LgorICoKKyAqIEdp dmVuIGEgc3RhdGlzdGljcyBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwg cmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4K KyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFIFNUQVRJU1RJQ1MgJXtpZl9ub3RfZXhp c3RzfXMgJXtpZGVudGl0eX1EIE9OICV7ZXhwcjosIH1zIEZST00gJXtzdGF0X3RhYmxlX2lkZW50 aXR5fUQKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9DcmVhdGVTdGF0aXN0aWNzU3Rt dChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlDcmVhdGVTdGF0c1N0bXQgKm5v ZGUgPSAoQ3JlYXRlU3RhdHNTdG10ICopIHBhcnNldHJlZTsKKwlGb3JtX3BnX3N0YXRpc3RpY19l eHQgc3RhdGZvcm07CisJT2JqVHJlZSAgICAqcmV0OworCUhlYXBUdXBsZQl0dXA7CisJRGF0dW0J CWRhdHVtOworCWJvb2wJCWlzbnVsbDsKKwlMaXN0CSAgICpzdGF0ZXhwcnMgPSBOSUw7CisKKwl0 dXAgPSBTZWFyY2hTeXNDYWNoZTEoU1RBVEVYVE9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJ ZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3Igc3RhdGlzdGljIHdpdGggT0lEICV1Iiwgb2JqZWN0SWQpOworCisJ c3RhdGZvcm0gPSAoRm9ybV9wZ19zdGF0aXN0aWNfZXh0KSBHRVRTVFJVQ1QodHVwKTsKKworCXJl dCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUgU1RBVElTVElDUyAle2lmX25vdF9leGlzdHN9cyAl e2lkZW50aXR5fUQiLCAyLAorCQkJCQkJICJpZl9ub3RfZXhpc3RzIiwgT2JqVHlwZVN0cmluZywK KwkJCQkJCSBub2RlLT5pZl9ub3RfZXhpc3RzID8gIklGIE5PVCBFWElTVFMiIDogIiIsCisJCQkJ CQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVh bG5hbWUoc3RhdGZvcm0tPnN0eG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCSAgTmFtZVN0cihzdGF0 Zm9ybS0+c3R4bmFtZSkpKTsKKworCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFNUQVRFWFRPSUQs IHR1cCwgQW51bV9wZ19zdGF0aXN0aWNfZXh0X3N0eGV4cHJzLAorCQkJCQkJCSZpc251bGwpOwor CWlmICghaXNudWxsKQorCXsKKwkJTGlzdENlbGwgICAqbGM7CisJCVJlbGF0aW9uCXN0YXRzcmVs OworCQlMaXN0CSAgICpjb250ZXh0OworCQlMaXN0CSAgICpleHBycyA9IE5JTDsKKwkJY2hhcgkg ICAqZXhwcnNTdHJpbmc7CisKKwkJc3RhdHNyZWwgPSByZWxhdGlvbl9vcGVuKHN0YXRmb3JtLT5z dHhyZWxpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJY29udGV4dCA9IGRlcGFyc2VfY29udGV4dF9m b3IoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoc3RhdHNyZWwpLAorCQkJCQkJCQkJICBSZWxhdGlv bkdldFJlbGlkKHN0YXRzcmVsKSk7CisKKwkJZXhwcnNTdHJpbmcgPSBUZXh0RGF0dW1HZXRDU3Ry aW5nKGRhdHVtKTsKKwkJZXhwcnMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUoZXhwcnNTdHJpbmcp OworCisJCWZvcmVhY2gobGMsIGV4cHJzKQorCQl7CisJCQlOb2RlCSAgICpleHByID0gKE5vZGUg KikgbGZpcnN0KGxjKTsKKwkJCWNoYXIJICAgKnN0YXRleHByOworCisJCQlzdGF0ZXhwciA9IGRl cGFyc2VfZXhwcmVzc2lvbihleHByLCBjb250ZXh0LCBmYWxzZSwgZmFsc2UpOworCQkJc3RhdGV4 cHJzID0gbGFwcGVuZChzdGF0ZXhwcnMsIG5ld19zdHJpbmdfb2JqZWN0KHN0YXRleHByKSk7CisJ CX0KKworCQlhcHBlbmRfYXJyYXlfb2JqZWN0KHJldCwgIk9OICV7ZXhwcjosIH1zIiwgc3RhdGV4 cHJzKTsKKwkJcGZyZWUoZXhwcnNTdHJpbmcpOworCQlyZWxhdGlvbl9jbG9zZShzdGF0c3JlbCwg QWNjZXNzU2hhcmVMb2NrKTsKKwl9CisKKwlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihTVEFURVhU T0lELCB0dXAsIEFudW1fcGdfc3RhdGlzdGljX2V4dF9zdHhrZXlzLAorCQkJCQkJCSZpc251bGwp OworCWlmICghaXNudWxsKQorCXsKKwkJaW50CQkJa2V5bm87CisJCWNoYXIJICAgKmF0dG5hbWU7 CisJCUxpc3QJICAgKnN0YXRjb2xzID0gTklMOworCQlpbnQydmVjdG9yICppbmRvcHRpb247CisK KwkJaW5kb3B0aW9uID0gKGludDJ2ZWN0b3IgKikgRGF0dW1HZXRQb2ludGVyKGRhdHVtKTsKKwor CQlmb3IgKGtleW5vID0gMDsga2V5bm8gPCBpbmRvcHRpb24tPmRpbTE7IGtleW5vKyspCisJCXsK KwkJCWF0dG5hbWUgPSBnZXRfYXR0bmFtZShzdGF0Zm9ybS0+c3R4cmVsaWQsIGluZG9wdGlvbi0+ dmFsdWVzW2tleW5vXSwKKwkJCQkJCQkJICBmYWxzZSk7CisJCQlzdGF0Y29scyA9IGxhcHBlbmQo c3RhdGNvbHMsIG5ld19zdHJpbmdfb2JqZWN0KGF0dG5hbWUpKTsKKwkJfQorCisJCWlmIChpbmRv cHRpb24tPmRpbTEpCisJCXsKKwkJCS8qIEFwcGVuZCBhICcsJyBpZiBzdGF0ZXhwcnMgaXMgcHJl c2VudCBlbHNlIGFwcGVuZCAnT04nICovCisJCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIl e2NvbW1hfXMiLCAiY29tbWEiLAorCQkJCQkJCQkgc3RhdGV4cHJzID8gIiwiIDogIk9OIik7CisJ CQlhcHBlbmRfYXJyYXlfb2JqZWN0KHJldCwgIiV7Y29sczosIH1zIiwgc3RhdGNvbHMpOworCQl9 CisJfQorCisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiRlJPTSAle3N0YXRfdGFibGVfaWRl bnRpdHl9RCIsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKGdldF9yZWxfbmFtZXNw YWNlKHN0YXRmb3JtLT5zdHhyZWxpZCksCisJCQkJCQkJCQkJCQkgIGdldF9yZWxfbmFtZShzdGF0 Zm9ybS0+c3R4cmVsaWQpKSk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKworCXJldHVybiBy ZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGFuIENyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10IChDUkVB VEUgU0VSVkVSKQorICoKKyAqIEdpdmVuIGEgc2VydmVyIE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUg dGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVzZW50aW5nIHRoZSBh bHRlciBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgU0VSVkVSICV7 aWRlbnRpdHl9SSAle3R5cGV9cyAle3ZlcnNpb259cyBGT1JFSUdOIERBVEEgV1JBUFBFUiAle2Zk d31JCisgKiAle2dlbmVyaWNfb3B0aW9uc31zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFy c2VfQ3JlYXRlRm9yZWlnblNlcnZlclN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUp Cit7CisJQ3JlYXRlRm9yZWlnblNlcnZlclN0bXQgKm5vZGUgPSAoQ3JlYXRlRm9yZWlnblNlcnZl clN0bXQgKikgcGFyc2V0cmVlOworCU9ialRyZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXA7 CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIFNFUlZFUiAle2lkZW50aXR5fUkiLCAx LAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPnNlcnZlcm5hbWUpOwor CisJLyogQWRkIGEgVFlQRSBjbGF1c2UsIGlmIGFueSAqLworCXRtcCA9IG5ld19vYmp0cmVlKCJU WVBFIik7CisJaWYgKG5vZGUtPnNlcnZlcnR5cGUpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRt cCwgIiV7dHlwZX1MIiwgInR5cGUiLCBub2RlLT5zZXJ2ZXJ0eXBlKTsKKwllbHNlCisJCWFwcGVu ZF9ub3RfcHJlc2VudCh0bXApOworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7dHlwZX1z IiwgdG1wKTsKKworCS8qIEFkZCBhIFZFUlNJT04gY2xhdXNlLCBpZiBhbnkgKi8KKwl0bXAgPSBu ZXdfb2JqdHJlZSgiVkVSU0lPTiIpOworCWlmIChub2RlLT52ZXJzaW9uKQorCQlhcHBlbmRfc3Ry aW5nX29iamVjdCh0bXAsICIle3ZlcnNpb259TCIsICJ2ZXJzaW9uIiwgbm9kZS0+dmVyc2lvbik7 CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwlhcHBlbmRfb2JqZWN0X29iamVj dChyZXQsICIle3ZlcnNpb259cyIsIHRtcCk7CisKKwlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQs ICJGT1JFSUdOIERBVEEgV1JBUFBFUiAle2Zkd31JIiwgImZkdyIsCisJCQkJCQkgbm9kZS0+ZmR3 bmFtZSk7CisKKwkvKiBBZGQgYW4gT1BUSU9OUyBjbGF1c2UsIGlmIGFueSAqLworCWFwcGVuZF9v YmplY3Rfb2JqZWN0KHJldCwgIiV7Z2VuZXJpY19vcHRpb25zfXMiLAorCQkJCQkJIGRlcGFyc2Vf RmR3T3B0aW9ucyhub2RlLT5vcHRpb25zLCBOVUxMLCBmYWxzZSkpOworCisJcmV0dXJuIHJldDsK K30KKworLyoKKyAqIERlcGFyc2UgYW4gQWx0ZXJGb3JlaWduU2VydmVyU3RtdCAoQUxURVIgU0VS VkVSKQorICoKKyAqIEdpdmVuIGEgc2VydmVyIE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBj cmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVzZW50aW5nIHRoZSBhbHRlciBj b21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRFUiBTRVJWRVIgJXtpZGVudGl0 eX1JICV7dmVyc2lvbn1zICV7Z2VuZXJpY19vcHRpb25zfXMKKyAqLworc3RhdGljIE9ialRyZWUg KgorZGVwYXJzZV9BbHRlckZvcmVpZ25TZXJ2ZXJTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFy c2V0cmVlKQoreworCUFsdGVyRm9yZWlnblNlcnZlclN0bXQgKm5vZGUgPSAoQWx0ZXJGb3JlaWdu U2VydmVyU3RtdCAqKSBwYXJzZXRyZWU7CisJT2JqVHJlZSAgICAqdG1wOworCisJLyogQWRkIGEg VkVSU0lPTiBjbGF1c2UsIGlmIGFueSAqLworCXRtcCA9IG5ld19vYmp0cmVlKCJWRVJTSU9OIik7 CisJaWYgKG5vZGUtPmhhc192ZXJzaW9uICYmIG5vZGUtPnZlcnNpb24pCisJCWFwcGVuZF9zdHJp bmdfb2JqZWN0KHRtcCwgIiV7dmVyc2lvbn1MIiwgInZlcnNpb24iLCBub2RlLT52ZXJzaW9uKTsK KwllbHNlIGlmIChub2RlLT5oYXNfdmVyc2lvbikKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1w LCAidmVyc2lvbiIsICJ2ZXJzaW9uIiwgIk5VTEwiKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJl c2VudCh0bXApOworCisJcmV0dXJuIG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBTRVJWRVIgJXtpZGVu dGl0eX1JICV7dmVyc2lvbn1zICV7Z2VuZXJpY19vcHRpb25zfXMiLCAzLAorCQkJCQkJICAiaWRl bnRpdHkiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5zZXJ2ZXJuYW1lLAorCQkJCQkJICAidmVyc2lv biIsIE9ialR5cGVPYmplY3QsIHRtcCwKKwkJCQkJCSAgImdlbmVyaWNfb3B0aW9ucyIsIE9ialR5 cGVPYmplY3QsCisJCQkJCQkgIGRlcGFyc2VfRmR3T3B0aW9ucyhub2RlLT5vcHRpb25zLCBOVUxM LCBmYWxzZSkpOworfQorCisvKgorICogRGVwYXJzZSBhIENyZWF0ZVBMYW5nU3RtdC4KKyAqCisg KiBHaXZlbiBhIGxhbmd1YWdlIE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0 LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVzZW50aW5nIHRoZSBjcmVhdGlvbiBjb21tYW5k LgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgJXtvcl9yZXBsYWNlfXMgJXt0cnVz dGVkfXMgTEFOR1VBR0UgJXtpZGVudGl0eX1zIEhBTkRMRVIgJXtoYW5kbGVyfUQKKyAqICV7aW5s aW5lfXMgJXt2YWxpZGF0b3J9cworICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NyZWF0 ZUxhbmdTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUNyZWF0ZVBMYW5n U3RtdCAqbm9kZSA9IChDcmVhdGVQTGFuZ1N0bXQgKikgcGFyc2V0cmVlOworCU9ialRyZWUgICAg KnJldDsKKwlPYmpUcmVlICAgICp0bXA7CisJSGVhcFR1cGxlCWxhbmdUdXA7CisJRm9ybV9wZ19s YW5ndWFnZSBsYW5nRm9ybTsKKworCWxhbmdUdXAgPSBTZWFyY2hTeXNDYWNoZTEoTEFOR09JRCwK KwkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlz VmFsaWQobGFuZ1R1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBs YW5ndWFnZSB3aXRoIE9JRCAldSIsIG9iamVjdElkKTsKKwlsYW5nRm9ybSA9IChGb3JtX3BnX2xh bmd1YWdlKSBHRVRTVFJVQ1QobGFuZ1R1cCk7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JF QVRFICV7b3JfcmVwbGFjZX1zICV7dHJ1c3RlZH1zIExBTkdVQUdFICV7aWRlbnRpdHl9cyIsIDMs CisJCQkJCQkgIm9yX3JlcGxhY2UiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIG5vZGUtPnJlcGxh Y2UgPyAiT1IgUkVQTEFDRSIgOiAiIiwKKwkJCQkJCSAidHJ1c3RlZCIsIE9ialR5cGVTdHJpbmcs CisJCQkJCQkgbGFuZ0Zvcm0tPmxhbnBsdHJ1c3RlZCA/ICJUUlVTVEVEIiA6ICIiLAorCQkJCQkJ ICJpZGVudGl0eSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPnBsbmFtZSk7CisKKwlpZiAobm9kZS0+ cGxoYW5kbGVyICE9IE5JTCkKKwl7CisJCS8qIEFkZCB0aGUgSEFORExFUiBjbGF1c2UgKi8KKwkJ YXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiSEFORExFUiAle2hhbmRsZXJ9RCIsCisJCQkJCQkJ IG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJ CQkJCQkJCQkgbGFuZ0Zvcm0tPmxhbnBsY2FsbGZvaWQpKTsKKworCQkvKiBBZGQgdGhlIElOTElO RSBjbGF1c2UsIGlmIGFueSAqLworCQl0bXAgPSBuZXdfb2JqdHJlZSgiSU5MSU5FIik7CisJCWlm IChPaWRJc1ZhbGlkKGxhbmdGb3JtLT5sYW5pbmxpbmUpKQorCQl7CisJCQlhcHBlbmRfb2JqZWN0 X29iamVjdCh0bXAsICIle2hhbmRsZXJfbmFtZX1EIiwKKwkJCQkJCQkJIG5ld19vYmp0cmVlX2Zv cl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkJIGxhbmdG b3JtLT5sYW5pbmxpbmUpKTsKKwkJfQorCQllbHNlCisJCQlhcHBlbmRfbm90X3ByZXNlbnQodG1w KTsKKwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtpbmxpbmV9cyIsIHRtcCk7CisKKwkJ LyogQWRkIHRoZSBWQUxJREFUT1IgY2xhdXNlLCBpZiBhbnkgKi8KKwkJdG1wID0gbmV3X29ianRy ZWUoIlZBTElEQVRPUiIpOworCQlpZiAoT2lkSXNWYWxpZChsYW5nRm9ybS0+bGFudmFsaWRhdG9y KSkKKwkJeworCQkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wLCAiJXtoYW5kbGVyX25hbWV9RCIs CisJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25J ZCwKKwkJCQkJCQkJCQkJCQkJCSBsYW5nRm9ybS0+bGFudmFsaWRhdG9yKSk7CisJCX0KKwkJZWxz ZQorCQkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJl dCwgIiV7dmFsaWRhdG9yfXMiLCB0bXApOworCX0KKworCVJlbGVhc2VTeXNDYWNoZShsYW5nVHVw KTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ3JlYXRlRm9yZWlnblRh YmxlU3RtdCAoQ1JFQVRFIEZPUkVJR04gVEFCTEUpLgorICoKKyAqIEdpdmVuIGEgdGFibGUgT0lE IGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbiBPYmpUcmVlCisg KiByZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9uIGNvbW1hbmQuCisgKgorICogQ1JFQVRFIEZPUkVJ R04gVEFCTEUgJXtpZl9ub3RfZXhpc3RzfXMgJXtpZGVudGl0eX1ECisgKiBbKCV7dGFibGVfZWxl bWVudHM6LCB9cykgJXtpbmhlcml0c31zCisgKiAgfCBQQVJUSVRJT04gT0YgJXtwYXJlbnRfaWRl bnRpdHl9RCAoJXt0eXBlZF90YWJsZV9lbGVtZW50czosIH1zKSAle3BhcnRpdGlvbl9ib3VuZH1z XQorICogU0VSVkVSICV7c2VydmVyfUkgJXtnZW5lcmljX29wdGlvbnN9cworICovCitzdGF0aWMg T2JqVHJlZSAqCitkZXBhcnNlX0NyZWF0ZUZvcmVpZ25UYWJsZVN0bXQoT2lkIG9iamVjdElkLCBO b2RlICpwYXJzZXRyZWUpCit7CisJQ3JlYXRlRm9yZWlnblRhYmxlU3RtdCAqc3RtdCA9IChDcmVh dGVGb3JlaWduVGFibGVTdG10ICopIHBhcnNldHJlZTsKKwlSZWxhdGlvbglyZWxhdGlvbiA9IHJl bGF0aW9uX29wZW4ob2JqZWN0SWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJTGlzdAkgICAqZHBjb250 ZXh0OworCU9ialRyZWUgICAgKmNyZWF0ZVN0bXQ7CisJT2JqVHJlZSAgICAqdG1wb2JqOworCUxp c3QJICAgKnRhYmxlZWx0cyA9IE5JTDsKKworCWNyZWF0ZVN0bXQgPSBuZXdfb2JqdHJlZSgiQ1JF QVRFIEZPUkVJR04gVEFCTEUiKTsKKworCWFwcGVuZF9zdHJpbmdfb2JqZWN0KGNyZWF0ZVN0bXQs ICIle2lmX25vdF9leGlzdHN9cyIsICJpZl9ub3RfZXhpc3RzIiwKKwkJCQkJCSBzdG10LT5iYXNl LmlmX25vdF9leGlzdHMgPyAiSUYgTk9UIEVYSVNUUyIgOiAiIik7CisKKwl0bXBvYmogPSBuZXdf b2JqdHJlZV9mb3JfcXVhbG5hbWUocmVsYXRpb24tPnJkX3JlbC0+cmVsbmFtZXNwYWNlLAorCQkJ CQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpOworCWFwcGVuZF9vYmpl Y3Rfb2JqZWN0KGNyZWF0ZVN0bXQsICIle2lkZW50aXR5fUQiLCB0bXBvYmopOworCisJZHBjb250 ZXh0ID0gZGVwYXJzZV9jb250ZXh0X2ZvcihSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlv biksCisJCQkJCQkJCQlvYmplY3RJZCk7CisJaWYgKHN0bXQtPmJhc2UucGFydGJvdW5kKQorCXsK KwkJLyogUGFydGl0aW9uZWQgdGFibGUgKi8KKwkJTGlzdAkgICAqcGFyZW50czsKKwkJT2JqRWxl bSAgICAqZWxlbTsKKworCQlwYXJlbnRzID0gZGVwYXJzZV9JbmhSZWxhdGlvbnMob2JqZWN0SWQp OworCQllbGVtID0gKE9iakVsZW0gKikgbGluaXRpYWwocGFyZW50cyk7CisKKwkJQXNzZXJ0KGxp c3RfbGVuZ3RoKHBhcmVudHMpID09IDEpOworCisJCWFwcGVuZF9mb3JtYXRfc3RyaW5nKGNyZWF0 ZVN0bXQsICJQQVJUSVRJT04gT0YiKTsKKworCQlhcHBlbmRfb2JqZWN0X29iamVjdChjcmVhdGVT dG10LCAiJXtwYXJlbnRfaWRlbnRpdHl9RCIsCisJCQkJCQkJCQkJIGVsZW0tPnZhbHVlLm9iamVj dCk7CisKKwkJdGFibGVlbHRzID0gZGVwYXJzZV9UYWJsZUVsZW1lbnRzKHJlbGF0aW9uLCBzdG10 LT5iYXNlLnRhYmxlRWx0cywgZHBjb250ZXh0LAorCQkJCQkJCQkJCSAgdHJ1ZSwgLyogdHlwZWQg dGFibGUgKi8KKwkJCQkJCQkJCQkgIGZhbHNlKTsJLyogbm90IGNvbXBvc2l0ZSAqLworCQl0YWJs ZWVsdHMgPSBvYnRhaW5Db25zdHJhaW50cyh0YWJsZWVsdHMsIG9iamVjdElkLCBJbnZhbGlkT2lk LAorCQkJCQkJCQkJICBDb25zdHJPYmpGb3JlaWduVGFibGUpOworCisJCXRtcG9iaiA9IG5ld19v Ymp0cmVlKCIiKTsKKwkJaWYgKHRhYmxlZWx0cykKKwkJCWFwcGVuZF9hcnJheV9vYmplY3QodG1w b2JqLCAiKCV7ZWxlbWVudHM6LCB9cykiLCB0YWJsZWVsdHMpOworCQllbHNlCisJCQlhcHBlbmRf bm90X3ByZXNlbnQodG1wb2JqKTsKKworCQlhcHBlbmRfb2JqZWN0X29iamVjdChjcmVhdGVTdG10 LCAiJXt0eXBlZF90YWJsZV9lbGVtZW50c31zIiwgdG1wb2JqKTsKKworCQkvKgorCQkgKiBBZGQg dGhlIHBhcnRpdGlvbl9ib3VuZF9zcGVjLCBpLmUuIHRoZSBGT1IgVkFMVUVTIGNsYXVzZS4KKwkJ ICogR2V0IHBnX2NsYXNzLnJlbHBhcnRib3VuZC4gV2UgY2Fubm90IHVzZSBwYXJ0Ym91bmQgaW4g dGhlIHBhcnNldHJlZQorCQkgKiBkaXJlY3RseSBhcyBpdCdzIHRoZSBvcmlnaW5hbCBwYXJ0Ym91 bmQgZXhwcmVzc2lvbiB3aGljaCBoYXZlbid0CisJCSAqIGJlZW4gdHJhbnNmb3JtZWQuCisJCSAq LworCQlhcHBlbmRfc3RyaW5nX29iamVjdChjcmVhdGVTdG10LCAiJXtwYXJ0aXRpb25fYm91bmR9 cyIsICJwYXJ0aXRpb25fYm91bmQiLAorCQkJCQkJCSBSZWxhdGlvbkdldFBhcnRpdGlvbkJvdW5k KG9iamVjdElkKSk7CisKKwkJLyogTm8gUEFSVElUSU9OIEJZIGNsYXVzZSBmb3IgQ1JFQVRFIEZP UkVJR04gVEFCTEUgKi8KKwl9CisJZWxzZQorCXsKKwkJdGFibGVlbHRzID0gZGVwYXJzZV9UYWJs ZUVsZW1lbnRzKHJlbGF0aW9uLCBzdG10LT5iYXNlLnRhYmxlRWx0cywgZHBjb250ZXh0LAorCQkJ CQkJCQkJCSAgZmFsc2UsCQkvKiBub3QgdHlwZWQgdGFibGUgKi8KKwkJCQkJCQkJCQkgIGZhbHNl KTsJLyogbm90IGNvbXBvc2l0ZSAqLworCQl0YWJsZWVsdHMgPSBvYnRhaW5Db25zdHJhaW50cyh0 YWJsZWVsdHMsIG9iamVjdElkLCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJICBDb25zdHJPYmpGb3Jl aWduVGFibGUpOworCisJCWlmICh0YWJsZWVsdHMpCisJCQlhcHBlbmRfYXJyYXlfb2JqZWN0KGNy ZWF0ZVN0bXQsICIoJXt0YWJsZV9lbGVtZW50czosIH1zKSIsIHRhYmxlZWx0cyk7CisJCWVsc2UK KwkJCWFwcGVuZF9mb3JtYXRfc3RyaW5nKGNyZWF0ZVN0bXQsICIoKSIpOworCisJCS8qCisJCSog QWRkIGluaGVyaXRhbmNlIHNwZWNpZmljYXRpb24uICBXZSBjYW5ub3Qgc2ltcGx5IHNjYW4gdGhl IGxpc3Qgb2YKKwkJKiBwYXJlbnRzIGZyb20gdGhlIHBhcnNlciBub2RlLCBiZWNhdXNlIHRoYXQg bWF5IGxhY2sgdGhlIGFjdHVhbAorCQkqIHF1YWxpZmllZCBuYW1lcyBvZiB0aGUgcGFyZW50IHJl bGF0aW9ucy4gIFJhdGhlciB0aGFuIHRyeWluZyB0bworCQkqIHJlLXJlc29sdmUgdGhlbSBmcm9t IHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgcGFyc2Ugbm9kZSwgaXQgc2VlbXMKKwkJKiBtb3JlIGFj Y3VyYXRlIGFuZCBjb252ZW5pZW50IHRvIGdyYWIgaXQgZnJvbSBwZ19pbmhlcml0cy4KKwkJKi8K KwkJdG1wb2JqID0gbmV3X29ianRyZWUoIklOSEVSSVRTIik7CisJCWlmIChzdG10LT5iYXNlLmlu aFJlbGF0aW9ucyAhPSBOSUwpCisJCQlhcHBlbmRfYXJyYXlfb2JqZWN0KHRtcG9iaiwgIigle3Bh cmVudHM6LCB9RCkiLCBkZXBhcnNlX0luaFJlbGF0aW9ucyhvYmplY3RJZCkpOworCQllbHNlCisJ CXsKKwkJCWFwcGVuZF9udWxsX29iamVjdCh0bXBvYmosICIoJXtwYXJlbnRzOiwgfUQpIik7CisJ CQlhcHBlbmRfbm90X3ByZXNlbnQodG1wb2JqKTsKKwkJfQorCQlhcHBlbmRfb2JqZWN0X29iamVj dChjcmVhdGVTdG10LCAiJXtpbmhlcml0c31zIiwgdG1wb2JqKTsKKwl9CisKKwlhcHBlbmRfc3Ry aW5nX29iamVjdChjcmVhdGVTdG10LCAiU0VSVkVSICV7c2VydmVyfUkiLCAic2VydmVyIiwgc3Rt dC0+c2VydmVybmFtZSk7CisKKwkvKiBhZGQgYW4gT1BUSU9OUyBjbGF1c2UsIGlmIGFueSAqLwor CWFwcGVuZF9vYmplY3Rfb2JqZWN0KGNyZWF0ZVN0bXQsICIle2dlbmVyaWNfb3B0aW9uc31zIiwK KwkJCQkJCSBkZXBhcnNlX0Zkd09wdGlvbnMoc3RtdC0+b3B0aW9ucywgTlVMTCwgZmFsc2UpKTsK KworCXJlbGF0aW9uX2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJu IGNyZWF0ZVN0bXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgRGVmaW5lU3RtdC4KKyAqLworc3Rh dGljIE9ialRyZWUgKgorZGVwYXJzZV9EZWZpbmVTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFy c2V0cmVlLCBPYmplY3RBZGRyZXNzIHNlY29uZGFyeU9iaikKK3sKKwlEZWZpbmVTdG10ICpkZWZp bmUgPSAoRGVmaW5lU3RtdCAqKSBwYXJzZXRyZWU7CisKKwlzd2l0Y2ggKGRlZmluZS0+a2luZCkK Kwl7CisJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKKwkJCXJldHVybiBkZXBhcnNlX0RlZmluZVN0 bXRfQWdncmVnYXRlKG9iamVjdElkLCBkZWZpbmUpOworCisJCWNhc2UgT0JKRUNUX0NPTExBVElP TjoKKwkJCXJldHVybiBkZXBhcnNlX0RlZmluZVN0bXRfQ29sbGF0aW9uKG9iamVjdElkLCBkZWZp bmUsIHNlY29uZGFyeU9iaik7CisKKwkJY2FzZSBPQkpFQ1RfT1BFUkFUT1I6CisJCQlyZXR1cm4g ZGVwYXJzZV9EZWZpbmVTdG10X09wZXJhdG9yKG9iamVjdElkLCBkZWZpbmUpOworCisJCWNhc2Ug T0JKRUNUX1RTQ09ORklHVVJBVElPTjoKKwkJCXJldHVybiBkZXBhcnNlX0RlZmluZVN0bXRfVFND b25maWcob2JqZWN0SWQsIGRlZmluZSwgc2Vjb25kYXJ5T2JqKTsKKworCQljYXNlIE9CSkVDVF9U U0RJQ1RJT05BUlk6CisJCQlyZXR1cm4gZGVwYXJzZV9EZWZpbmVTdG10X1RTRGljdGlvbmFyeShv YmplY3RJZCwgZGVmaW5lKTsKKworCQljYXNlIE9CSkVDVF9UU1BBUlNFUjoKKwkJCXJldHVybiBk ZXBhcnNlX0RlZmluZVN0bXRfVFNQYXJzZXIob2JqZWN0SWQsIGRlZmluZSk7CisKKwkJY2FzZSBP QkpFQ1RfVFNURU1QTEFURToKKwkJCXJldHVybiBkZXBhcnNlX0RlZmluZVN0bXRfVFNUZW1wbGF0 ZShvYmplY3RJZCwgZGVmaW5lKTsKKworCQljYXNlIE9CSkVDVF9UWVBFOgorCQkJcmV0dXJuIGRl cGFyc2VfRGVmaW5lU3RtdF9UeXBlKG9iamVjdElkLCBkZWZpbmUpOworCisJCWRlZmF1bHQ6CisJ CQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgb2JqZWN0IGtpbmQ6ICVkIiwgZGVmaW5lLT5raW5k KTsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIEZvcm0gYW4gT2JqRWxlbSB0byBi ZSB1c2VkIGFzIGEgc2luZ2xlIGFyZ3VtZW50IGluIGFuIGFnZ3JlZ2F0ZSBhcmd1bWVudAorICog bGlzdAorICovCitzdGF0aWMgT2JqRWxlbSAqCitmb3JtX2FnZ19hcmd1bWVudChpbnQgaWR4LCBj aGFyICptb2RlcywgY2hhciAqKm5hbWVzLCBPaWQgKnR5cGVzKQoreworCU9ialRyZWUJICAgKmFy ZzsKKworCWFyZyA9IG5ld19vYmp0cmVlKCIiKTsKKworCWFwcGVuZF9zdHJpbmdfb2JqZWN0KGFy ZywgIiV7bW9kZX1zIiwgIm1vZGUiLAorCQkJCQkJIChtb2RlcyAmJiBtb2Rlc1tpZHhdID09ICd2 JykgPyAiVkFSSUFESUMiIDogIiIpOworCWFwcGVuZF9zdHJpbmdfb2JqZWN0KGFyZywgIiV7bmFt ZX1zIiwgIm5hbWUiLCBuYW1lcyA/IG5hbWVzW2lkeF0gOiAiIik7CisJYXBwZW5kX29iamVjdF9v YmplY3QoYXJnLCAiJXt0eXBlfVQiLAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKHR5cGVz W2lkeF0sIC0xKSk7CisKKwlyZXR1cm4gbmV3X29iamVjdF9vYmplY3QoYXJnKTsKK30KKworLyoK KyAqIERlcGFyc2UgYSBEZWZpbmVTdG10IChDUkVBVEUgQUdHUkVHQVRFKQorICoKKyAqIEdpdmVu IGEgYWdncmVnYXRlIE9JRCwgcmV0dXJuIGFuIE9ialRyZWUgcmVwcmVzZW50aW5nIHRoZSBDUkVB VEUgY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFICV7b3JfcmVwbGFj ZX1zIEFHR1JFR0FURSAle2lkZW50aXR5fUQoJXt0eXBlc31zKSAoJXtlbGVtczosIH1zKQorICov CitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0RlZmluZVN0bXRfQWdncmVnYXRlKE9pZCBvYmpl Y3RJZCwgRGVmaW5lU3RtdCAqZGVmaW5lKQoreworCUhlYXBUdXBsZSAgIGFnZ1R1cDsKKwlIZWFw VHVwbGUgICBwcm9jVHVwOworCU9ialRyZWUJICAgKnN0bXQ7CisJT2JqVHJlZQkgICAqdG1wOwor CUxpc3QJICAgKmxpc3Q7CisJRGF0dW0JCWluaXR2YWw7CisJYm9vbAkJaXNudWxsOworCUZvcm1f cGdfYWdncmVnYXRlIGFnZzsKKwlGb3JtX3BnX3Byb2MgcHJvYzsKKwlGb3JtX3BnX29wZXJhdG9y IG9wOworCUhlYXBUdXBsZQl0dXA7CisKKwlhZ2dUdXAgPSBTZWFyY2hTeXNDYWNoZTEoQUdHRk5P SUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo YWdnVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGFnZ3JlZ2F0 ZSB3aXRoIE9JRCAldSIsIG9iamVjdElkKTsKKwlhZ2cgPSAoRm9ybV9wZ19hZ2dyZWdhdGUpIEdF VFNUUlVDVChhZ2dUdXApOworCisJcHJvY1R1cCA9IFNlYXJjaFN5c0NhY2hlMShQUk9DT0lELCBP YmplY3RJZEdldERhdHVtKGFnZy0+YWdnZm5vaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo cHJvY1R1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBwcm9jZWR1 cmUgd2l0aCBPSUQgJXUiLAorCQkJIGFnZy0+YWdnZm5vaWQpOworCXByb2MgPSAoRm9ybV9wZ19w cm9jKSBHRVRTVFJVQ1QocHJvY1R1cCk7CisKKwlzdG10ID0gbmV3X29ianRyZWVfVkEoIkNSRUFU RSAle29yX3JlcGxhY2V9cyBBR0dSRUdBVEUiLCAxLAorCQkJCQkJICJvcl9yZXBsYWNlIiwgT2Jq VHlwZVN0cmluZywgZGVmaW5lLT5yZXBsYWNlID8gIk9SIFJFUExBQ0UiIDogIiIpOworCisJYXBw ZW5kX29iamVjdF9vYmplY3Qoc3RtdCwgIiV7aWRlbnRpdHl9RCIsCisJCQkJCQkgbmV3X29ianRy ZWVfZm9yX3F1YWxuYW1lKHByb2MtPnByb25hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCSAgTmFtZVN0 cihwcm9jLT5wcm9uYW1lKSkpOworCisJLyoKKwkgKiBBZGQgdGhlIGFyZ3VtZW50IGxpc3QuICBU aGVyZSBhcmUgdGhyZWUgY2FzZXMgdG8gY29uc2lkZXI6CisJICoKKwkgKiAxLiBubyBhcmd1bWVu dHMsIGluIHdoaWNoIGNhc2UgdGhlIHNpZ25hdHVyZSBpcyAoKikuCisJICoKKwkgKiAyLiBOb3Qg YW4gb3JkZXJlZC1zZXQgYWdncmVnYXRlLiAgSW4gdGhpcyBjYXNlIHRoZXJlJ3Mgb25lIG9yIG1v cmUKKwkgKiBhcmd1bWVudHMuCisJICoKKwkgKiAzLiBPcmRlcmVkLXNldCBhZ2dyZWdhdGVzLiBU aGVzZSBoYXZlIHplcm8gb3IgbW9yZSBkaXJlY3QgYXJndW1lbnRzLCBhbmQKKwkgKiBvbmUgb3Ig bW9yZSBvcmRlcmVkIGFyZ3VtZW50cy4KKwkgKgorCSAqIFdlIGRvbid0IG5lZWQgdG8gY29uc2lk ZXIgZGVmYXVsdCB2YWx1ZXMgb3IgdGFibGUgcGFyYW1ldGVycywgYW5kIHRoZQorCSAqIG9ubHkg bW9kZSB0aGF0IHdlIG5lZWQgdG8gY29uc2lkZXIgaXMgVkFSSUFESUMuCisJICovCisKKwlpZiAo cHJvYy0+cHJvbmFyZ3MgPT0gMCkKKwkJYXBwZW5kX3N0cmluZ19vYmplY3Qoc3RtdCwgIigle3R5 cGVzfXMpIiwgInR5cGVzIiwgIioiKTsKKwllbHNlIGlmICghQUdHS0lORF9JU19PUkRFUkVEX1NF VChhZ2ctPmFnZ2tpbmQpKQorCXsKKwkJaW50CQkJaTsKKwkJaW50CQkJbmFyZ3M7CisJCU9pZAkJ ICAgKnR5cGVzOworCQljaGFyCSAgICptb2RlczsKKwkJY2hhcgkgICoqbmFtZXM7CisKKwkJbmFy Z3MgPSBnZXRfZnVuY19hcmdfaW5mbyhwcm9jVHVwLCAmdHlwZXMsICZuYW1lcywgJm1vZGVzKTsK KworCQkvKiBvbmx5IGRpcmVjdCBhcmd1bWVudHMgaW4gdGhpcyBjYXNlICovCisJCWxpc3QgPSBO SUw7CisJCWZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKQorCQl7CisJCQlsaXN0ID0gbGFwcGVu ZChsaXN0LCBmb3JtX2FnZ19hcmd1bWVudChpLCBtb2RlcywgbmFtZXMsIHR5cGVzKSk7CisJCX0K KworCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiJXtkaXJlY3Q6LCB9cyIsIDEsCisJCQkJCQkJICJk aXJlY3QiLCBPYmpUeXBlQXJyYXksIGxpc3QpOworCQlhcHBlbmRfb2JqZWN0X29iamVjdChzdG10 LCAiKCV7dHlwZXN9cykiLCB0bXApOworCX0KKwllbHNlCisJeworCQlpbnQJCQlpOworCQlpbnQJ CQluYXJnczsKKwkJT2lkCQkgICAqdHlwZXM7CisJCWNoYXIJICAgKm1vZGVzOworCQljaGFyCSAg KipuYW1lczsKKworCQluYXJncyA9IGdldF9mdW5jX2FyZ19pbmZvKHByb2NUdXAsICZ0eXBlcywg Jm5hbWVzLCAmbW9kZXMpOworCisJCS8qIGRpcmVjdCBhcmd1bWVudHMgLi4uICovCisJCWxpc3Qg PSBOSUw7CisJCWZvciAoaSA9IDA7IGkgPCBhZ2ctPmFnZ251bWRpcmVjdGFyZ3M7IGkrKykKKwkJ eworCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgZm9ybV9hZ2dfYXJndW1lbnQoaSwgbW9kZXMsIG5h bWVzLCB0eXBlcykpOworCQl9CisJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCIle2RpcmVjdDosIH1z IiwgMSwKKwkJCQkJCQkgImRpcmVjdCIsIE9ialR5cGVBcnJheSwgbGlzdCk7CisKKwkJLyoKKwkJ ICogLi4uIGFuZCBhZ2dyZWdhdGVkIGFyZ3VtZW50cy4gIElmIHRoZSBsYXN0IGRpcmVjdCBhcmd1 bWVudCBpcworCQkgKiBWQVJJQURJQywgd2UgbmVlZCB0byByZXBlYXQgaXQgaGVyZSByYXRoZXIg dGhhbiBzZWFyY2hpbmcgZm9yIG1vcmUKKwkJICogYXJndW1lbnRzLiAgKFNlZSBhZ2dyX2FyZ3Mg cHJvZHVjdGlvbiBpbiBncmFtLnkgZm9yIGFuIGV4cGxhbmF0aW9uLikKKwkJICovCisJCWlmICht b2RlcyAmJiBtb2Rlc1thZ2ctPmFnZ251bWRpcmVjdGFyZ3MgLSAxXSA9PSAndicpCisJCXsKKwkJ CWxpc3QgPSBsaXN0X21ha2UxKGZvcm1fYWdnX2FyZ3VtZW50KGFnZy0+YWdnbnVtZGlyZWN0YXJn cyAtIDEsCisJCQkJCQkJCQkJCQltb2RlcywgbmFtZXMsIHR5cGVzKSk7CisJCX0KKwkJZWxzZQor CQl7CisJCQlsaXN0ID0gTklMOworCQkJZm9yIChpID0gYWdnLT5hZ2dudW1kaXJlY3RhcmdzOyBp IDwgbmFyZ3M7IGkrKykKKwkJCXsKKwkJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBmb3JtX2FnZ19h cmd1bWVudChpLCBtb2RlcywgbmFtZXMsIHR5cGVzKSk7CisJCQl9CisJCX0KKwkJYXBwZW5kX2Fy cmF5X29iamVjdCh0bXAsICJPUkRFUiBCWSAle2FnZ3JlZ2F0ZWQ6LCB9cyIsIGxpc3QpOworCisJ CWFwcGVuZF9vYmplY3Rfb2JqZWN0KHN0bXQsICIoJXt0eXBlc31zKSIsIHRtcCk7CisJfQorCisJ LyogQWRkIHRoZSBkZWZpbml0aW9uIGNsYXVzZSAqLworCWxpc3QgPSBOSUw7CisKKwkvKiBTRlVO QyAqLworCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJTRlVOQz0le3Byb2NlZHVyZX1EIiwgMSwKKwkJ CQkJCSAicHJvY2VkdXJlIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3Jf cXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwgYWdnLT5hZ2d0cmFuc2ZuKSk7CisJbGlz dCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBTVFlQRSAq LworCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJTVFlQRT0le3R5cGV9VCIsIDEsCisJCQkJCQkgInR5 cGUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKGFnZy0+YWdn dHJhbnN0eXBlLCAtMSkpOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0 KHRtcCkpOworCisJLyogU1NQQUNFICovCisJdG1wID0gbmV3X29ianRyZWUoIlNTUEFDRT0iKTsK KwlpZiAoYWdnLT5hZ2d0cmFuc3NwYWNlICE9IDApCisJCWFwcGVuZF9pbnRfb2JqZWN0KHRtcCwi JXtzcGFjZX1uIiwgYWdnLT5hZ2d0cmFuc3NwYWNlKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJl c2VudCh0bXApOworCisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1w KSk7CisKKwkvKiBGSU5BTEZVTkMgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZSgiRklOQUxGVU5DPSIp OworCWlmIChPaWRJc1ZhbGlkKGFnZy0+YWdnZmluYWxmbikpCisJCWFwcGVuZF9vYmplY3Rfb2Jq ZWN0KHRtcCwgIiV7cHJvY2VkdXJlfUQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5h bWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJIGFnZy0+YWdnZmluYWxm bikpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9IGxhcHBlbmQo bGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBGSU5BTEZVTkNfRVhUUkEgKi8K Kwl0bXAgPSBuZXdfb2JqdHJlZSgiRklOQUxGVU5DX0VYVFJBPSIpOworCWlmIChhZ2ctPmFnZ2Zp bmFsZXh0cmEpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcCwgIiV7dmFsdWV9cyIsICJ2YWx1 ZSIsICJ0cnVlIik7CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwlsaXN0ID0g bGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIElOSVRDT05EICov CisJaW5pdHZhbCA9IFN5c0NhY2hlR2V0QXR0cihBR0dGTk9JRCwgYWdnVHVwLAorCQkJCQkJCSAg QW51bV9wZ19hZ2dyZWdhdGVfYWdnaW5pdHZhbCwKKwkJCQkJCQkgICZpc251bGwpOworCXRtcCA9 IG5ld19vYmp0cmVlKCJJTklUQ09ORD0iKTsKKwlpZiAoIWlzbnVsbCkKKwkJYXBwZW5kX3N0cmlu Z19vYmplY3QodG1wLCIle2luaXR2YWx9TCIsICJpbml0dmFsIiwgVGV4dERhdHVtR2V0Q1N0cmlu Zyhpbml0dmFsKSk7CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwlsaXN0ID0g bGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIE1TRlVOQyAqLwor CXRtcCA9IG5ld19vYmp0cmVlKCJNU0ZVTkM9Iik7CisJaWYgKE9pZElzVmFsaWQoYWdnLT5hZ2dt dHJhbnNmbikpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcCwgIiV7cHJvY2VkdXJlfUQiLAor CQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwg YWdnLT5hZ2dtdHJhbnNmbikpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJ bGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBNU1RZ UEUgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZSgiTVNUWVBFPSIpOworCWlmIChPaWRJc1ZhbGlkKGFn Zy0+YWdnbXRyYW5zdHlwZSkpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcCwgIiV7dHlwZX1U IiwgbmV3X29ianRyZWVfZm9yX3R5cGUoYWdnLT5hZ2dtdHJhbnN0eXBlLCAtMSkpOworCWVsc2UK KwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29i amVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBNU1NQQUNFICovCisJdG1wID0gbmV3X29ianRyZWUo Ik1TU1BBQ0U9Iik7CisJaWYgKGFnZy0+YWdnbXRyYW5zc3BhY2UgIT0gMCkKKwkJYXBwZW5kX2lu dF9vYmplY3QodG1wLCAiJXtzcGFjZX1uIiwgYWdnLT5hZ2dtdHJhbnNzcGFjZSk7CisJZWxzZQor CQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2Jq ZWN0X29iamVjdCh0bXApKTsKKworCS8qIE1JTlZGVU5DICovCisJdG1wID0gbmV3X29ianRyZWUo Ik1JTlZGVU5DPSIpOworCWlmIChPaWRJc1ZhbGlkKGFnZy0+YWdnbWludnRyYW5zZm4pKQorCQlh cHBlbmRfb2JqZWN0X29iamVjdCh0bXAsICIle3R5cGV9VCIsIG5ld19vYmp0cmVlX2Zvcl9xdWFs bmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkJYWdnLT5hZ2dtaW52 dHJhbnNmbikpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9IGxh cHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBNRklOQUxGVU5DICov CisJdG1wID0gbmV3X29ianRyZWUoIk1GSU5BTEZVTkM9Iik7CisJaWYgKE9pZElzVmFsaWQoYWdn LT5hZ2dtZmluYWxmbikpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcCwgIiV7cHJvY2VkdXJl fUQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRp b25JZCwKKwkJCQkJCQkJCQkJCQkJIGFnZy0+YWdnbWZpbmFsZm4pKTsKKwllbHNlCisJCWFwcGVu ZF9ub3RfcHJlc2VudCh0bXApOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2Jq ZWN0KHRtcCkpOworCisJLyogTUZJTkFMRlVOQ19FWFRSQSAqLworCXRtcCA9IG5ld19vYmp0cmVl KCJNRklOQUxGVU5DX0VYVFJBPSIpOworCWlmIChhZ2ctPmFnZ21maW5hbGV4dHJhKQorCQlhcHBl bmRfc3RyaW5nX29iamVjdCh0bXAsICIle3ZhbHVlfXMiLCAidmFsdWUiLCAidHJ1ZSIpOworCWVs c2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3 X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBNSU5JVENPTkQgKi8KKwlpbml0dmFsID0gU3lz Q2FjaGVHZXRBdHRyKEFHR0ZOT0lELCBhZ2dUdXAsCisJCQkJCQkJICBBbnVtX3BnX2FnZ3JlZ2F0 ZV9hZ2dtaW5pdHZhbCwKKwkJCQkJCQkgICZpc251bGwpOworCXRtcCA9IG5ld19vYmp0cmVlKCJN SU5JVENPTkQ9Iik7CisJaWYgKCFpc251bGwpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcCwg IiV7aW5pdHZhbH1MIiwgImluaXR2YWwiLCBUZXh0RGF0dW1HZXRDU3RyaW5nKGluaXR2YWwpKTsK KwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWxpc3QgPSBsYXBwZW5kKGxpc3Qs IG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogSFlQT1RIRVRJQ0FMICovCisJdG1wID0g bmV3X29ianRyZWUoIkhZUE9USEVUSUNBTD0iKTsKKwlpZiAoYWdnLT5hZ2draW5kID09IEFHR0tJ TkRfSFlQT1RIRVRJQ0FMKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXAsICIle3ZhbHVlfXMi LCAidmFsdWUiLCAidHJ1ZSIpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJ bGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBTT1JU T1AgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZSgiU09SVE9QPSIpOworCWlmIChPaWRJc1ZhbGlkKGFn Zy0+YWdnc29ydG9wKSkKKwl7CisJCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShPUEVST0lELCBPYmpl Y3RJZEdldERhdHVtKGFnZy0+YWdnc29ydG9wKSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0 dXApKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wZXJhdG9yIHdp dGggT0lEICV1IiwgYWdnLT5hZ2dzb3J0b3ApOworCQlvcCA9IChGb3JtX3BnX29wZXJhdG9yKSBH RVRTVFJVQ1QodHVwKTsKKwkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wLCAiJXtvcGVyYXRvcn1E IiwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKG9wLT5vcHJuYW1lc3BhY2UsCisJ CQkJCQkJCQkJCQkJICBOYW1lU3RyKG9wLT5vcHJuYW1lKSkpOworCisJCVJlbGVhc2VTeXNDYWNo ZSh0dXApOworCX0KKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWxpc3QgPSBs YXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogRG9uZSB3aXRoIHRo ZSBkZWZpbml0aW9uIGNsYXVzZSAqLworCWFwcGVuZF9hcnJheV9vYmplY3Qoc3RtdCwgIigle2Vs ZW1zOiwgfXMpIiwgbGlzdCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUocHJvY1R1cCk7CisJUmVsZWFz ZVN5c0NhY2hlKGFnZ1R1cCk7CisKKwlyZXR1cm4gc3RtdDsKK30KKworLyoKKyAqIERlcGFyc2Ug YSBEZWZpbmVTdG10IChDUkVBVEUgQ09MTEFUSU9OKQorICoKKyAqIEdpdmVuIGEgY29sbGF0aW9u IE9JRCwgcmV0dXJuIGFuIE9ialRyZWUgcmVwcmVzZW50aW5nIHRoZSBDUkVBVEUgY29tbWFuZC4K KyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFIENPTExBVElPTiAle2lmX25vdF9leGlz dHN9cyAle2lkZW50aXR5fUQgRlJPTSAle2Zyb21faWRlbnRpdHl9RAorICogKCV7ZWxlbXM6LCB9 cykKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9EZWZpbmVTdG10X0NvbGxhdGlvbihP aWQgb2JqZWN0SWQsIERlZmluZVN0bXQgKmRlZmluZSwKKwkJCQkJCQkgT2JqZWN0QWRkcmVzcyBm cm9tQ29sbGlkKQoreworCU9ialRyZWUgICAgKnJldDsKKwlIZWFwVHVwbGUJY29sVHVwOworCUZv cm1fcGdfY29sbGF0aW9uIGNvbEZvcm07CisJRGF0dW0JCWRhdHVtOworCWJvb2wJCWlzbnVsbDsK KwlPYmpUcmVlICAgICp0bXA7CisJTGlzdAkgICAqbGlzdCA9IE5JTDsKKworCWNvbFR1cCA9IFNl YXJjaFN5c0NhY2hlMShDT0xMT0lELCBPYmplY3RJZEdldERhdHVtKG9iamVjdElkKSk7CisJaWYg KCFIZWFwVHVwbGVJc1ZhbGlkKGNvbFR1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAg ZmFpbGVkIGZvciBjb2xsYXRpb24gd2l0aCBPSUQgJXUiLCBvYmplY3RJZCk7CisJY29sRm9ybSA9 IChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RSVUNUKGNvbFR1cCk7CisKKwlyZXQgPSBuZXdfb2Jq dHJlZV9WQSgiQ1JFQVRFIENPTExBVElPTiAle2lmX25vdF9leGlzdHN9cyAle2lkZW50aXR5fUQi LCAyLAorCQkJCQkJICJpZl9ub3RfZXhpc3RzIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBkZWZp bmUtPmlmX25vdF9leGlzdHMgPyAiSUYgTk9UIEVYSVNUUyIgOiAiIiwKKwkJCQkJCSAiaWRlbnRp dHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShjb2xG b3JtLT5jb2xsbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJICBOYW1lU3RyKGNvbEZvcm0tPmNvbGxu YW1lKSkpOworCisJaWYgKE9pZElzVmFsaWQoZnJvbUNvbGxpZC5vYmplY3RJZCkpCisJeworCQlP aWQJCQljb2xsaWQgPSBmcm9tQ29sbGlkLm9iamVjdElkOworCQlIZWFwVHVwbGUJdHA7CisJCUZv cm1fcGdfY29sbGF0aW9uIGZyb21Db2xGb3JtOworCisJCS8qCisJCSAqIENSRUFURSBDT0xMQVRJ T04gJXtpZGVudGl0eX1EIEZST00gZXhpc3RpbmdfY29sbGF0aW9uOworCQkgKi8KKwkJdHAgPSBT ZWFyY2hTeXNDYWNoZTEoQ09MTE9JRCwgT2JqZWN0SWRHZXREYXR1bShjb2xsaWQpKTsKKwkJaWYg KCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciBjb2xsYXRpb24gd2l0aCBPSUQgJXUiLCBjb2xsaWQpOworCisJCWZyb21Db2xGb3Jt ID0gKEZvcm1fcGdfY29sbGF0aW9uKSBHRVRTVFJVQ1QodHApOworCisJCWFwcGVuZF9vYmplY3Rf b2JqZWN0KHJldCwgIkZST00gJXtmcm9tX2lkZW50aXR5fUQiLAorCQkJCQkJCSBuZXdfb2JqdHJl ZV9mb3JfcXVhbG5hbWUoZnJvbUNvbEZvcm0tPmNvbGxuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkJ ICBOYW1lU3RyKGZyb21Db2xGb3JtLT5jb2xsbmFtZSkpKTsKKworCQlSZWxlYXNlU3lzQ2FjaGUo dHApOworCQlSZWxlYXNlU3lzQ2FjaGUoY29sVHVwKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkv KiBMT0NBTEUgKi8KKwlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihDT0xMT0lELCBjb2xUdXAsIEFu dW1fcGdfY29sbGF0aW9uX2NvbGxpY3Vsb2NhbGUsICZpc251bGwpOworCWlmICghaXNudWxsKQor CXsKKwkJdG1wID0gbmV3X29ianRyZWVfVkEoIkxPQ0FMRT0le2xvY2FsZX1MIiwgMiwKKwkJCQkJ CQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJsb2NhbGUiLAorCQkJCQkJCSAibG9jYWxlIiwg T2JqVHlwZVN0cmluZywKKwkJCQkJCQkgcHNwcmludGYoIiVzIiwgVGV4dERhdHVtR2V0Q1N0cmlu ZyhkYXR1bSkpKTsKKwkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1w KSk7CisJfQorCisJLyogTENfQ09MTEFURSAqLworCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKENP TExPSUQsIGNvbFR1cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbGNvbGxhdGUsICZpc251bGwpOwor CWlmICghaXNudWxsKQorCXsKKwkJdG1wID0gbmV3X29ianRyZWVfVkEoIkxDX0NPTExBVEU9JXtj b2xsYXRlfUwiLCAyLAorCQkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgImNvbGxhdGUi LAorCQkJCQkJCSAiY29sbGF0ZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJIHBzcHJpbnRmKCIl cyIsIFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pKSk7CisJCWxpc3QgPSBsYXBwZW5kKGxpc3Qs IG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCX0KKworCS8qIExDX0NUWVBFICovCisJZGF0dW0g PSBTeXNDYWNoZUdldEF0dHIoQ09MTE9JRCwgY29sVHVwLCBBbnVtX3BnX2NvbGxhdGlvbl9jb2xs Y3R5cGUsICZpc251bGwpOworCWlmICghaXNudWxsKQorCXsKKwkJdG1wID0gbmV3X29ianRyZWVf VkEoIkxDX0NUWVBFPSV7Y3R5cGV9TCIsIDIsCisJCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3Ry aW5nLCAiY3R5cGUiLAorCQkJCQkJCSAiY3R5cGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCSBw c3ByaW50ZigiJXMiLCBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKSkpOworCQlsaXN0ID0gbGFw cGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwl9CisKKwkvKiBQUk9WSURFUiAq LworCWlmIChjb2xGb3JtLT5jb2xscHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKKwl7CisJ CXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJQUk9WSURFUj0le3Byb3ZpZGVyfUwiLCAyLAorCQkJCQkJ CSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgInByb3ZpZGVyIiwKKwkJCQkJCQkgInByb3ZpZGVy IiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkgcHNwcmludGYoIiVzIiwgImljdSIpKTsKKwkJbGlz dCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisJfQorCWVsc2UgaWYg KGNvbEZvcm0tPmNvbGxwcm92aWRlciA9PSBDT0xMUFJPVklERVJfTElCQykKKwl7CisJCXRtcCA9 IG5ld19vYmp0cmVlX1ZBKCJQUk9WSURFUj0le3Byb3ZpZGVyfUwiLCAyLAorCQkJCQkJCSAiY2xh dXNlIiwgT2JqVHlwZVN0cmluZywgInByb3ZpZGVyIiwKKwkJCQkJCQkgInByb3ZpZGVyIiwgT2Jq VHlwZVN0cmluZywKKwkJCQkJCQkgcHNwcmludGYoIiVzIiwgImxpYmMiKSk7CisJCWxpc3QgPSBs YXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCX0KKworCS8qIERFVEVSTUlO SVNUSUMgKi8KKwlpZiAoY29sRm9ybS0+Y29sbGlzZGV0ZXJtaW5pc3RpYykKKwl7CisJCXRtcCA9 IG5ld19vYmp0cmVlX1ZBKCJERVRFUk1JTklTVElDPSV7ZGV0ZXJtaW5pc3RpY31MIiwgMiwKKwkJ CQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJkZXRlcm1pbmlzdGljIiwKKwkJCQkJCQkg ImRldGVybWluaXN0aWMiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCSBwc3ByaW50ZigiJXMiLCAi dHJ1ZSIpKTsKKwkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7 CisJfQorCisJLyogVkVSU0lPTiAqLworCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKENPTExPSUQs IGNvbFR1cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbHZlcnNpb24sICZpc251bGwpOworCWlmICgh aXNudWxsKQorCXsKKwkJdG1wID0gbmV3X29ianRyZWVfVkEoIlZFUlNJT049JXt2ZXJzaW9ufUwi LCAyLAorCQkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgInZlcnNpb24iLAorCQkJCQkJ CSAidmVyc2lvbiIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJIHBzcHJpbnRmKCIlcyIsIFRleHRE YXR1bUdldENTdHJpbmcoZGF0dW0pKSk7CisJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmpl Y3Rfb2JqZWN0KHRtcCkpOworCX0KKworCWFwcGVuZF9hcnJheV9vYmplY3QocmV0LCAiKCV7ZWxl bXM6LCB9cykiLCBsaXN0KTsKKwlSZWxlYXNlU3lzQ2FjaGUoY29sVHVwKTsKKworCXJldHVybiBy ZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgRGVmaW5lU3RtdCAoQ1JFQVRFIE9QRVJBVE9SKQor ICoKKyAqIEdpdmVuIGEgb3BlcmF0b3IgT0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0 ZWQgaXQsIHJldHVybiBhbiBPYmpUcmVlCisgKiByZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9uIGNv bW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSBPUEVSQVRPUiAle2lkZW50 aXR5fU8gKCV7ZWxlbXM6LCB9cykKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9EZWZp bmVTdG10X09wZXJhdG9yKE9pZCBvYmplY3RJZCwgRGVmaW5lU3RtdCAqZGVmaW5lKQoreworCUhl YXBUdXBsZQlvcHJUdXA7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKnRtcF9vYmo7 CisJTGlzdAkgICAqbGlzdCA9IE5JTDsKKwlGb3JtX3BnX29wZXJhdG9yIG9wckZvcm07CisKKwlv cHJUdXAgPSBTZWFyY2hTeXNDYWNoZTEoT1BFUk9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJ ZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChvcHJUdXApKQorCQllbG9nKEVSUk9SLCAiY2Fj aGUgbG9va3VwIGZhaWxlZCBmb3Igb3BlcmF0b3Igd2l0aCBPSUQgJXUiLCBvYmplY3RJZCk7CisJ b3ByRm9ybSA9IChGb3JtX3BnX29wZXJhdG9yKSBHRVRTVFJVQ1Qob3ByVHVwKTsKKworCXJldCA9 IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUgT1BFUkFUT1IgJXtpZGVudGl0eX1PIiwgMSwKKwkJCQkJ CSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFs bmFtZShvcHJGb3JtLT5vcHJuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIE5hbWVTdHIob3ByRm9y bS0+b3BybmFtZSkpKTsKKworCS8qIFBST0NFRFVSRSAqLworCXRtcF9vYmogPSBuZXdfb2JqdHJl ZV9WQSgiUFJPQ0VEVVJFPSV7cHJvY2VkdXJlfUQiLCAyLAorCQkJCQkJCSJjbGF1c2UiLCBPYmpU eXBlU3RyaW5nLCAicHJvY2VkdXJlIiwKKwkJCQkJCQkicHJvY2VkdXJlIiwgT2JqVHlwZU9iamVj dCwKKwkJCQkJCQluZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25J ZCwKKwkJCQkJCQkJCQkJCQkJb3ByRm9ybS0+b3ByY29kZSkpOworCWxpc3QgPSBsYXBwZW5kKGxp c3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKworCS8qIExFRlRBUkcgKi8KKwl0bXBf b2JqID0gbmV3X29ianRyZWVfVkEoIkxFRlRBUkc9IiwgMSwKKwkJCQkJCQkiY2xhdXNlIiwgT2Jq VHlwZVN0cmluZywgImxlZnRhcmciKTsKKwlpZiAoT2lkSXNWYWxpZChvcHJGb3JtLT5vcHJsZWZ0 KSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7dHlwZX1UIiwKKwkJCQkJCQkg bmV3X29ianRyZWVfZm9yX3R5cGUob3ByRm9ybS0+b3BybGVmdCwgLTEpKTsKKwllbHNlCisJCWFw cGVuZF9ub3RfcHJlc2VudCh0bXBfb2JqKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2Jq ZWN0X29iamVjdCh0bXBfb2JqKSk7CisKKwkvKiBSSUdIVEFSRyAqLworCXRtcF9vYmogPSBuZXdf b2JqdHJlZV9WQSgiUklHSFRBUkc9IiwgMSwKKwkJCQkJCQkiY2xhdXNlIiwgT2JqVHlwZVN0cmlu ZywgInJpZ2h0YXJnIik7CisJaWYgKE9pZElzVmFsaWQob3ByRm9ybS0+b3BycmlnaHQpKQorCQlh cHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2JqLCAiJXt0eXBlfVQiLAorCQkJCQkJCSBuZXdfb2Jq dHJlZV9mb3JfdHlwZShvcHJGb3JtLT5vcHJyaWdodCwgLTEpKTsKKwllbHNlCisJCWFwcGVuZF9u b3RfcHJlc2VudCh0bXBfb2JqKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29i amVjdCh0bXBfb2JqKSk7CisKKwkvKiBDT01NVVRBVE9SICovCisJdG1wX29iaiA9IG5ld19vYmp0 cmVlX1ZBKCJDT01NVVRBVE9SPSIsIDEsCisJCQkJCQkJImNsYXVzZSIsIE9ialR5cGVTdHJpbmcs ICJjb21tdXRhdG9yIik7CisJaWYgKE9pZElzVmFsaWQob3ByRm9ybS0+b3ByY29tKSkKKwkJYXBw ZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7b3Blcn1EIiwKKwkJCQkJCQkgbmV3X29ianRy ZWVfZm9yX3F1YWxuYW1lX2lkKE9wZXJhdG9yUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJIG9w ckZvcm0tPm9wcmNvbSkpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOwor CWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKworCS8q IE5FR0FUT1IgKi8KKwl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIk5FR0FUT1I9IiwgMSwKKwkJ CQkJCQkiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgIm5lZ2F0b3IiKTsKKwlpZiAoT2lkSXNWYWxp ZChvcHJGb3JtLT5vcHJuZWdhdGUpKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2JqLCAi JXtvcGVyfUQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoT3BlcmF0b3JS ZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkgb3ByRm9ybS0+b3BybmVnYXRlKSk7CisJZWxzZQor CQlhcHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3 X29iamVjdF9vYmplY3QodG1wX29iaikpOworCisJLyogUkVTVFJJQ1QgKi8KKwl0bXBfb2JqID0g bmV3X29ianRyZWVfVkEoIlJFU1RSSUNUPSIsIDEsCisJCQkJCQkJImNsYXVzZSIsIE9ialR5cGVT dHJpbmcsICJyZXN0cmljdCIpOworCWlmIChPaWRJc1ZhbGlkKG9wckZvcm0tPm9wcnJlc3QpKQor CQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2JqLCAiJXtwcm9jZWR1cmV9RCIsCisJCQkJCQkJ IG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJ CQkJCQkJCQkgb3ByRm9ybS0+b3BycmVzdCkpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50 KHRtcF9vYmopOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9v YmopKTsKKworCS8qIEpPSU4gKi8KKwl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkpPSU49Iiwg MSwKKwkJCQkJCQkiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgImpvaW4iKTsKKwlpZiAoT2lkSXNW YWxpZChvcHJGb3JtLT5vcHJqb2luKSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwg IiV7cHJvY2VkdXJlfUQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJv Y2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJIG9wckZvcm0tPm9wcmpvaW4pKTsKKwll bHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXBfb2JqKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0 LCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisKKwkvKiBIQVNIRVMgKi8KKwl0bXBfb2Jq ID0gbmV3X29ianRyZWVfVkEoIkhBU0hFUyIsIDEsCisJCQkJCQkJImNsYXVzZSIsIE9ialR5cGVT dHJpbmcsICJoYXNoZXMiKTsKKwlpZiAoIW9wckZvcm0tPm9wcmNhbmhhc2gpCisJCWFwcGVuZF9u b3RfcHJlc2VudCh0bXBfb2JqKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29i amVjdCh0bXBfb2JqKSk7CisKKwkvKiBNRVJHRVMgKi8KKwl0bXBfb2JqID0gbmV3X29ianRyZWVf VkEoIk1FUkdFUyIsIDEsCisJCQkJCQkJImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJtZXJnZXMi KTsKKwlpZiAoIW9wckZvcm0tPm9wcmNhbm1lcmdlKQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1w X29iaik7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikp OworCisJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICIoJXtlbGVtczosIH1zKSIsIGxpc3QpOwor CisJUmVsZWFzZVN5c0NhY2hlKG9wclR1cCk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICog RGVwYXJzZSBhIENSRUFURSBUWVBFIHN0YXRlbWVudC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAor ICogQ1JFQVRFIFRZUEUgJXtpZGVudGl0eX1EICV7ZWxlbXM6LCB9cykKKyAqLworc3RhdGljIE9i alRyZWUgKgorZGVwYXJzZV9EZWZpbmVTdG10X1R5cGUoT2lkIG9iamVjdElkLCBEZWZpbmVTdG10 ICpkZWZpbmUpCit7CisJSGVhcFR1cGxlCXR5cFR1cDsKKwlPYmpUcmVlICAgICpyZXQ7CisJT2Jq VHJlZSAgICAqdG1wOworCUxpc3QJICAgKmxpc3QgPSBOSUw7CisJY2hhcgkgICAqc3RyOworCURh dHVtCQlkZmx0OworCWJvb2wJCWlzbnVsbDsKKwlGb3JtX3BnX3R5cGUgdHlwRm9ybTsKKworCXR5 cFR1cCA9IFNlYXJjaFN5c0NhY2hlMShUWVBFT0lELCBPYmplY3RJZEdldERhdHVtKG9iamVjdElk KSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR5cFR1cCkpCisJCWVsb2coRVJST1IsICJjYWNo ZSBsb29rdXAgZmFpbGVkIGZvciB0eXBlIHdpdGggT0lEICV1Iiwgb2JqZWN0SWQpOworCXR5cEZv cm0gPSAoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1QodHlwVHVwKTsKKworCXJldCA9IG5ld19vYmp0 cmVlX1ZBKCJDUkVBVEUgVFlQRSAle2lkZW50aXR5fUQiLCAxLAorCQkJCQkJICJpZGVudGl0eSIs IE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHR5cEZvcm0t PnR5cG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCSAgTmFtZVN0cih0eXBGb3JtLT50eXBuYW1lKSkp OworCisJLyogU2hlbGwgdHlwZXMuICovCisJaWYgKCF0eXBGb3JtLT50eXBpc2RlZmluZWQpCisJ eworCQlSZWxlYXNlU3lzQ2FjaGUodHlwVHVwKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKiBB ZGQgdGhlIGRlZmluaXRpb24gY2xhdXNlICovCisJLyogSU5QVVQgKi8KKwl0bXAgPSBuZXdfb2Jq dHJlZV9WQSgiKElOUFVUPSV7cHJvY2VkdXJlfUQiLCAyLAorCQkJCQkJICJjbGF1c2UiLCBPYmpU eXBlU3RyaW5nLCAiaW5wdXQiLAorCQkJCQkJICJwcm9jZWR1cmUiLCBPYmpUeXBlT2JqZWN0LAor CQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAor CQkJCQkJCQkJCQkJCSB0eXBGb3JtLT50eXBpbnB1dCkpOworCWxpc3QgPSBsYXBwZW5kKGxpc3Qs IG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogT1VUUFVUICovCisJdG1wID0gbmV3X29i anRyZWVfVkEoIk9VVFBVVD0le3Byb2NlZHVyZX1EIiwgMiwKKwkJCQkJCSAiY2xhdXNlIiwgT2Jq VHlwZVN0cmluZywgIm91dHB1dCIsCisJCQkJCQkgInByb2NlZHVyZSIsIE9ialR5cGVPYmplY3Qs CisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQs CisJCQkJCQkJCQkJCQkJIHR5cEZvcm0tPnR5cG91dHB1dCkpOworCWxpc3QgPSBsYXBwZW5kKGxp c3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogUkVDRUlWRSAqLworCXRtcCA9IG5l d19vYmp0cmVlX1ZBKCJSRUNFSVZFPSIsIDEsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJp bmcsICJyZWNlaXZlIik7CisJaWYgKE9pZElzVmFsaWQodHlwRm9ybS0+dHlwcmVjZWl2ZSkpCisJ CWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcCwgIiV7cHJvY2VkdXJlfUQiLAorCQkJCQkJCSBuZXdf b2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJ CQkJIHR5cEZvcm0tPnR5cHJlY2VpdmUpKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0 bXApOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJ LyogU0VORCAqLworCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJTRU5EPSIsIDEsCisJCQkJCQkgImNs YXVzZSIsIE9ialR5cGVTdHJpbmcsICJzZW5kIik7CisJaWYgKE9pZElzVmFsaWQodHlwRm9ybS0+ dHlwc2VuZCkpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcCwgIiV7cHJvY2VkdXJlfUQiLAor CQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwK KwkJCQkJCQkJCQkJCQkJIHR5cEZvcm0tPnR5cHNlbmQpKTsKKwllbHNlCisJCWFwcGVuZF9ub3Rf cHJlc2VudCh0bXApOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRt cCkpOworCisJLyogVFlQTU9EX0lOICovCisJdG1wID0gbmV3X29ianRyZWVfVkEoIlRZUE1PRF9J Tj0iLCAxLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAidHlwbW9kX2luIik7CisJ aWYgKE9pZElzVmFsaWQodHlwRm9ybS0+dHlwbW9kaW4pKQorCQlhcHBlbmRfb2JqZWN0X29iamVj dCh0bXAsICIle3Byb2NlZHVyZX1EIiwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1l X2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSB0eXBGb3JtLT50eXBtb2Rp bikpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9IGxhcHBlbmQo bGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBUWVBNT0RfT1VUICovCisJdG1w ID0gbmV3X29ianRyZWVfVkEoIlRZUE1PRF9PVVQ9IiwgMSwKKwkJCQkJCSAiY2xhdXNlIiwgT2Jq VHlwZVN0cmluZywgInR5cG1vZF9vdXQiKTsKKwlpZiAoT2lkSXNWYWxpZCh0eXBGb3JtLT50eXBt b2RvdXQpKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXAsICIle3Byb2NlZHVyZX1EIiwKKwkJ CQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJ CQkJCQkJCQkJCQkJCSB0eXBGb3JtLT50eXBtb2RvdXQpKTsKKwllbHNlCisJCWFwcGVuZF9ub3Rf cHJlc2VudCh0bXApOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRt cCkpOworCisJLyogQU5BTFlaRSAqLworCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJBTkFMWVpFPSIs IDEsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJhbmFseXplIik7CisJaWYgKE9p ZElzVmFsaWQodHlwRm9ybS0+dHlwYW5hbHl6ZSkpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRt cCwgIiV7cHJvY2VkdXJlfUQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQo UHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJIHR5cEZvcm0tPnR5cGFuYWx5emUp KTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWxpc3QgPSBsYXBwZW5kKGxp c3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogSU5URVJOQUxMRU5HVEggKi8KKwlp ZiAodHlwRm9ybS0+dHlwbGVuID09IC0xKQorCQl0bXAgPSBuZXdfb2JqdHJlZSgiSU5URVJOQUxM RU5HVEg9VkFSSUFCTEUiKTsKKwllbHNlCisJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJJTlRFUk5B TExFTkdUSD0le3R5cGxlbn1uIiwgMSwKKwkJCQkJCQkgInR5cGxlbiIsIE9ialR5cGVJbnRlZ2Vy LCB0eXBGb3JtLT50eXBsZW4pOworCisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9v YmplY3QodG1wKSk7CisKKwkvKiBQQVNTRURCWVZBTFVFICovCisJdG1wID0gbmV3X29ianRyZWVf VkEoIlBBU1NFREJZVkFMVUUiLCAxLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAi cGFzc2VkYnl2YWx1ZSIpOworCWlmICghdHlwRm9ybS0+dHlwYnl2YWwpCisJCWFwcGVuZF9ub3Rf cHJlc2VudCh0bXApOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRt cCkpOworCisJLyogWFhYIGl0J3Mgb2RkIHRvIHJlcHJlc2VudCBhbGlnbm1lbnQgd2l0aCBzY2hl bWEtcXVhbGlmaWVkIHR5cGUgbmFtZXMgKi8KKwlzd2l0Y2ggKHR5cEZvcm0tPnR5cGFsaWduKQor CXsKKwkJY2FzZSAnZCc6CisJCQlzdHIgPSAicGdfY2F0YWxvZy5mbG9hdDgiOworCQkJYnJlYWs7 CisJCWNhc2UgJ2knOgorCQkJc3RyID0gInBnX2NhdGFsb2cuaW50NCI7CisJCQlicmVhazsKKwkJ Y2FzZSAncyc6CisJCQlzdHIgPSAicGdfY2F0YWxvZy5pbnQyIjsKKwkJCWJyZWFrOworCQljYXNl ICdjJzoKKwkJCXN0ciA9ICJwZ19jYXRhbG9nLmJwY2hhciI7CisJCQlicmVhazsKKwkJZGVmYXVs dDoKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIGFsaWdubWVudCAlYyIsIHR5cEZvcm0tPnR5cGFs aWduKTsKKwl9CisKKwkvKiBBTElHTk1FTlQgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiQUxJ R05NRU5UPSV7YWxpZ259cyIsIDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJh bGlnbm1lbnQiLAorCQkJCQkJICJhbGlnbiIsIE9ialR5cGVTdHJpbmcsIHN0cik7CisJbGlzdCA9 IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBTVE9SQUdFICov CisJdG1wID0gbmV3X29ianRyZWVfVkEoIlNUT1JBR0U9JXtzdG9yYWdlfXMiLCAyLAorCQkJCQkJ ICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAic3RvcmFnZSIsCisJCQkJCQkgInN0b3JhZ2UiLCBP YmpUeXBlU3RyaW5nLAorCQkJCQkJIGdldF90eXBlX3N0b3JhZ2UodHlwRm9ybS0+dHlwc3RvcmFn ZSkpOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJ LyogQ0FURUdPUlkgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiQ0FURUdPUlk9JXtjYXRlZ29y eX1zIiwgMiwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgImNhdGVnb3J5IiwKKwkJ CQkJCSAiY2F0ZWdvcnkiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIHBzcHJpbnRmKCIlYyIsIHR5 cEZvcm0tPnR5cGNhdGVnb3J5KSk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9v YmplY3QodG1wKSk7CisKKwkvKiBQUkVGRVJSRUQgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgi UFJFRkVSUkVEPSV7cHJlZmVycmVkfXMiLCAxLAorCQkJCQkJICJwcmVmZXJyZWQiLCBPYmpUeXBl U3RyaW5nLAorCQkJCQkJIHR5cEZvcm0tPnR5cGlzcHJlZmVycmVkID8gIlRSVUUiIDogIkZBTFNF Iik7CisJaWYgKCF0eXBGb3JtLT50eXBpc3ByZWZlcnJlZCkKKwkJYXBwZW5kX25vdF9wcmVzZW50 KHRtcCk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisK KwkvKiBERUZBVUxUICovCisJZGZsdCA9IFN5c0NhY2hlR2V0QXR0cihUWVBFT0lELCB0eXBUdXAs CisJCQkJCQkgICBBbnVtX3BnX3R5cGVfdHlwZGVmYXVsdCwKKwkJCQkJCSAgICZpc251bGwpOwor CXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJERUZBVUxUPSIsIDEsCisJCQkJCQkgImNsYXVzZSIsIE9i alR5cGVTdHJpbmcsICJkZWZhdWx0Iik7CisJaWYgKCFpc251bGwpCisJCWFwcGVuZF9zdHJpbmdf b2JqZWN0KHRtcCwgIiV7ZGVmYXVsdH1zIiwgImRlZmF1bHQiLAorCQkJCQkJCSBUZXh0RGF0dW1H ZXRDU3RyaW5nKGRmbHQpKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWxp c3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogRUxFTUVO VCAqLworCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJFTEVNRU5UPSIsIDEsCisJCQkJCQkgImNsYXVz ZSIsIE9ialR5cGVTdHJpbmcsICJlbGVtZW50Iik7CisJaWYgKE9pZElzVmFsaWQodHlwRm9ybS0+ dHlwZWxlbSkpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcCwgIiV7ZWxlbX1UIiwKKwkJCQkJ CQkgbmV3X29ianRyZWVfZm9yX3R5cGUodHlwRm9ybS0+dHlwZWxlbSwgLTEpKTsKKwllbHNlCisJ CWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmpl Y3Rfb2JqZWN0KHRtcCkpOworCisJLyogREVMSU1JVEVSICovCisJdG1wID0gbmV3X29ianRyZWVf VkEoIkRFTElNSVRFUj0iLCAxLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAiZGVs aW1pdGVyIik7CisJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wLCAiJXtkZWxpbX1MIiwgImRlbGlt IiwKKwkJCQkJCSBwc3ByaW50ZigiJWMiLCB0eXBGb3JtLT50eXBkZWxpbSkpOworCWxpc3QgPSBs YXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogQ09MTEFUQUJMRSAq LworCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJDT0xMQVRBQkxFPSIsIDEsCisJCQkJCQkgImNsYXVz ZSIsIE9ialR5cGVTdHJpbmcsICJjb2xsYXRhYmxlIik7CisJaWYgKCFPaWRJc1ZhbGlkKHR5cEZv cm0tPnR5cGNvbGxhdGlvbikpCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWxpc3QgPSBs YXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJYXBwZW5kX2FycmF5X29i amVjdChyZXQsICIle2VsZW1zOiwgfXMpIiwgbGlzdCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHlw VHVwKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ1JFQVRFIFRFWFQg U0VBUkNIIENPTkZJR1VSQVRJT04gc3RhdGVtZW50LgorICoKKyAqIFZlcmJvc2Ugc3ludGF4Cisg KiBDUkVBVEUgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiAle2lkZW50aXR5fUQgKCV7ZWxlbXM6 LCB9cykKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9EZWZpbmVTdG10X1RTQ29uZmln KE9pZCBvYmplY3RJZCwgRGVmaW5lU3RtdCAqZGVmaW5lLAorCQkJCQkJCU9iamVjdEFkZHJlc3Mg Y29waWVkKQoreworCUhlYXBUdXBsZQl0c2NUdXA7CisJSGVhcFR1cGxlCXRzcFR1cDsKKwlPYmpU cmVlICAgICpyZXQ7CisJT2JqVHJlZSAgICAqdG1wOworCUZvcm1fcGdfdHNfY29uZmlnIHRzY0Zv cm07CisJRm9ybV9wZ190c19wYXJzZXIgdHNwRm9ybTsKKwlMaXN0CSAgICpsaXN0ID0gTklMOwor CisJdHNjVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFRTQ09ORklHT0lELCBPYmplY3RJZEdldERhdHVt KG9iamVjdElkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRzY1R1cCkpCisJCWVsb2coRVJS T1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciB0ZXh0IHNlYXJjaCBjb25maWd1cmF0aW9uIHdp dGggT0lEICV1IiwKKwkJCSBvYmplY3RJZCk7CisJdHNjRm9ybSA9IChGb3JtX3BnX3RzX2NvbmZp ZykgR0VUU1RSVUNUKHRzY1R1cCk7CisKKwl0c3BUdXAgPSBTZWFyY2hTeXNDYWNoZTEoVFNQQVJT RVJPSUQsIE9iamVjdElkR2V0RGF0dW0odHNjRm9ybS0+Y2ZncGFyc2VyKSk7CisJaWYgKCFIZWFw VHVwbGVJc1ZhbGlkKHRzcFR1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVk IGZvciB0ZXh0IHNlYXJjaCBwYXJzZXIgJXUiLAorCQkJIHRzY0Zvcm0tPmNmZ3BhcnNlcik7CisJ dHNwRm9ybSA9IChGb3JtX3BnX3RzX3BhcnNlcikgR0VUU1RSVUNUKHRzcFR1cCk7CisKKwkvKgor CSAqIEFkZCB0aGUgZGVmaW5pdGlvbiBjbGF1c2UuICBJZiB3ZSBoYXZlIENPUFknZWQgYW4gZXhp c3RpbmcgY29uZmlnLCBhZGQKKwkgKiBhIENPUFkgY2xhdXNlOyBvdGhlcndpc2UgYWRkIGEgUEFS U0VSIGNsYXVzZS4KKwkgKi8KKwkvKiBDT1BZICovCisJdG1wID0gbmV3X29ianRyZWVfVkEoIkNP UFk9IiwgMSwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgImNvcHkiKTsKKwlpZiAo T2lkSXNWYWxpZChjb3BpZWQub2JqZWN0SWQpKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXAs ICIle3RzY29uZmlnfUQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoVFND b25maWdSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkgY29waWVkLm9iamVjdElkKSk7CisJZWxz ZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdf b2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIFBBUlNFUiAqLworCXRtcCA9IG5ld19vYmp0cmVl X1ZBKCJQQVJTRVI9IiwgMSwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgInBhcnNl ciIpOworCWlmIChjb3BpZWQub2JqZWN0SWQgPT0gSW52YWxpZE9pZCkKKwkJYXBwZW5kX29iamVj dF9vYmplY3QodG1wLCAiJXtwYXJzZXJ9RCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFs bmFtZSh0c3BGb3JtLT5wcnNuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkJICBOYW1lU3RyKHRzcEZv cm0tPnByc25hbWUpKSk7CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwlsaXN0 ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCXJldCA9IG5ld19v Ymp0cmVlX1ZBKCJDUkVBVEUgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiAle2lkZW50aXR5fUQg KCV7ZWxlbXM6LCB9cykiLCAyLAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJ CQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHRzY0Zvcm0tPmNmZ25hbWVzcGFjZSwKKwkJ CQkJCQkJCQkJCSAgTmFtZVN0cih0c2NGb3JtLT5jZmduYW1lKSksCisJCQkJCQkgImVsZW1zIiwg T2JqVHlwZUFycmF5LCBsaXN0KTsKKworCVJlbGVhc2VTeXNDYWNoZSh0c3BUdXApOworCVJlbGVh c2VTeXNDYWNoZSh0c2NUdXApOworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEg Q1JFQVRFIFRFWFQgU0VBUkNIIFBBUlNFUiBzdGF0ZW1lbnQuCisgKgorICogVmVyYm9zZSBzeW50 YXgKKyAqIENSRUFURSBURVhUIFNFQVJDSCBQQVJTRVIgJXtpZGVudGl0eX1EICgle2VsZW1zOiwg fXMpCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfRGVmaW5lU3RtdF9UU1BhcnNlcihP aWQgb2JqZWN0SWQsIERlZmluZVN0bXQgKmRlZmluZSkKK3sKKwlIZWFwVHVwbGUJdHNwVHVwOwor CU9ialRyZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXA7CisJTGlzdAkgICAqbGlzdCA9IE5J TDsKKwlGb3JtX3BnX3RzX3BhcnNlciB0c3BGb3JtOworCisJdHNwVHVwID0gU2VhcmNoU3lzQ2Fj aGUxKFRTUEFSU0VST0lELCBPYmplY3RJZEdldERhdHVtKG9iamVjdElkKSk7CisJaWYgKCFIZWFw VHVwbGVJc1ZhbGlkKHRzcFR1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVk IGZvciB0ZXh0IHNlYXJjaCBwYXJzZXIgd2l0aCBPSUQgJXUiLAorCQkJIG9iamVjdElkKTsKKwl0 c3BGb3JtID0gKEZvcm1fcGdfdHNfcGFyc2VyKSBHRVRTVFJVQ1QodHNwVHVwKTsKKworCS8qIEFk ZCB0aGUgZGVmaW5pdGlvbiBjbGF1c2UgKi8KKwkvKiBTVEFSVCAqLworCXRtcCA9IG5ld19vYmp0 cmVlX1ZBKCJTVEFSVD0le3Byb2NlZHVyZX1EIiwgMiwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlw ZVN0cmluZywgInN0YXJ0IiwKKwkJCQkJCSAicHJvY2VkdXJlIiwgT2JqVHlwZU9iamVjdCwKKwkJ CQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJ CQkJCQkJCQkJCQkgdHNwRm9ybS0+cHJzc3RhcnQpKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBu ZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIEdFVFRPS0VOICovCisJdG1wID0gbmV3X29i anRyZWVfVkEoIkdFVFRPS0VOPSV7cHJvY2VkdXJlfUQiLCAyLAorCQkJCQkJICJjbGF1c2UiLCBP YmpUeXBlU3RyaW5nLCAiZ2V0dG9rZW4iLAorCQkJCQkJICJwcm9jZWR1cmUiLCBPYmpUeXBlT2Jq ZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlv bklkLAorCQkJCQkJCQkJCQkJCSB0c3BGb3JtLT5wcnN0b2tlbikpOworCWxpc3QgPSBsYXBwZW5k KGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogRU5EICovCisJdG1wID0gbmV3 X29ianRyZWVfVkEoIkVORD0le3Byb2NlZHVyZX1EIiwgMiwKKwkJCQkJCSAiY2xhdXNlIiwgT2Jq VHlwZVN0cmluZywgImVuZCIsCisJCQkJCQkgInByb2NlZHVyZSIsIE9ialR5cGVPYmplY3QsCisJ CQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJ CQkJCQkJCQkJCQkJIHRzcEZvcm0tPnByc2VuZCkpOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5l d19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogTEVYVFlQRVMgKi8KKwl0bXAgPSBuZXdfb2Jq dHJlZV9WQSgiTEVYVFlQRVM9JXtwcm9jZWR1cmV9RCIsIDIsCisJCQkJCQkgImNsYXVzZSIsIE9i alR5cGVTdHJpbmcsICJsZXh0eXBlcyIsCisJCQkJCQkgInByb2NlZHVyZSIsIE9ialR5cGVPYmpl Y3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9u SWQsCisJCQkJCQkJCQkJCQkJIHRzcEZvcm0tPnByc2xleHR5cGUpKTsKKwlsaXN0ID0gbGFwcGVu ZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIEhFQURMSU5FICovCisJdG1w ID0gbmV3X29ianRyZWVfVkEoIkhFQURMSU5FPSIsIDEsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5 cGVTdHJpbmcsICJoZWFkbGluZSIpOworCWlmIChPaWRJc1ZhbGlkKHRzcEZvcm0tPnByc2hlYWRs aW5lKSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wLCAiJXtwcm9jZWR1cmV9RCIsCisJCQkJ CQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJ CQkJCQkJCQkJCQkgdHNwRm9ybS0+cHJzaGVhZGxpbmUpKTsKKwllbHNlCisJCWFwcGVuZF9ub3Rf cHJlc2VudCh0bXApOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRt cCkpOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkNSRUFURSBURVhUIFNFQVJDSCBQQVJTRVIg JXtpZGVudGl0eX1EICgle2VsZW1zOiwgfXMpIiwgMiwKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpU eXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZSh0c3BGb3JtLT5wcnNu YW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIE5hbWVTdHIodHNwRm9ybS0+cHJzbmFtZSkpLAorCQkJ CQkJICJlbGVtcyIsIE9ialR5cGVBcnJheSwgbGlzdCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHNw VHVwKTsKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIENSRUFURSBURVhUIFNF QVJDSCBESUNUSU9OQVJZIHN0YXRlbWVudC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JF QVRFIFRFWFQgU0VBUkNIIERJQ1RJT05BUlkgJXtpZGVudGl0eX1EICgle2VsZW1zOiwgfXMpCisg Ki8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfRGVmaW5lU3RtdF9UU0RpY3Rpb25hcnkoT2lk IG9iamVjdElkLCBEZWZpbmVTdG10ICpkZWZpbmUpCit7CisJSGVhcFR1cGxlCXRzZFR1cDsKKwlP YmpUcmVlICAgICpyZXQ7CisJT2JqVHJlZSAgICAqdG1wOworCUxpc3QJICAgKmxpc3QgPSBOSUw7 CisJRGF0dW0JCW9wdGlvbnM7CisJYm9vbAkJaXNudWxsOworCUZvcm1fcGdfdHNfZGljdCB0c2RG b3JtOworCisJdHNkVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFRTRElDVE9JRCwgT2JqZWN0SWRHZXRE YXR1bShvYmplY3RJZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0c2RUdXApKQorCQllbG9n KEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdGV4dCBzZWFyY2ggZGljdGlvbmFyeSB3 aXRoIE9JRCAldSIsCisJCQkgb2JqZWN0SWQpOworCXRzZEZvcm0gPSAoRm9ybV9wZ190c19kaWN0 KSBHRVRTVFJVQ1QodHNkVHVwKTsKKworCisKKwkvKiBBZGQgdGhlIGRlZmluaXRpb24gY2xhdXNl ICovCisJLyogVEVNUExBVEUgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiVEVNUExBVEU9Iiwg MSwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgInRlbXBsYXRlIik7CisJYXBwZW5k X29iamVjdF9vYmplY3QodG1wLCAiJXt0ZW1wbGF0ZX1EIiwKKwkJCQkJCSBuZXdfb2JqdHJlZV9m b3JfcXVhbG5hbWVfaWQoVFNUZW1wbGF0ZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJIHRzZEZv cm0tPmRpY3R0ZW1wbGF0ZSkpOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2Jq ZWN0KHRtcCkpOworCisJLyoKKwkgKiBvcHRpb25zLiAgWFhYIHRoaXMgaXMgYSBwcmV0dHkgdXNl bGVzcyByZXByZXNlbnRhdGlvbiwgYnV0IHdlIGNhbid0IGRvCisJICogYmV0dGVyIHdpdGhvdXQg bW9yZSB0c19jYWNoZS5jIGNvb3BlcmF0aW9uIC4uLgorCSAqLworCW9wdGlvbnMgPSBTeXNDYWNo ZUdldEF0dHIoVFNESUNUT0lELCB0c2RUdXAsCisJCQkJCQkJICBBbnVtX3BnX3RzX2RpY3RfZGlj dGluaXRvcHRpb24sCisJCQkJCQkJICAmaXNudWxsKTsKKwl0bXAgPSBuZXdfb2JqdHJlZSgiIik7 CisJaWYgKCFpc251bGwpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcCwgIiV7b3B0aW9uc31z IiwgIm9wdGlvbnMiLAorCQkJCQkJCSBUZXh0RGF0dW1HZXRDU3RyaW5nKG9wdGlvbnMpKTsKKwll bHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5l d19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkNSRUFURSBU RVhUIFNFQVJDSCBESUNUSU9OQVJZICV7aWRlbnRpdHl9RCAoJXtlbGVtczosIH1zKSIsIDIsCisJ CQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3Jf cXVhbG5hbWUodHNkRm9ybS0+ZGljdG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCSAgTmFtZVN0cih0 c2RGb3JtLT5kaWN0bmFtZSkpLAorCQkJCQkJICJlbGVtcyIsIE9ialR5cGVBcnJheSwgbGlzdCk7 CisKKwlSZWxlYXNlU3lzQ2FjaGUodHNkVHVwKTsKKwlyZXR1cm4gcmV0OworfQorCisvKgorICog RGVwYXJzZSBhIENSRUFURSBURVhUIFNFQVJDSCBURU1QTEFURSBzdGF0ZW1lbnQuCisgKgorICog VmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSBURVhUIFNFQVJDSCBURU1QTEFURSAle2lkZW50aXR5 fUQgKCV7ZWxlbXM6LCB9cykKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9EZWZpbmVT dG10X1RTVGVtcGxhdGUoT2lkIG9iamVjdElkLCBEZWZpbmVTdG10ICpkZWZpbmUpCit7CisJSGVh cFR1cGxlCXRzdFR1cDsKKwlPYmpUcmVlICAgICpyZXQ7CisJT2JqVHJlZSAgICAqdG1wOworCUxp c3QJICAgKmxpc3QgPSBOSUw7CisJRm9ybV9wZ190c190ZW1wbGF0ZSB0c3RGb3JtOworCisJdHN0 VHVwID0gU2VhcmNoU3lzQ2FjaGUxKFRTVEVNUExBVEVPSUQsIE9iamVjdElkR2V0RGF0dW0ob2Jq ZWN0SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHN0VHVwKSkKKwkJZWxvZyhFUlJPUiwg ImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHRleHQgc2VhcmNoIHRlbXBsYXRlIHdpdGggT0lEICV1 IiwKKwkJCSBvYmplY3RJZCk7CisJdHN0Rm9ybSA9IChGb3JtX3BnX3RzX3RlbXBsYXRlKSBHRVRT VFJVQ1QodHN0VHVwKTsKKworCS8qIEFkZCB0aGUgZGVmaW5pdGlvbiBjbGF1c2UgKi8KKwkvKiBJ TklUICovCisJdG1wID0gbmV3X29ianRyZWVfVkEoIklOSVQ9IiwgMSwKKwkJCQkJCSAiY2xhdXNl IiwgT2JqVHlwZVN0cmluZywgImluaXQiKTsKKwlpZiAoT2lkSXNWYWxpZCh0c3RGb3JtLT50bXBs aW5pdCkpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcCwgIiV7cHJvY2VkdXJlfUQiLAorCQkJ CQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJ CQkJCQkJCQkJCQkJIHRzdEZvcm0tPnRtcGxpbml0KSk7CisJZWxzZQorCQlhcHBlbmRfbm90X3By ZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXAp KTsKKworCS8qIExFWElaRSAqLworCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJMRVhJWkU9JXtwcm9j ZWR1cmV9RCIsIDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJsZXhpemUiLAor CQkJCQkJICJwcm9jZWR1cmUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zv cl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCSB0c3RGb3Jt LT50bXBsbGV4aXplKSk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3Qo dG1wKSk7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIFRFWFQgU0VBUkNIIFRFTVBM QVRFICV7aWRlbnRpdHl9RCAoJXtlbGVtczosIH1zKSIsIDIsCisJCQkJCQkgImlkZW50aXR5Iiwg T2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUodHN0Rm9ybS0+ dG1wbG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCSAgTmFtZVN0cih0c3RGb3JtLT50bXBsbmFtZSkp LAorCQkJCQkJICJlbGVtcyIsIE9ialR5cGVBcnJheSwgbGlzdCk7CisKKwlSZWxlYXNlU3lzQ2Fj aGUodHN0VHVwKTsKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhbiBBTFRFUiBU RVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIHN0YXRlbWVudC4KKyAqCisgKiBWZXJib3NlIHN5bnRh eAorICogQUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiAle2lkZW50aXR5fUQgQUREIE1B UFBJTkcKKyAqIEZPUiAle3Rva2VudHlwZTosIH1JIFdJVEggJXtkaWN0aW9uYXJpZXM6LCB9RAor ICoJT1IKKyAqIEFMVEVSIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04gJXtpZGVudGl0eX1EIERS T1AgTUFQUElORyAle2lmX2V4aXN0c31zCisgKiBGT1IgJXt0b2tlbnR5cGV9SQorICoJT1IKKyAq IEFMVEVSIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04gJXtpZGVudGl0eX1EIEFMVEVSIE1BUFBJ TkcKKyAqIEZPUiAle3Rva2VudHlwZTosIH1JIFdJVEggJXtkaWN0aW9uYXJpZXM6LCB9RAorICoJ T1IKKyAqIEFMVEVSIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04gJXtpZGVudGl0eX1EIEFMVEVS IE1BUFBJTkcKKyAqIFJFUExBQ0UgJXtvbGRfZGljdGlvbmFyeX1EIFdJVEggJXtuZXdfZGljdGlv bmFyeX1ECisgKglPUgorICogQUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiAle2lkZW50 aXR5fUQgQUxURVIgTUFQUElORworICogRk9SICV7dG9rZW50eXBlOiwgfUkgUkVQTEFDRSAle29s ZF9kaWN0aW9uYXJ5fUQgV0lUSCAle25ld19kaWN0aW9uYXJ5fUQKKyAqLworc3RhdGljIE9ialRy ZWUgKgorZGVwYXJzZV9BbHRlclRTQ29uZmlndXJhdGlvblN0bXQoQ29sbGVjdGVkQ29tbWFuZCAq Y21kKQoreworCUFsdGVyVFNDb25maWd1cmF0aW9uU3RtdCAqbm9kZSA9IChBbHRlclRTQ29uZmln dXJhdGlvblN0bXQgKikgY21kLT5wYXJzZXRyZWU7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRy ZWUgICAgKnRtcDsKKwlMaXN0CSAgICpsaXN0ID0gTklMOworCUxpc3RDZWxsICAgKmNlbGw7CisJ aW50CQkJaTsKKworCXJldCA9IG5ld19vYmp0cmVlKCJBTFRFUiBURVhUIFNFQVJDSCBDT05GSUdV UkFUSU9OIik7CisKKwkvKiBEZXRlcm1pbmUgdGhlIGZvcm1hdCBzdHJpbmcgYXBwcm9wcmlhdGUg dG8gZWFjaCBzdWJjb21tYW5kICovCisJc3dpdGNoIChub2RlLT5raW5kKQorCXsKKwkJY2FzZSBB TFRFUl9UU0NPTkZJR19BRERfTUFQUElORzoKKwkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwg IiV7aWRlbnRpdHl9RCBBREQgTUFQUElORyIsCisJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVh bG5hbWVfaWQoY21kLT5kLmF0c2NmZy5hZGRyZXNzLmNsYXNzSWQsCisJCQkJCQkJCQkJCQkJCQkg Y21kLT5kLmF0c2NmZy5hZGRyZXNzLm9iamVjdElkKSk7CisJCQlicmVhazsKKworCQljYXNlIEFM VEVSX1RTQ09ORklHX0RST1BfTUFQUElORzoKKwkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwg IiV7aWRlbnRpdHl9RCBEUk9QIE1BUFBJTkciLAorCQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1 YWxuYW1lX2lkKGNtZC0+ZC5hdHNjZmcuYWRkcmVzcy5jbGFzc0lkLAorCQkJCQkJCQkJCQkJCQkJ IGNtZC0+ZC5hdHNjZmcuYWRkcmVzcy5vYmplY3RJZCkpOworCQkJdG1wID0gbmV3X29ianRyZWUo IklGIEVYSVNUUyIpOworCQkJYXBwZW5kX2Jvb2xfb2JqZWN0KHRtcCwgInByZXNlbnQiLCBub2Rl LT5taXNzaW5nX29rKTsKKwkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7aWZfZXhpc3Rz fXMiLCB0bXApOworCQkJYnJlYWs7CisKKwkJY2FzZSBBTFRFUl9UU0NPTkZJR19BTFRFUl9NQVBQ SU5HX0ZPUl9UT0tFTjoKKwkJY2FzZSBBTFRFUl9UU0NPTkZJR19SRVBMQUNFX0RJQ1Q6CisJCWNh c2UgQUxURVJfVFNDT05GSUdfUkVQTEFDRV9ESUNUX0ZPUl9UT0tFTjoKKwkJCWFwcGVuZF9vYmpl Y3Rfb2JqZWN0KHJldCwgIiV7aWRlbnRpdHl9RCBBTFRFUiBNQVBQSU5HIiwKKwkJCQkJCQkJIG5l d19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChjbWQtPmQuYXRzY2ZnLmFkZHJlc3MuY2xhc3NJZCwK KwkJCQkJCQkJCQkJCQkJCSBjbWQtPmQuYXRzY2ZnLmFkZHJlc3Mub2JqZWN0SWQpKTsKKwkJCWJy ZWFrOworCX0KKworCS8qIEFkZCB0aGUgYWZmZWN0ZWQgdG9rZW4gbGlzdCwgZm9yIHN1YmNvbW1h bmRzIHRoYXQgaGF2ZSBvbmUgKi8KKwlpZiAobm9kZS0+a2luZCA9PSBBTFRFUl9UU0NPTkZJR19B RERfTUFQUElORyB8fAorCQlub2RlLT5raW5kID09IEFMVEVSX1RTQ09ORklHX0FMVEVSX01BUFBJ TkdfRk9SX1RPS0VOIHx8CisJCW5vZGUtPmtpbmQgPT0gQUxURVJfVFNDT05GSUdfUkVQTEFDRV9E SUNUX0ZPUl9UT0tFTiB8fAorCQlub2RlLT5raW5kID09IEFMVEVSX1RTQ09ORklHX0RST1BfTUFQ UElORykKKwl7CisJCWZvcmVhY2goY2VsbCwgbm9kZS0+dG9rZW50eXBlKQorCQkJbGlzdCA9IGxh cHBlbmQobGlzdCwgbmV3X3N0cmluZ19vYmplY3Qoc3RyVmFsKGxmaXJzdChjZWxsKSkpKTsKKwkJ YXBwZW5kX2FycmF5X29iamVjdChyZXQsICJGT1IgJXt0b2tlbnR5cGU6LCB9SSIsIGxpc3QpOwor CX0KKworCS8qIEFkZCBmdXJ0aGVyIHN1YmNvbW1hbmQtc3BlY2lmaWMgZWxlbWVudHMgKi8KKwlp ZiAobm9kZS0+a2luZCA9PSBBTFRFUl9UU0NPTkZJR19BRERfTUFQUElORyB8fAorCQlub2RlLT5r aW5kID09IEFMVEVSX1RTQ09ORklHX0FMVEVSX01BUFBJTkdfRk9SX1RPS0VOKQorCXsKKwkJLyog QUREIE1BUFBJTkcgYW5kIEFMVEVSIE1BUFBJTkcgRk9SIG5lZWQgYSBsaXN0IG9mIGRpY3Rpb25h cmllcyAqLworCQlsaXN0ID0gTklMOworCQlmb3IgKGkgPSAwOyBpIDwgY21kLT5kLmF0c2NmZy5u ZGljdHM7IGkrKykKKwkJeworCQkJT2JqVHJlZSAgICAqZGljdF9vYmo7CisKKwkJCWRpY3Rfb2Jq ID0gbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFRTRGljdGlvbmFyeVJlbGF0aW9uSWQsCisJ CQkJCQkJCQkJCQkgIGNtZC0+ZC5hdHNjZmcuZGljdElkc1tpXSk7CisJCQlsaXN0ID0gbGFwcGVu ZChsaXN0LAorCQkJCQkJICAgbmV3X29iamVjdF9vYmplY3QoZGljdF9vYmopKTsKKwkJfQorCQlh cHBlbmRfYXJyYXlfb2JqZWN0KHJldCwgIldJVEggJXtkaWN0aW9uYXJpZXM6LCB9RCIsIGxpc3Qp OworCX0KKwllbHNlIGlmIChub2RlLT5raW5kID09IEFMVEVSX1RTQ09ORklHX1JFUExBQ0VfRElD VCB8fAorCQkJIG5vZGUtPmtpbmQgPT0gQUxURVJfVFNDT05GSUdfUkVQTEFDRV9ESUNUX0ZPUl9U T0tFTikKKwl7CisJCS8qIFRoZSBSRVBMQUNFIGZvcm1zIHdhbnQgb2xkIGFuZCBuZXcgZGljdGlv bmFyaWVzICovCisJCUFzc2VydChjbWQtPmQuYXRzY2ZnLm5kaWN0cyA9PSAyKTsKKwkJYXBwZW5k X29iamVjdF9vYmplY3QocmV0LCAiUkVQTEFDRSAle29sZF9kaWN0aW9uYXJ5fUQiLAorCQkJCQkJ CSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoVFNEaWN0aW9uYXJ5UmVsYXRpb25JZCwKKwkJ CQkJCQkJCQkJCQkJIGNtZC0+ZC5hdHNjZmcuZGljdElkc1swXSkpOworCQlhcHBlbmRfb2JqZWN0 X29iamVjdChyZXQsICJXSVRIICV7bmV3X2RpY3Rpb25hcnl9RCIsCisJCQkJCQkJIG5ld19vYmp0 cmVlX2Zvcl9xdWFsbmFtZV9pZChUU0RpY3Rpb25hcnlSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJ CQkgY21kLT5kLmF0c2NmZy5kaWN0SWRzWzFdKSk7CisJfQorCisJcmV0dXJuIHJldDsKK30KKwor LyoKKyAqIERlcGFyc2UgYW4gQUxURVIgVEVYVCBTRUFSQ0ggRElDVElPTkFSWSBzdGF0ZW1lbnQu CisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIEFMVEVSIFRFWFQgU0VBUkNIIERJQ1RJT05BUlkg JXtpZGVudGl0eX1EICgle2RlZmluaXRpb246LCB9cykKKyAqLworc3RhdGljIE9ialRyZWUgKgor ZGVwYXJzZV9BbHRlclRTRGljdGlvbmFyeVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRy ZWUpCit7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKnRtcDsKKwlEYXR1bQkJb3B0 aW9uczsKKwlMaXN0CSAgICpkZWZpbml0aW9uID0gTklMOworCWJvb2wJCWlzbnVsbDsKKwlIZWFw VHVwbGUJdHNkVHVwOworCUZvcm1fcGdfdHNfZGljdCB0c2RGb3JtOworCisJdHNkVHVwID0gU2Vh cmNoU3lzQ2FjaGUxKFRTRElDVE9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJZCkpOworCWlm ICghSGVhcFR1cGxlSXNWYWxpZCh0c2RUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3Vw IGZhaWxlZCBmb3IgdGV4dCBzZWFyY2ggZGljdGlvbmFyeSB3aXRoIE9JRCAldSIsCisJCQkgb2Jq ZWN0SWQpOworCXRzZEZvcm0gPSAoRm9ybV9wZ190c19kaWN0KSBHRVRTVFJVQ1QodHNkVHVwKTsK KworCS8qCisJICogQWRkIHRoZSBkZWZpbml0aW9uIGxpc3QgYWNjb3JkaW5nIHRvIHRoZSBwZ190 c19kaWN0IGRpY3Rpbml0b3B0aW9uCisJICogY29sdW1uCisJICovCisJb3B0aW9ucyA9IFN5c0Nh Y2hlR2V0QXR0cihUU0RJQ1RPSUQsIHRzZFR1cCwKKwkJCQkJCQkgIEFudW1fcGdfdHNfZGljdF9k aWN0aW5pdG9wdGlvbiwKKwkJCQkJCQkgICZpc251bGwpOworCXRtcCA9IG5ld19vYmp0cmVlKCIi KTsKKwlpZiAoIWlzbnVsbCkKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wLCAiJXtvcHRpb25z fXMiLCAib3B0aW9ucyIsCisJCQkJCQkJIFRleHREYXR1bUdldENTdHJpbmcob3B0aW9ucykpOwor CWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisKKwlkZWZpbml0aW9uID0gbGFwcGVu ZChkZWZpbml0aW9uLCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCXJldCA9IG5ld19vYmp0 cmVlX1ZBKCJBTFRFUiBURVhUIFNFQVJDSCBESUNUSU9OQVJZICV7aWRlbnRpdHl9RCAoJXtkZWZp bml0aW9uOiwgfXMpIiwgMiwKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJ CQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZSh0c2RGb3JtLT5kaWN0bmFtZXNwYWNlLAorCQkJ CQkJCQkJCQkJICBOYW1lU3RyKHRzZEZvcm0tPmRpY3RuYW1lKSksCisJCQkJCQkgImRlZmluaXRp b24iLCBPYmpUeXBlQXJyYXksIGRlZmluaXRpb24pOworCisJUmVsZWFzZVN5c0NhY2hlKHRzZFR1 cCk7CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIGRlcGFyc2VfVmlld1N0bXQKKyAqCQlkZXBh cnNlIGEgVmlld1N0bXQKKyAqCisgKiBHaXZlbiBhIHZpZXcgT0lEIGFuZCB0aGUgcGFyc2UgdHJl ZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbiBPYmpUcmVlCisgKiByZXByZXNlbnRpbmcgdGhl IGNyZWF0aW9uIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSAle29y X3JlcGxhY2V9cyAle3BlcnNpc3RlbmNlfXMgVklFVyAle2lkZW50aXR5fUQgQVMgJXtxdWVyeX1z CisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfVmlld1N0bXQoT2lkIG9iamVjdElkLCBO b2RlICpwYXJzZXRyZWUpCit7CisJVmlld1N0bXQgICAqbm9kZSA9IChWaWV3U3RtdCAqKSBwYXJz ZXRyZWU7CisJT2JqVHJlZSAgICAqcmV0OworCVJlbGF0aW9uCXJlbGF0aW9uOworCisJcmVsYXRp b24gPSByZWxhdGlvbl9vcGVuKG9iamVjdElkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0ID0g bmV3X29ianRyZWVfVkEoIkNSRUFURSAle29yX3JlcGxhY2V9cyAle3BlcnNpc3RlbmNlfXMgVklF VyAle2lkZW50aXR5fUQgQVMgJXtxdWVyeX1zIiwgNCwKKwkJCQkJCSAib3JfcmVwbGFjZSIsIE9i alR5cGVTdHJpbmcsCisJCQkJCQkgbm9kZS0+cmVwbGFjZSA/ICJPUiBSRVBMQUNFIiA6ICIiLAor CQkJCQkJICJwZXJzaXN0ZW5jZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgZ2V0X3BlcnNpc3Rl bmNlX3N0cihyZWxhdGlvbi0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSksCisJCQkJCQkgImlkZW50 aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUocmVs YXRpb24tPnJkX3JlbC0+cmVsbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJICBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWxhdGlvbikpLAorCQkJCQkJICJxdWVyeSIsIE9ialR5cGVTdHJpbmcsCisJ CQkJCQkgcGdfZ2V0X3ZpZXdkZWZfc3RyaW5nKG9iamVjdElkKSk7CisKKwlyZWxhdGlvbl9jbG9z ZShyZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsKKwlyZXR1cm4gcmV0OworfQorCisvKgorICog RGVwYXJzZSBDUkVBVEUgTWF0ZXJpYWxpemVkIFZpZXcgc3RhdGVtZW50LCBpdCBpcyBhIHZhcmlh bnQgb2YKKyAqIENyZWF0ZVRhYmxlQXNTdG10CisgKgorICogTm90ZSB0aGF0IENSRUFURSBUQUJM RSBBUyBTRUxFQ1QgSU5UTyBjYW4gYWxzbyBiZSBkZXBhcnNlZCBieQorICogZGVwYXJzZV9DcmVh dGVUYWJsZUFzU3RtdCB0byByZW1vdmUgdGhlIFNFTEVDVCBJTlRPIGNsYXVzZS4KKyAqCisgKiBW ZXJib3NlIHN5bnRheAorICogQ1JFQVRFICV7cGVyc2lzdGVuY2V9cyBbTUFURVJJQUxJWkVEIFZJ RVcgfCBUQUJMRV0gJXtpZl9ub3RfZXhpc3RzfXMKKyAqIAkJJXtpZGVudGl0eX1EICV7Y29sdW1u c31zIFsle29uX2NvbW1pdH1zXSAle3RhYmxlc3BhY2V9cworICogIAkJQVMgJXtxdWVyeX1zICV7 d2l0aF9ub19kYXRhfXMiCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRlVGFi bGVBc1N0bXRfdmFuaWxsYShPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlDcmVh dGVUYWJsZUFzU3RtdCAqbm9kZSA9IChDcmVhdGVUYWJsZUFzU3RtdCAqKSBwYXJzZXRyZWU7CisJ UmVsYXRpb24JcmVsYXRpb24gPSByZWxhdGlvbl9vcGVuKG9iamVjdElkLCBBY2Nlc3NTaGFyZUxv Y2spOworCU9ialRyZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXA7CisJT2JqVHJlZSAgICAq dG1wMjsKKwljaGFyCSAgICpmbXQ7CisJTGlzdAkgICAqbGlzdCA9IE5JTDsKKwlMaXN0Q2VsbCAg ICpjZWxsOworCisJLyogUmVqZWN0IHVuc3VwcG9ydGVkIGNhc2UgcmlnaHQgYXdheS4gKi8KKwlp ZiAoKChRdWVyeSAqKSAobm9kZS0+cXVlcnkpKS0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkp CisJCWVsb2coRVJST1IsICJ1bmltcGxlbWVudGVkIGRlcGFyc2Ugb2YgQ1JFQVRFIFRBQkxFIEFT IEVYRUNVVEUiKTsKKworCS8qCisJICogTm90ZSB0aGF0IElOU0VSVCBJTlRPIGlzIGRlcGFyc2Vk IGFzIENSRUFURSBUQUJMRSBBUy4gIFRoZXkgYXJlCisJICogZnVuY3Rpb25hbGx5IGVxdWl2YWxl bnQgc3lub255bXMgc28gdGhlcmUgaXMgbm8gaGFybSBmcm9tIHRoaXMuCisJICovCisJaWYgKG5v ZGUtPm9ianR5cGUgPT0gT0JKRUNUX01BVFZJRVcpCisJCWZtdCA9ICJDUkVBVEUgJXtwZXJzaXN0 ZW5jZX1zIE1BVEVSSUFMSVpFRCBWSUVXICV7aWZfbm90X2V4aXN0c31zICV7aWRlbnRpdHl9RCI7 CisJZWxzZQorCQlmbXQgPSAiQ1JFQVRFICV7cGVyc2lzdGVuY2V9cyBUQUJMRSAle2lmX25vdF9l eGlzdHN9cyAle2lkZW50aXR5fUQiOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoZm10LCAzLAor CQkJCQkJICJwZXJzaXN0ZW5jZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgZ2V0X3BlcnNpc3Rl bmNlX3N0cihub2RlLT5pbnRvLT5yZWwtPnJlbHBlcnNpc3RlbmNlKSwKKwkJCQkJCSAiaWZfbm90 X2V4aXN0cyIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgbm9kZS0+aWZfbm90X2V4aXN0cyA/ICJJ RiBOT1QgRVhJU1RTIiA6ICIiLAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJ CQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFJlbGF0aW9uUmVsYXRpb25JZCwKKwkJ CQkJCQkJCQkJCQkgb2JqZWN0SWQpKTsKKworCS8qIENPTFVNTlMgY2xhdXNlICovCisJaWYgKG5v ZGUtPmludG8tPmNvbE5hbWVzKQorCXsKKwkJZm9yZWFjaChjZWxsLCBub2RlLT5pbnRvLT5jb2xO YW1lcykKKwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0KHN0clZhbChs Zmlyc3QoY2VsbCkpKSk7CisKKwkJdG1wID0gbmV3X29ianRyZWVfVkEoIigle2NvbHVtbnM6LCB9 SSkiLCAxLAorCQkJCQkJCSAiY29sdW1ucyIsIE9ialR5cGVBcnJheSwgbGlzdCk7CisJfQorCWVs c2UKKwkJdG1wID0gbmV3X29ianRyZWVfVkEoIiIsIDEsCisJCQkJCQkJICJwcmVzZW50IiwgT2Jq VHlwZUJvb2wsIGZhbHNlKTsKKworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7Y29sdW1u c31zIiwgdG1wKTsKKworCS8qIFVTSU5HIGNsYXVzZSAqLworCXRtcCA9IG5ld19vYmp0cmVlKCJV U0lORyIpOworCWlmIChub2RlLT5pbnRvLT5hY2Nlc3NNZXRob2QpCisJCWFwcGVuZF9zdHJpbmdf b2JqZWN0KHRtcCwgIiV7YWNjZXNzX21ldGhvZH1JIiwgImFjY2Vzc19tZXRob2QiLAorCQkJCQkJ CSBub2RlLT5pbnRvLT5hY2Nlc3NNZXRob2QpOworCWVsc2UKKwl7CisJCWFwcGVuZF9udWxsX29i amVjdCh0bXAsICIle2FjY2Vzc19tZXRob2R9SSIpOworCQlhcHBlbmRfbm90X3ByZXNlbnQodG1w KTsKKwl9CisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXthY2Nlc3NfbWV0aG9kfXMiLCB0 bXApOworCisJLyogV0lUSCBjbGF1c2UgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZSgiV0lUSCIpOwor CWxpc3QgPSBOSUw7CisKKwlmb3JlYWNoKGNlbGwsIG5vZGUtPmludG8tPm9wdGlvbnMpCisJewor CQlEZWZFbGVtICAgICpvcHQgPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7CisKKwkJdG1wMiA9 IGRlcGFyc2VfRGVmRWxlbShvcHQsIGZhbHNlKTsKKwkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3 X29iamVjdF9vYmplY3QodG1wMikpOworCX0KKworCWlmIChsaXN0KQorCQlhcHBlbmRfYXJyYXlf b2JqZWN0KHRtcCwgIigle3dpdGg6LCB9cykiLCBsaXN0KTsKKwllbHNlCisJCWFwcGVuZF9ub3Rf cHJlc2VudCh0bXApOworCisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXt3aXRoX2NsYXVz ZX1zIiwgdG1wKTsKKworCS8qIE9OIENPTU1JVCBjbGF1c2UuICBDUkVBVEUgTUFURVJJQUxJWkVE IFZJRVcgZG9lc24ndCBoYXZlIG9uZSAqLworCWlmIChub2RlLT5vYmp0eXBlID09IE9CSkVDVF9U QUJMRSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtvbl9jb21taXR9cyIsCisJCQkJ CQkJIGRlcGFyc2VfT25Db21taXRDbGF1c2Uobm9kZS0+aW50by0+b25Db21taXQpKTsKKworCS8q IFRBQkxFU1BBQ0UgY2xhdXNlICovCisJdG1wID0gbmV3X29ianRyZWUoIlRBQkxFU1BBQ0UgJXt0 YWJsZXNwYWNlfUkiKTsKKwlpZiAobm9kZS0+aW50by0+dGFibGVTcGFjZU5hbWUpCisJCWFwcGVu ZF9zdHJpbmdfb2JqZWN0KHRtcCwgIiV7dGFibGVzcGFjZX1zIiwgInRhYmxlc3BhY2UiLAorCQkJ CQkJCSBub2RlLT5pbnRvLT50YWJsZVNwYWNlTmFtZSk7CisJZWxzZQorCXsKKwkJYXBwZW5kX251 bGxfb2JqZWN0KHRtcCwgIiV7dGFibGVzcGFjZX1JIik7CisJCWFwcGVuZF9ub3RfcHJlc2VudCh0 bXApOworCX0KKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle3RhYmxlc3BhY2V9cyIsIHRt cCk7CisKKwkvKiBBZGQgdGhlIHF1ZXJ5ICovCisJQXNzZXJ0KElzQShub2RlLT5xdWVyeSwgUXVl cnkpKTsKKwlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICJBUyAle3F1ZXJ5fXMiLCAicXVlcnki LAorCQkJCQkJIHBnX2dldF9xdWVyeWRlZigoUXVlcnkgKikgbm9kZS0+cXVlcnksIGZhbHNlKSk7 CisKKwkvKiBBZGQgYSBXSVRIIE5PIERBVEEgY2xhdXNlICovCisJdG1wID0gbmV3X29ianRyZWVf VkEoIldJVEggTk8gREFUQSIsIDEsCisJCQkJCQkgInByZXNlbnQiLCBPYmpUeXBlQm9vbCwKKwkJ CQkJCSBub2RlLT5pbnRvLT5za2lwRGF0YSA/IHRydWUgOiBmYWxzZSk7CisJYXBwZW5kX29iamVj dF9vYmplY3QocmV0LCAiJXt3aXRoX25vX2RhdGF9cyIsIHRtcCk7CisKKwlyZWxhdGlvbl9jbG9z ZShyZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisg KiBEZXBhcnNlIGEgQ3JlYXRlVHJpZ1N0bXQgKENSRUFURSBUUklHR0VSKQorICoKKyAqIEdpdmVu IGEgdHJpZ2dlciBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJu IGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisg KiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFICV7b3JfcmVwbGFjZX1zICV7Y29uc3RyYWludH1z IFRSSUdHRVIgJXtuYW1lfUkgJXt0aW1lfXMKKyAqICV7ZXZlbnRzOiBPUiB9cyBPTiAle3JlbGF0 aW9ufUQgJXtmcm9tX3RhYmxlfXMgJXtjb25zdHJhaW50X2F0dHJzOiB9cworICogJXtyZWZlcmVu Y2luZzogfXMgRk9SIEVBQ0ggJXtmb3JfZWFjaH1zICV7d2hlbn1zIEVYRUNVVEUgUFJPQ0VEVVJF CisgKiAle2Z1bmN0aW9ufXMKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9DcmVhdGVU cmlnU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlDcmVhdGVUcmlnU3Rt dCAqbm9kZSA9IChDcmVhdGVUcmlnU3RtdCAqKSBwYXJzZXRyZWU7CisJUmVsYXRpb24JcGdfdHJp Z2dlcjsKKwlIZWFwVHVwbGUJdHJpZ1R1cDsKKwlGb3JtX3BnX3RyaWdnZXIgdHJpZ0Zvcm07CisJ T2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKnRtcF9vYmo7CisJaW50CQkJdGduYXJnczsK KwlMaXN0CSAgICpsaXN0ID0gTklMOworCUxpc3QJICAgKmV2ZW50czsKKwljaGFyCSAgICp0cmln dGltaW5nOworCWNoYXIJICAgKnRnb2xkdGFibGU7CisJY2hhcgkgICAqdGduZXd0YWJsZTsKKwlE YXR1bQkJdmFsdWU7CisJYm9vbAkJaXNudWxsOworCisJcGdfdHJpZ2dlciA9IHRhYmxlX29wZW4o VHJpZ2dlclJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwl0cmlnVHVwID0gZ2V0X2Nh dGFsb2dfb2JqZWN0X2J5X29pZChwZ190cmlnZ2VyLCBBbnVtX3BnX3RyaWdnZXJfb2lkLCBvYmpl Y3RJZCk7CisJdHJpZ0Zvcm0gPSAoRm9ybV9wZ190cmlnZ2VyKSBHRVRTVFJVQ1QodHJpZ1R1cCk7 CisKKwl0cmlndGltaW5nID0gbm9kZS0+dGltaW5nID09IFRSSUdHRVJfVFlQRV9CRUZPUkUgPyAi QkVGT1JFIiA6CisJCW5vZGUtPnRpbWluZyA9PSBUUklHR0VSX1RZUEVfQUZURVIgPyAiQUZURVIi IDoKKwkJbm9kZS0+dGltaW5nID09IFRSSUdHRVJfVFlQRV9JTlNURUFEID8gIklOU1RFQUQgT0Yi IDoKKwkJTlVMTDsKKwlpZiAoIXRyaWd0aW1pbmcpCisJCWVsb2coRVJST1IsICJ1bnJlY29nbml6 ZWQgdHJpZ2dlciB0aW1pbmcgdHlwZSAlZCIsIG5vZGUtPnRpbWluZyk7CisKKwlyZXQgPSBuZXdf b2JqdHJlZV9WQSgiQ1JFQVRFICV7b3JfcmVwbGFjZX1zICV7Y29uc3RyYWludH1zIFRSSUdHRVIg JXtuYW1lfUkgJXt0aW1lfXMiLCA0LAorCQkJCQkJICJvcl9yZXBsYWNlIiwgT2JqVHlwZVN0cmlu Zywgbm9kZS0+cmVwbGFjZSA/ICJPUiBSRVBMQUNFIiA6ICIiLAorCQkJCQkJICJjb25zdHJhaW50 IiwgT2JqVHlwZVN0cmluZywgbm9kZS0+aXNjb25zdHJhaW50ID8gIkNPTlNUUkFJTlQiIDogIiIs CisJCQkJCQkgIm5hbWUiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT50cmlnbmFtZSwKKwkJCQkJCSAi dGltZSIsIE9ialR5cGVTdHJpbmcsIHRyaWd0aW1pbmcpOworCisJLyoKKwkgKiBEZWNvZGUgdGhl IGV2ZW50cyB0aGF0IHRoZSB0cmlnZ2VyIGZpcmVzIGZvci4gIFRoZSBvdXRwdXQgaXMgYSBsaXN0 OyBpbgorCSAqIG1vc3QgY2FzZXMgaXQgd2lsbCBqdXN0IGJlIGEgc3RyaW5nIHdpdGggdGhlIGV2 ZW50IG5hbWUsIGJ1dCB3aGVuCisJICogdGhlcmUncyBhbiBVUERBVEUgd2l0aCBhIGxpc3Qgb2Yg Y29sdW1ucywgd2UgcmV0dXJuIGEgSlNPTiBvYmplY3QuCisJICovCisJZXZlbnRzID0gTklMOwor CWlmIChub2RlLT5ldmVudHMgJiBUUklHR0VSX1RZUEVfSU5TRVJUKQorCQlldmVudHMgPSBsYXBw ZW5kKGV2ZW50cywgbmV3X3N0cmluZ19vYmplY3QoIklOU0VSVCIpKTsKKwlpZiAobm9kZS0+ZXZl bnRzICYgVFJJR0dFUl9UWVBFX0RFTEVURSkKKwkJZXZlbnRzID0gbGFwcGVuZChldmVudHMsIG5l d19zdHJpbmdfb2JqZWN0KCJERUxFVEUiKSk7CisJaWYgKG5vZGUtPmV2ZW50cyAmIFRSSUdHRVJf VFlQRV9UUlVOQ0FURSkKKwkJZXZlbnRzID0gbGFwcGVuZChldmVudHMsIG5ld19zdHJpbmdfb2Jq ZWN0KCJUUlVOQ0FURSIpKTsKKwlpZiAobm9kZS0+ZXZlbnRzICYgVFJJR0dFUl9UWVBFX1VQREFU RSkKKwl7CisJCWlmIChub2RlLT5jb2x1bW5zID09IE5JTCkKKwkJeworCQkJZXZlbnRzID0gbGFw cGVuZChldmVudHMsIG5ld19zdHJpbmdfb2JqZWN0KCJVUERBVEUiKSk7CisJCX0KKwkJZWxzZQor CQl7CisJCQlPYmpUcmVlICAgICp1cGRhdGU7CisJCQlMaXN0Q2VsbCAgICpjZWxsOworCQkJTGlz dAkgICAqY29scyA9IE5JTDsKKworCQkJLyoKKwkJCSAqIEN1cnJlbnRseSBvbmx5IFVQREFURSBP RiBjYW4gYmUgb2JqZWN0cyBpbiB0aGUgb3V0cHV0IEpTT04sIGJ1dAorCQkJICogd2UgYWRkIGEg ImtpbmQiIGVsZW1lbnQgc28gdGhhdCB1c2VyIGNvZGUgY2FuIGRpc3Rpbmd1aXNoCisJCQkgKiBw b3NzaWJsZSBmdXR1cmUgbmV3IGV2ZW50IHR5cGVzLgorCQkJICovCisJCQl1cGRhdGUgPSBuZXdf b2JqdHJlZV9WQSgiVVBEQVRFIE9GIiwgMSwKKwkJCQkJCQkJCSJraW5kIiwgT2JqVHlwZVN0cmlu ZywgInVwZGF0ZV9vZiIpOworCisJCQlmb3JlYWNoKGNlbGwsIG5vZGUtPmNvbHVtbnMpCisJCQl7 CisJCQkJY2hhcgkgICAqY29sbmFtZSA9IHN0clZhbChsZmlyc3QoY2VsbCkpOworCisJCQkJY29s cyA9IGxhcHBlbmQoY29scywgbmV3X3N0cmluZ19vYmplY3QoY29sbmFtZSkpOworCQkJfQorCisJ CQlhcHBlbmRfYXJyYXlfb2JqZWN0KHVwZGF0ZSwgIiV7Y29sdW1uczosIH1JIiwgY29scyk7CisK KwkJCWV2ZW50cyA9IGxhcHBlbmQoZXZlbnRzLCBuZXdfb2JqZWN0X29iamVjdCh1cGRhdGUpKTsK KwkJfQorCX0KKwlhcHBlbmRfYXJyYXlfb2JqZWN0KHJldCwgIiV7ZXZlbnRzOiBPUiB9cyIsIGV2 ZW50cyk7CisKKwl0bXBfb2JqID0gbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFJlbGF0aW9u UmVsYXRpb25JZCwKKwkJCQkJCQkJCQkgdHJpZ0Zvcm0tPnRncmVsaWQpOworCWFwcGVuZF9vYmpl Y3Rfb2JqZWN0KHJldCwgIk9OICV7cmVsYXRpb259RCIsIHRtcF9vYmopOworCisJdG1wX29iaiA9 IG5ld19vYmp0cmVlKCJGUk9NIik7CisJaWYgKHRyaWdGb3JtLT50Z2NvbnN0cnJlbGlkKQorCXsK KwkJT2JqVHJlZSAgICAqcmVsOworCisJCXJlbCA9IG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9p ZChSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJICB0cmlnRm9ybS0+dGdjb25zdHJyZWxp ZCk7CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmosICIle3JlbGF0aW9ufUQiLCByZWwp OworCX0KKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXBfb2JqKTsKKwlhcHBlbmRfb2Jq ZWN0X29iamVjdChyZXQsICIle2Zyb21fdGFibGV9cyIsIHRtcF9vYmopOworCisJaWYgKG5vZGUt PmlzY29uc3RyYWludCkKKwl7CisJCWlmICghbm9kZS0+ZGVmZXJyYWJsZSkKKwkJCWxpc3QgPSBs YXBwZW5kKGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0KCJOT1QiKSk7CisJCWxpc3QgPSBsYXBwZW5k KGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0KCJERUZFUlJBQkxFIElOSVRJQUxMWSIpKTsKKwkJaWYg KG5vZGUtPmluaXRkZWZlcnJlZCkKKwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19zdHJpbmdf b2JqZWN0KCJERUZFUlJFRCIpKTsKKwkJZWxzZQorCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3 X3N0cmluZ19vYmplY3QoIklNTUVESUFURSIpKTsKKwl9CisJYXBwZW5kX2FycmF5X29iamVjdChy ZXQsICIle2NvbnN0cmFpbnRfYXR0cnM6IH1zIiwgbGlzdCk7CisKKwlsaXN0ID0gTklMOworCXZh bHVlID0gZmFzdGdldGF0dHIodHJpZ1R1cCwgQW51bV9wZ190cmlnZ2VyX3Rnb2xkdGFibGUsCisJ CQkJCQlSZWxhdGlvbkdldERlc2NyKHBnX3RyaWdnZXIpLCAmaXNudWxsKTsKKwlpZiAoIWlzbnVs bCkKKwkJdGdvbGR0YWJsZSA9IE5hbWVTdHIoKkRhdHVtR2V0TmFtZSh2YWx1ZSkpOworCWVsc2UK KwkJdGdvbGR0YWJsZSA9IE5VTEw7CisJdmFsdWUgPSBmYXN0Z2V0YXR0cih0cmlnVHVwLCBBbnVt X3BnX3RyaWdnZXJfdGduZXd0YWJsZSwKKwkJCQkJCVJlbGF0aW9uR2V0RGVzY3IocGdfdHJpZ2dl ciksICZpc251bGwpOworCWlmICghaXNudWxsKQorCQl0Z25ld3RhYmxlID0gTmFtZVN0cigqRGF0 dW1HZXROYW1lKHZhbHVlKSk7CisJZWxzZQorCQl0Z25ld3RhYmxlID0gTlVMTDsKKwlpZiAodGdv bGR0YWJsZSAhPSBOVUxMIHx8IHRnbmV3dGFibGUgIT0gTlVMTCkKKwl7CisJCWxpc3QgPSBsYXBw ZW5kKGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0KCJSRUZFUkVOQ0lORyIpKTsKKworCQlpZiAodGdv bGR0YWJsZSAhPSBOVUxMKQorCQl7CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5n X29iamVjdCgiT0xEIFRBQkxFIEFTIikpOworCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X3N0 cmluZ19vYmplY3QodGdvbGR0YWJsZSkpOworCQl9CisJCWlmICh0Z25ld3RhYmxlICE9IE5VTEwp CisJCXsKKwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0KCJORVcgVEFC TEUgQVMiKSk7CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdCh0Z25l d3RhYmxlKSk7CisJCX0KKwl9CisJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICIle3JlZmVyZW5j aW5nOiB9cyIsIGxpc3QpOworCisJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiRk9SIEVBQ0gg JXtmb3JfZWFjaH1zIiwgImZvcl9lYWNoIiwKKwkJCQkJCSBub2RlLT5yb3cgPyAiUk9XIiA6ICJT VEFURU1FTlQiKTsKKworCXRtcF9vYmogPSBuZXdfb2JqdHJlZSgiV0hFTiIpOworCWlmIChub2Rl LT53aGVuQ2xhdXNlKQorCXsKKwkJTm9kZQkgICAqd2hlbkNsYXVzZTsKKworCQl2YWx1ZSA9IGZh c3RnZXRhdHRyKHRyaWdUdXAsIEFudW1fcGdfdHJpZ2dlcl90Z3F1YWwsCisJCQkJCQkJUmVsYXRp b25HZXREZXNjcihwZ190cmlnZ2VyKSwgJmlzbnVsbCk7CisJCWlmIChpc251bGwpCisJCQllbG9n KEVSUk9SLCAibnVsbCB0Z3F1YWwgZm9yIHRyaWdnZXIgXCIlc1wiIiwKKwkJCQkgTmFtZVN0cih0 cmlnRm9ybS0+dGduYW1lKSk7CisKKwkJd2hlbkNsYXVzZSA9IHN0cmluZ1RvTm9kZShUZXh0RGF0 dW1HZXRDU3RyaW5nKHZhbHVlKSk7CisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIo JXtjbGF1c2V9cykiLCAiY2xhdXNlIiwKKwkJCQkJCQkgcGdfZ2V0X3RyaWdnZXJfd2hlbmNsYXVz ZSh0cmlnRm9ybSwKKwkJCQkJCQkJCQkJCQkgICB3aGVuQ2xhdXNlLAorCQkJCQkJCQkJCQkJCSAg IGZhbHNlKSk7CisJfQorCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOworCWFw cGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7d2hlbn1zIiwgdG1wX29iaik7CisKKwl0bXBfb2Jq ID0gbmV3X29ianRyZWVfVkEoIiV7ZnVuY25hbWV9RCIsIDEsCisJCQkJCQkJImZ1bmNuYW1lIiwg T2JqVHlwZU9iamVjdCwKKwkJCQkJCQluZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2Vk dXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJdHJpZ0Zvcm0tPnRnZm9pZCkpOworCWxpc3Qg PSBOSUw7CisJdGduYXJncyA9IHRyaWdGb3JtLT50Z25hcmdzOworCWlmICh0Z25hcmdzID4gMCkK Kwl7CisJCWNoYXIJICAgKnA7CisJCWludAkJCWk7CisKKwkJdmFsdWUgPSBmYXN0Z2V0YXR0cih0 cmlnVHVwLCBBbnVtX3BnX3RyaWdnZXJfdGdhcmdzLAorCQkJCQkJCVJlbGF0aW9uR2V0RGVzY3Io cGdfdHJpZ2dlciksICZpc251bGwpOworCQlpZiAoaXNudWxsKQorCQkJZWxvZyhFUlJPUiwgIm51 bGwgdGdhcmdzIGZvciB0cmlnZ2VyIFwiJXNcIiIsCisJCQkJIE5hbWVTdHIodHJpZ0Zvcm0tPnRn bmFtZSkpOworCQlwID0gKGNoYXIgKikgVkFSREFUQV9BTlkoRGF0dW1HZXRCeXRlYVBQKHZhbHVl KSk7CisJCWZvciAoaSA9IDA7IGkgPCB0Z25hcmdzOyBpKyspCisJCXsKKwkJCWxpc3QgPSBsYXBw ZW5kKGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0KHApKTsKKwkJCS8qIGFkdmFuY2UgcCB0byBuZXh0 IHN0cmluZyBlbWJlZGRlZCBpbiB0Z2FyZ3MgKi8KKwkJCXdoaWxlICgqcCkKKwkJCQlwKys7CisJ CQlwKys7CisJCX0KKwl9CisKKwlhcHBlbmRfZm9ybWF0X3N0cmluZyh0bXBfb2JqLCAiKCIpOwor CWFwcGVuZF9hcnJheV9vYmplY3QodG1wX29iaiwgIiV7YXJnczosIH1MIiwgbGlzdCk7CS8qIG1p Z2h0IGJlIE5JTCAqLworCWFwcGVuZF9mb3JtYXRfc3RyaW5nKHRtcF9vYmosICIpIik7CisKKwlh cHBlbmRfb2JqZWN0X29iamVjdChyZXQsICJFWEVDVVRFIEZVTkNUSU9OICV7ZnVuY3Rpb259cyIs IHRtcF9vYmopOworCisJdGFibGVfY2xvc2UocGdfdHJpZ2dlciwgQWNjZXNzU2hhcmVMb2NrKTsK KworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ3JlYXRlVXNlck1hcHBpbmdT dG10IChDUkVBVEUgVVNFUiBNQVBQSU5HKQorICoKKyAqIEdpdmVuIGEgVXNlciBNYXBwaW5nIE9J RCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LAorICogcmV0dXJuIGFuIE9ialRy ZWUgcmVwcmVzZW50aW5nIHRoZSBDUkVBVEUgVVNFUiBNQVBQSU5HIGNvbW1hbmQuCisgKgorICog VmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSBVU0VSIE1BUFBJTkcgRk9SICV7cm9sZX1SIFNFUlZF UiAle3NlcnZlcn1JCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRlVXNlck1h cHBpbmdTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUNyZWF0ZVVzZXJN YXBwaW5nU3RtdCAqbm9kZSA9IChDcmVhdGVVc2VyTWFwcGluZ1N0bXQgKikgcGFyc2V0cmVlOwor CU9ialRyZWUgICAgKnJldDsKKwlSZWxhdGlvbglyZWw7CisJSGVhcFR1cGxlCXRwOworCUZvcm1f cGdfdXNlcl9tYXBwaW5nIGZvcm07CisJRm9yZWlnblNlcnZlciAqc2VydmVyOworCisJcmVsID0g dGFibGVfb3BlbihVc2VyTWFwcGluZ1JlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJ LyoKKwkgKiBMb29rdXAgb2JqZWN0IGluIHRoZSBjYXRhbG9nLCBzbyB3ZSBkb24ndCBoYXZlIHRv IGRlYWwgd2l0aAorCSAqIGN1cnJlbnRfdXNlciBhbmQgc3VjaC4KKwkgKi8KKwl0cCA9IFNlYXJj aFN5c0NhY2hlMShVU0VSTUFQUElOR09JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJZCkpOwor CWlmICghSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAg ZmFpbGVkIGZvciB1c2VyIG1hcHBpbmcgd2l0aCBPSUQgJXUiLAorCQkJIG9iamVjdElkKTsKKwor CWZvcm0gPSAoRm9ybV9wZ191c2VyX21hcHBpbmcpIEdFVFNUUlVDVCh0cCk7CisKKwlzZXJ2ZXIg PSBHZXRGb3JlaWduU2VydmVyKGZvcm0tPnVtc2VydmVyKTsKKworCXJldCA9IG5ld19vYmp0cmVl X1ZBKCJDUkVBVEUgVVNFUiBNQVBQSU5HIEZPUiAle3JvbGV9UiBTRVJWRVIgJXtzZXJ2ZXJ9SSAl e2dlbmVyaWNfb3B0aW9uc31zIiwgMywKKwkJCQkJCSAicm9sZSIsIE9ialR5cGVPYmplY3QsCisJ CQkJCQkgbmV3X29ianRyZWVfZm9yX3JvbGVfaWQoZm9ybS0+dW11c2VyKSwKKwkJCQkJCSAic2Vy dmVyIiwgT2JqVHlwZVN0cmluZywgc2VydmVyLT5zZXJ2ZXJuYW1lLAorCQkJCQkJICJnZW5lcmlj X29wdGlvbnMiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIGRlcGFyc2VfRmR3T3B0aW9ucyhub2Rl LT5vcHRpb25zLCBOVUxMLCBmYWxzZSkpOworCisJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwl0YWJs ZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCXJldHVybiByZXQ7Cit9CisKKy8qCisg KiBkZXBhcnNlX0FsdGVyVXNlck1hcHBpbmcKKyAqCisgKiBHaXZlbiBhIFVzZXIgTWFwcGluZyBP SUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuCisgKiBPYmpU cmVlIHJlcHJlc2VudGluZyB0aGUgYWx0ZXIgY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRh eAorICogQUxURVIgVVNFUiBNQVBQSU5HIEZPUiAle3JvbGV9UiBTRVJWRVIgJXtzZXJ2ZXJ9SQor ICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0FsdGVyVXNlck1hcHBpbmdTdG10KE9pZCBv YmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUFsdGVyVXNlck1hcHBpbmdTdG10ICpub2Rl ID0gKEFsdGVyVXNlck1hcHBpbmdTdG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQ7 CisJUmVsYXRpb24JcmVsOworCUhlYXBUdXBsZQl0cDsKKwlGb3JtX3BnX3VzZXJfbWFwcGluZyBm b3JtOworCUZvcmVpZ25TZXJ2ZXIgKnNlcnZlcjsKKworCXJlbCA9IHRhYmxlX29wZW4oVXNlck1h cHBpbmdSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCS8qCisJICogTG9va3VwIG9i amVjdCBpbiB0aGUgY2F0YWxvZywgc28gd2UgZG9uJ3QgaGF2ZSB0byBkZWFsIHdpdGgKKwkgKiBj dXJyZW50X3VzZXIgYW5kIHN1Y2guCisJICovCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoVVNFUk1B UFBJTkdPSUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlz VmFsaWQodHApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdXNlciBt YXBwaW5nIHdpdGggT0lEICV1IiwKKwkJCSBvYmplY3RJZCk7CisKKwlmb3JtID0gKEZvcm1fcGdf dXNlcl9tYXBwaW5nKSBHRVRTVFJVQ1QodHApOworCisJc2VydmVyID0gR2V0Rm9yZWlnblNlcnZl cihmb3JtLT51bXNlcnZlcik7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgVVNFUiBN QVBQSU5HIEZPUiAle3JvbGV9UiBTRVJWRVIgJXtzZXJ2ZXJ9SSAle2dlbmVyaWNfb3B0aW9uc31z IiwgMywKKwkJCQkJCSAicm9sZSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVf Zm9yX3JvbGVfaWQoZm9ybS0+dW11c2VyKSwKKwkJCQkJCSAic2VydmVyIiwgT2JqVHlwZVN0cmlu Zywgc2VydmVyLT5zZXJ2ZXJuYW1lLAorCQkJCQkJICJnZW5lcmljX29wdGlvbnMiLCBPYmpUeXBl T2JqZWN0LAorCQkJCQkJIGRlcGFyc2VfRmR3T3B0aW9ucyhub2RlLT5vcHRpb25zLCBOVUxMLCBm YWxzZSkpOworCisJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwl0YWJsZV9jbG9zZShyZWwsIFJvd0V4 Y2x1c2l2ZUxvY2spOworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGFuIEFsdGVy U3RhdHNTdG10IChBTFRFUiBTVEFUSVNUSUNTKQorICoKKyAqIEdpdmVuIGEgYWx0ZXIgc3RhdGlz dGljcyBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuCisg KiBPYmpUcmVlIHJlcHJlc2VudGluZyB0aGUgYWx0ZXIgY29tbWFuZC4KKyAqCisgKiBWZXJib3Nl IHN5bnRheAorICogQUxURVIgU1RBVElTVElDUyAle2lkZW50aXR5fUQgU0VUIFNUQVRJU1RJQ1Mg JXt0YXJnZXR9bgorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0FsdGVyU3RhdHNTdG10 KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUFsdGVyU3RhdHNTdG10ICpub2Rl ID0gKEFsdGVyU3RhdHNTdG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQ7CisJSGVh cFR1cGxlCXRwOworCUZvcm1fcGdfc3RhdGlzdGljX2V4dCBzdGF0Zm9ybTsKKworCWlmICghbm9k ZS0+c3R4c3RhdHRhcmdldCkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBMb29rdXAgb2JqZWN0IGlu IHRoZSBjYXRhbG9nICovCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoU1RBVEVYVE9JRCwgT2JqZWN0 SWRHZXREYXR1bShvYmplY3RJZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCWVs b2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBzdGF0aXN0aWMgd2l0aCBPSUQgJXUi LCBvYmplY3RJZCk7CisKKwlzdGF0Zm9ybSA9IChGb3JtX3BnX3N0YXRpc3RpY19leHQpIEdFVFNU UlVDVCh0cCk7CisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIFNUQVRJU1RJQ1MgJXtpZGVu dGl0eX1EIFNFVCBTVEFUSVNUSUNTICV7dGFyZ2V0fW4iLCAyLAorCQkJCQkJICJpZGVudGl0eSIs IE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHN0YXRmb3Jt LT5zdHhuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIE5hbWVTdHIoc3RhdGZvcm0tPnN0eG5hbWUp KSwKKwkJCQkJCSAidGFyZ2V0IiwgT2JqVHlwZUludGVnZXIsIG5vZGUtPnN0eHN0YXR0YXJnZXQp OworCisJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVw YXJzZSBhIFJlZnJlc2hNYXRWaWV3U3RtdCAoUkVGUkVTSCBNQVRFUklBTElaRUQgVklFVykKKyAq CisgKiBHaXZlbiBhIG1hdGVyaWFsaXplZCB2aWV3IE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhh dCBjcmVhdGVkIGl0LCByZXR1cm4gYW4KKyAqIE9ialRyZWUgcmVwcmVzZW50aW5nIHRoZSByZWZy ZXNoIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIFJFRlJFU0ggTUFURVJJQUxJ WkVEIFZJRVcgJXtjb25jdXJyZW50bHl9cyAle2lkZW50aXR5fUQgJXt3aXRoX25vX2RhdGF9cwor ICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX1JlZnJlc2hNYXRWaWV3U3RtdChPaWQgb2Jq ZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlSZWZyZXNoTWF0Vmlld1N0bXQgKm5vZGUgPSAo UmVmcmVzaE1hdFZpZXdTdG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQ7CisJT2Jq VHJlZSAgICAqdG1wOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIlJFRlJFU0ggTUFURVJJQUxJ WkVEIFZJRVcgJXtjb25jdXJyZW50bHl9cyAle2lkZW50aXR5fUQiLCAyLAorCQkJCQkJICJjb25j dXJyZW50bHkiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIG5vZGUtPmNvbmN1cnJlbnQgPyAiQ09O Q1VSUkVOVExZIiA6ICIiLAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJ CQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFJlbGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJ CQkJCQkJCQkgb2JqZWN0SWQpKTsKKworCS8qIEFkZCBhIFdJVEggTk8gREFUQSBjbGF1c2UgKi8K Kwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiV0lUSCBOTyBEQVRBIiwgMSwKKwkJCQkJCSAicHJlc2Vu dCIsIE9ialR5cGVCb29sLAorCQkJCQkJIG5vZGUtPnNraXBEYXRhID8gdHJ1ZSA6IGZhbHNlKTsK KwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle3dpdGhfbm9fZGF0YX1zIiwgdG1wKTsKKwor CXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgUmVuYW1lU3RtdC4KKyAqCisgKiBW ZXJib3NlIHN5bnRheAorICogQUxURVIgJXtvYmp0eXBlfXMgJXtpZl9leGlzdHN9cyAle2lkZW50 aXR5fUQgUkVOQU1FIFRPICV7bmV3bmFtZX1JCisgKiBPUgorICogQUxURVIgUE9MSUNZICV7aWZf ZXhpc3RzfXMgJXtwb2xpY3luYW1lfUkgT04gJXtpZGVudGl0eX1EIFJFTkFNRSBUTyAle25ld25h bWV9SQorICogT1IKKyAqIEFMVEVSIERPTUFJTiAle2lkZW50aXR5fUQgUkVOQU1FIENPTlNUUkFJ TlQgJXtvbGRuYW1lfUkgVE8gJXtuZXduYW1lfUkKKyAqIE9SCisgKiBBTFRFUiBUQUJMRSAle29u bHl9cyAle2lkZW50aXR5fUQgUkVOQU1FIENPTlNUUkFJTlQgJXtvbGRuYW1lfUkgVE8gJXtuZXdu YW1lfUkKKyAqIE9SCisgKiBBTFRFUiBUWVBFICV7aWRlbnRpdHl9RCBSRU5BTUUgQVRUUklCVVRF ICV7Y29sbmFtZX1JIFRPICV7bmV3bmFtZX1JICV7Y2FzY2FkZX1zCisgKiBPUgorICogQUxURVIg JXtvYmp0eXBlfXMgJXtpZl9leGlzdHN9cyAle29ubHl9cyAle2lkZW50aXR5fUQgUkVOQU1FIENP TFVNTiAle2NvbG5hbWV9SSBUTyAle25ld25hbWV9SSAle2Nhc2NhZGV9cworICogT1IKKyAqIEFM VEVSICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9cyBSRU5BTUUgVE8gJXtuZXduYW1lfUkKKyAqIE9S CisgKiBBTFRFUiAle29ianR5cGV9cyAle2lkZW50aXR5fUQgVVNJTkcgJXtpbmRleF9tZXRob2R9 cyBSRU5BTUUgVE8gJXtuZXduYW1lfUkKKyAqIE9SCisgKiBBTFRFUiBTQ0hFTUEgJXtpZGVudGl0 eX1JIFJFTkFNRSBUTyAle25ld25hbWV9SQorICogT1IKKyAqIEFMVEVSIFJVTEUgJXtydWxlbmFt ZX1JIE9OICV7aWRlbnRpdHl9RCBSRU5BTUUgVE8gJXtuZXduYW1lfUkKKyAqIE9SCisgKiBBTFRF UiBUUklHR0VSICV7dHJpZ2dlcm5hbWV9SSBPTiAle2lkZW50aXR5fUQgUkVOQU1FIFRPICV7bmV3 bmFtZX1JCisgKiBPUgorICogQUxURVIgJXtvYmp0eXBlfXMgJXtpZGVudGl0eX1EIFJFTkFNRSBU TyAle25ld25hbWV9SQorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX1JlbmFtZVN0bXQo T2JqZWN0QWRkcmVzcyBhZGRyZXNzLCBOb2RlICpwYXJzZXRyZWUpCit7CisJUmVuYW1lU3RtdCAq bm9kZSA9IChSZW5hbWVTdG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQ7CisJUmVs YXRpb24JcmVsYXRpb247CisJT2lkCQkJc2NoZW1hSWQ7CisKKwkvKgorCSAqIEluIGFuIEFMVEVS IC4uIFJFTkFNRSBjb21tYW5kLCB3ZSBkb24ndCBoYXZlIHRoZSBvcmlnaW5hbCBuYW1lIG9mIHRo ZQorCSAqIG9iamVjdCBpbiBzeXN0ZW0gY2F0YWxvZ3M6IHNpbmNlIHdlIGluc3BlY3QgdGhlbSBh ZnRlciB0aGUgY29tbWFuZCBoYXMKKwkgKiBleGVjdXRlZCwgdGhlIG9sZCBuYW1lIGlzIGFscmVh ZHkgZ29uZS4gIFRoZXJlZm9yZSwgd2UgZXh0cmFjdCBpdCBmcm9tCisJICogdGhlIHBhcnNlIG5v ZGUuICBOb3RlIHdlIHN0aWxsIGV4dHJhY3QgdGhlIHNjaGVtYSBuYW1lIGZyb20gdGhlIGNhdGFs b2cKKwkgKiAoaXQgbWlnaHQgbm90IGJlIHByZXNlbnQgaW4gdGhlIHBhcnNlIG5vZGUpOyBpdCBj YW5ub3QgcG9zc2libHkgaGF2ZQorCSAqIGNoYW5nZWQgYW55d2F5LgorCSAqLworCXN3aXRjaCAo bm9kZS0+cmVuYW1lVHlwZSkKKwl7CisJCWNhc2UgT0JKRUNUX1RBQkxFOgorCQljYXNlIE9CSkVD VF9JTkRFWDoKKwkJY2FzZSBPQkpFQ1RfU0VRVUVOQ0U6CisJCWNhc2UgT0JKRUNUX1ZJRVc6CisJ CWNhc2UgT0JKRUNUX01BVFZJRVc6CisJCWNhc2UgT0JKRUNUX0ZPUkVJR05fVEFCTEU6CisJCQly ZWxhdGlvbiA9IHJlbGF0aW9uX29wZW4oYWRkcmVzcy5vYmplY3RJZCwgQWNjZXNzU2hhcmVMb2Nr KTsKKwkJCXNjaGVtYUlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocmVsYXRpb24pOworCQkJcmV0 ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSICV7b2JqdHlwZX1zICV7aWZfZXhpc3RzfXMgJXtpZGVu dGl0eX1EIFJFTkFNRSBUTyAle25ld25hbWV9SSIsIDQsCisJCQkJCQkJCSAib2JqdHlwZSIsIE9i alR5cGVTdHJpbmcsCisJCQkJCQkJCSBzdHJpbmdpZnlfb2JqdHlwZShub2RlLT5yZW5hbWVUeXBl LCBmYWxzZSksCisJCQkJCQkJCSAiaWZfZXhpc3RzIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJ IG5vZGUtPm1pc3Npbmdfb2sgPyAiSUYgRVhJU1RTIiA6ICIiLAorCQkJCQkJCQkgImlkZW50aXR5 IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShzY2hl bWFJZCwKKwkJCQkJCQkJCQkJCQkJICBub2RlLT5yZWxhdGlvbi0+cmVsbmFtZSksCisJCQkJCQkJ CSAibmV3bmFtZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCSBub2RlLT5uZXduYW1lKTsKKwkJ CXJlbGF0aW9uX2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJYnJlYWs7CisK KwkJY2FzZSBPQkpFQ1RfUE9MSUNZOgorCQkJeworCQkJCUhlYXBUdXBsZQlwb2xUdXA7CisJCQkJ Rm9ybV9wZ19wb2xpY3kgcG9sRm9ybTsKKwkJCQlSZWxhdGlvbglwZ19wb2xpY3k7CisJCQkJU2Nh bktleURhdGEga2V5OworCQkJCVN5c1NjYW5EZXNjIHNjYW47CisKKwkJCQlwZ19wb2xpY3kgPSBy ZWxhdGlvbl9vcGVuKFBvbGljeVJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJU2Nh bktleUluaXQoJmtleSwgQW51bV9wZ19wb2xpY3lfb2lkLAorCQkJCQkJCUJURXF1YWxTdHJhdGVn eU51bWJlciwgRl9PSURFUSwKKwkJCQkJCQlPYmplY3RJZEdldERhdHVtKGFkZHJlc3Mub2JqZWN0 SWQpKTsKKwkJCQlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHBnX3BvbGljeSwgUG9saWN5T2lk SW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkJCQkgIE5VTEwsIDEsICZrZXkpOworCQkJCXBvbFR1cCA9 IHN5c3RhYmxlX2dldG5leHQoc2Nhbik7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHBvbFR1 cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBwb2xpY3kgd2l0 aCBPSUQgJXUiLAorCQkJCQkJIGFkZHJlc3Mub2JqZWN0SWQpOworCQkJCXBvbEZvcm0gPSAoRm9y bV9wZ19wb2xpY3kpIEdFVFNUUlVDVChwb2xUdXApOworCisJCQkJcmV0ID0gbmV3X29ianRyZWVf VkEoIkFMVEVSIFBPTElDWSAle2lmX2V4aXN0c31zICV7cG9saWN5bmFtZX1JIE9OICV7aWRlbnRp dHl9RCBSRU5BTUUgVE8gJXtuZXduYW1lfUkiLCA0LAorCQkJCQkJCQkJICJpZl9leGlzdHMiLCBP YmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJIG5vZGUtPm1pc3Npbmdfb2sgPyAiSUYgRVhJU1RTIiA6 ICIiLAorCQkJCQkJCQkJICJwb2xpY3luYW1lIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCSBu b2RlLT5zdWJuYW1lLAorCQkJCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJ CQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFJlbGF0aW9uUmVsYXRpb25JZCwKKwkJ CQkJCQkJCQkJCQkJCQkgcG9sRm9ybS0+cG9scmVsaWQpLAorCQkJCQkJCQkJICJuZXduYW1lIiwg T2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCSBub2RlLT5uZXduYW1lKTsKKwkJCQlzeXN0YWJsZV9l bmRzY2FuKHNjYW4pOworCQkJCXJlbGF0aW9uX2Nsb3NlKHBnX3BvbGljeSwgQWNjZXNzU2hhcmVM b2NrKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgT0JKRUNUX0RPTUNPTlNUUkFJTlQ6CisJ CQl7CisJCQkJSGVhcFR1cGxlCWRvbXR1cDsKKwkJCQlIZWFwVHVwbGUJY29uc3R0dXA7CisJCQkJ Rm9ybV9wZ19jb25zdHJhaW50IGNvbnN0Zm9ybTsKKwkJCQlGb3JtX3BnX3R5cGUgZG9tZm9ybTsK KworCQkJCS8qIEdldCBkb21haW4gaWQgZnJvbSB0aGUgY29uc3RyYWludCAqLworCQkJCWNvbnN0 dHVwID0gU2VhcmNoU3lzQ2FjaGUxKENPTlNUUk9JRCwKKwkJCQkJCQkJCQkgICBPYmplY3RJZEdl dERhdHVtKGFkZHJlc3Mub2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY29u c3R0dXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgY29uc3Ry YWludCB3aXRoIE9JRCAldSIsCisJCQkJCQkgYWRkcmVzcy5vYmplY3RJZCk7CisJCQkJY29uc3Rm b3JtID0gKEZvcm1fcGdfY29uc3RyYWludCkgR0VUU1RSVUNUKGNvbnN0dHVwKTsKKworCQkJCWRv bXR1cCA9IFNlYXJjaFN5c0NhY2hlMShUWVBFT0lELAorCQkJCQkJCQkJCSBPYmplY3RJZEdldERh dHVtKGNvbnN0Zm9ybS0+Y29udHlwaWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoZG9t dHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGRvbWFpbiB3 aXRoIE9JRCAldSIsCisJCQkJCQkgY29uc3Rmb3JtLT5jb250eXBpZCk7CisJCQkJUmVsZWFzZVN5 c0NhY2hlKGNvbnN0dHVwKTsKKworCQkJCWRvbWZvcm0gPSAoRm9ybV9wZ190eXBlKSBHRVRTVFJV Q1QoZG9tdHVwKTsKKwkJCQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgRE9NQUlOICV7aWRl bnRpdHl9RCBSRU5BTUUgQ09OU1RSQUlOVCAle29sZG5hbWV9SSBUTyAle25ld25hbWV9SSIsIDMs CisJCQkJCQkiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJbmV3X29ianRyZWVfZm9y X3F1YWxuYW1lKGRvbWZvcm0tPnR5cG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCSBOYW1lU3RyKGRv bWZvcm0tPnR5cG5hbWUpKSwKKwkJCQkJCSJvbGRuYW1lIiwgT2JqVHlwZVN0cmluZywgbm9kZS0+ c3VibmFtZSwKKwkJCQkJCSJuZXduYW1lIiwgT2JqVHlwZVN0cmluZywgbm9kZS0+bmV3bmFtZSk7 CisJCQkJUmVsZWFzZVN5c0NhY2hlKGRvbXR1cCk7CisJCQl9CisJCQlicmVhazsKKworCQljYXNl IE9CSkVDVF9UQUJDT05TVFJBSU5UOgorCQkJeworCQkJCUhlYXBUdXBsZQljb25zdHJ0dXA7CisJ CQkJRm9ybV9wZ19jb25zdHJhaW50IGNvbnN0Zm9ybTsKKworCQkJCWNvbnN0cnR1cCA9IFNlYXJj aFN5c0NhY2hlMShDT05TVFJPSUQsCisJCQkJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0oYWRkcmVz cy5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChjb25zdHJ0dXApKQorCQkJ CQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgY29uc3RyYWludCB3aXRoIE9J RCAldSIsCisJCQkJCQkgYWRkcmVzcy5vYmplY3RJZCk7CisJCQkJY29uc3Rmb3JtID0gKEZvcm1f cGdfY29uc3RyYWludCkgR0VUU1RSVUNUKGNvbnN0cnR1cCk7CisKKwkJCQlyZXQgPSBuZXdfb2Jq dHJlZV9WQSgiQUxURVIgVEFCTEUgJXtvbmx5fXMgJXtpZGVudGl0eX1EIFJFTkFNRSBDT05TVFJB SU5UICV7b2xkbmFtZX1JIFRPICV7bmV3bmFtZX1JIiwgNCwKKwkJCQkJCQkJCSJvbmx5IiwgIE9i alR5cGVTdHJpbmcsCisJCQkJCQkJCQlub2RlLT5yZWxhdGlvbi0+aW5oID8gIiIgOiAiT05MWSIs CisJCQkJCQkJCQkiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJbmV3X29ianRy ZWVfZm9yX3F1YWxuYW1lX2lkKFJlbGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJCQlj b25zdGZvcm0tPmNvbnJlbGlkKSwKKwkJCQkJCQkJCSJvbGRuYW1lIiwgT2JqVHlwZVN0cmluZywg bm9kZS0+c3VibmFtZSwKKwkJCQkJCQkJCSJuZXduYW1lIiwgT2JqVHlwZVN0cmluZywgbm9kZS0+ bmV3bmFtZSk7CisJCQkJUmVsZWFzZVN5c0NhY2hlKGNvbnN0cnR1cCk7CisJCQl9CisJCQlicmVh azsKKworCQljYXNlIE9CSkVDVF9BVFRSSUJVVEU6CisJCWNhc2UgT0JKRUNUX0NPTFVNTjoKKwkJ CXJlbGF0aW9uID0gcmVsYXRpb25fb3BlbihhZGRyZXNzLm9iamVjdElkLCBBY2Nlc3NTaGFyZUxv Y2spOworCQkJc2NoZW1hSWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWxhdGlvbik7CisKKwkJ CWlmIChub2RlLT5yZW5hbWVUeXBlID09IE9CSkVDVF9BVFRSSUJVVEUpCisJCQkJcmV0ID0gbmV3 X29ianRyZWVfVkEoIkFMVEVSIFRZUEUgJXtpZGVudGl0eX1EIFJFTkFNRSBBVFRSSUJVVEUgJXtj b2xuYW1lfUkiLCAyLAorCQkJCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJ CQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHNjaGVtYUlkLAorCQkJCQkJCQkJCQkJCQkJ ICBub2RlLT5yZWxhdGlvbi0+cmVsbmFtZSksCisJCQkJCQkJCQkgImNvbG5hbWUiLCBPYmpUeXBl U3RyaW5nLCBub2RlLT5zdWJuYW1lKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlyZXQgPSBuZXdfb2Jq dHJlZV9WQSgiQUxURVIgJXtvYmp0eXBlfXMiLCAxLAorCQkJCQkJCQkJICJvYmp0eXBlIiwgT2Jq VHlwZVN0cmluZywKKwkJCQkJCQkJCSBzdHJpbmdpZnlfb2JqdHlwZShub2RlLT5yZWxhdGlvblR5 cGUsIGZhbHNlKSk7CisKKwkJCQkvKiBDb21wb3NpdGUgdHlwZXMgZG8gbm90IHN1cHBvcnQgSUYg RVhJU1RTICovCisJCQkJaWYgKG5vZGUtPnJlbmFtZVR5cGUgPT0gT0JKRUNUX0NPTFVNTikKKwkJ CQkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtpZl9leGlzdHN9cyIsCisJCQkJCQkJCQkJ ICJpZl9leGlzdHMiLAorCQkJCQkJCQkJCSBub2RlLT5taXNzaW5nX29rID8gIklGIEVYSVNUUyIg OiAiIik7CisJCQkJaWYgKCFub2RlLT5yZWxhdGlvbi0+aW5oKQorCQkJCQlhcHBlbmRfc3RyaW5n X29iamVjdChyZXQsICIle29ubHl9cyIsCisJCQkJCQkJCQkJICJvbmx5IiwKKwkJCQkJCQkJCQkg Ik9OTFkiKTsKKwkJCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle2lkZW50aXR5fUQiLAor CQkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShzY2hlbWFJZCwKKwkJCQkJCQkJCQkJ CQkJCSAgbm9kZS0+cmVsYXRpb24tPnJlbG5hbWUpKTsKKwkJCQlhcHBlbmRfc3RyaW5nX29iamVj dChyZXQsICJSRU5BTUUgQ09MVU1OICV7Y29sbmFtZX1JIiwKKwkJCQkJCQkJCSAiY29sbmFtZSIs IG5vZGUtPnN1Ym5hbWUpOworCQkJfQorCisJCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICJU TyAle25ld25hbWV9SSIsICJuZXduYW1lIiwKKwkJCQkJCQkJIG5vZGUtPm5ld25hbWUpOworCisJ CQlpZiAobm9kZS0+cmVuYW1lVHlwZSA9PSBPQkpFQ1RfQVRUUklCVVRFKQorCQkJCWFwcGVuZF9v YmplY3Rfb2JqZWN0KHJldCwgIiV7Y2FzY2FkZX1zIiwKKwkJCQkJCQkJCSBuZXdfb2JqdHJlZV9W QSgiQ0FTQ0FERSIsIDEsCisJCQkJCQkJCQkJCQkJInByZXNlbnQiLCBPYmpUeXBlQm9vbCwKKwkJ CQkJCQkJCQkJCQlub2RlLT5iZWhhdmlvciA9PSBEUk9QX0NBU0NBREUpKTsKKworCQkJcmVsYXRp b25fY2xvc2UocmVsYXRpb24sIEFjY2Vzc1NoYXJlTG9jayk7CisJCQlicmVhazsKKworCQljYXNl IE9CSkVDVF9BR0dSRUdBVEU6CisJCWNhc2UgT0JKRUNUX0ZVTkNUSU9OOgorCQljYXNlIE9CSkVD VF9ST1VUSU5FOgorCQkJeworCQkJCWNoYXIJICAgKmlkZW50OworCQkJCUhlYXBUdXBsZQlwcm9j dHVwOworCQkJCUZvcm1fcGdfcHJvYyBwcm9jZm9ybTsKKwkJCQlMaXN0CSAgICppZGVudGl0eTsK KworCQkJCUFzc2VydChJc0Eobm9kZS0+b2JqZWN0LCBPYmplY3RXaXRoQXJncykpOworCQkJCWlk ZW50aXR5ID0gKChPYmplY3RXaXRoQXJncyAqKSBub2RlLT5vYmplY3QpLT5vYmpuYW1lOworCisJ CQkJcHJvY3R1cCA9IFNlYXJjaFN5c0NhY2hlMShQUk9DT0lELAorCQkJCQkJCQkJCSAgT2JqZWN0 SWRHZXREYXR1bShhZGRyZXNzLm9iamVjdElkKSk7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHByb2N0dXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcHJv Y2VkdXJlIHdpdGggT0lEICV1IiwKKwkJCQkJCSBhZGRyZXNzLm9iamVjdElkKTsKKwkJCQlwcm9j Zm9ybSA9IChGb3JtX3BnX3Byb2MpIEdFVFNUUlVDVChwcm9jdHVwKTsKKworCQkJCS8qIFhYWCBk b2VzIHRoaXMgd29yayBmb3Igb3JkZXJlZC1zZXQgYWdncmVnYXRlcz8gKi8KKwkJCQlpZGVudCA9 IHBzcHJpbnRmKCIlcyVzIiwKKwkJCQkJCQkJIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKGdl dF9uYW1lc3BhY2VfbmFtZShwcm9jZm9ybS0+cHJvbmFtZXNwYWNlKSwKKwkJCQkJCQkJCQkJCQkJ CXN0clZhbChsbGFzdChpZGVudGl0eSkpKSwKKwkJCQkJCQkJIGZvcm1hdF9wcm9jZWR1cmVfYXJn cyhhZGRyZXNzLm9iamVjdElkLCB0cnVlKSk7CisKKwkJCQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgi QUxURVIgJXtvYmp0eXBlfXMgJXtpZGVudGl0eX1zIFJFTkFNRSBUTyAle25ld25hbWV9SSIsIDMs CisJCQkJCQkJCQkgIm9ianR5cGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJIHN0cmluZ2lm eV9vYmp0eXBlKG5vZGUtPnJlbmFtZVR5cGUsIGZhbHNlKSwKKwkJCQkJCQkJCSAiaWRlbnRpdHki LCBPYmpUeXBlU3RyaW5nLCBpZGVudCwKKwkJCQkJCQkJCSAibmV3bmFtZSIsIE9ialR5cGVTdHJp bmcsIG5vZGUtPm5ld25hbWUpOworCisJCQkJUmVsZWFzZVN5c0NhY2hlKHByb2N0dXApOworCQkJ fQorCQkJYnJlYWs7CisKKwkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKKwkJCXsKKwkJCQlIZWFwVHVw bGUJb3BjVHVwOworCQkJCUZvcm1fcGdfb3BjbGFzcyBvcGNGb3JtOworCQkJCUxpc3QJICAgKm9s ZG5hbWVzOworCQkJCWNoYXIJICAgKnNjaGVtYW5hbWU7CisJCQkJY2hhcgkgICAqb3BjbmFtZTsK KworCQkJCW9wY1R1cCA9IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQsIE9iamVjdElkR2V0RGF0dW0o YWRkcmVzcy5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChvcGNUdXApKQor CQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BjbGFzcyB3aXRoIE9J RCAldSIsCisJCQkJCQkgYWRkcmVzcy5vYmplY3RJZCk7CisKKwkJCQlvcGNGb3JtID0gKEZvcm1f cGdfb3BjbGFzcykgR0VUU1RSVUNUKG9wY1R1cCk7CisKKwkJCQlvbGRuYW1lcyA9IGxpc3RfY29w eV90YWlsKChMaXN0ICopIG5vZGUtPm9iamVjdCwgMSk7CisKKwkJCQkvKiBEZWNvbnN0cnVjdCB0 aGUgbmFtZSBsaXN0ICovCisJCQkJRGVjb25zdHJ1Y3RRdWFsaWZpZWROYW1lKG9sZG5hbWVzLCAm c2NoZW1hbmFtZSwgJm9wY25hbWUpOworCisJCQkJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVS ICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9RCBVU0lORyAle2luZGV4X21ldGhvZH1zIFJFTkFNRSBU TyAle25ld25hbWV9SSIsIDQsCisJCQkJCQkJCQkgIm9ianR5cGUiLCBPYmpUeXBlU3RyaW5nLAor CQkJCQkJCQkJIHN0cmluZ2lmeV9vYmp0eXBlKG5vZGUtPnJlbmFtZVR5cGUsIGZhbHNlKSwKKwkJ CQkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJIG5ld19vYmp0cmVl X2Zvcl9xdWFsbmFtZShvcGNGb3JtLT5vcGNuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkJCQkgIG9w Y25hbWUpLAorCQkJCQkJCQkJICJpbmRleF9tZXRob2QiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJ CQkJIGdldF9hbV9uYW1lKG9wY0Zvcm0tPm9wY21ldGhvZCksCisJCQkJCQkJCQkgIm5ld25hbWUi LCBPYmpUeXBlU3RyaW5nLCBub2RlLT5uZXduYW1lKTsKKworCQkJCVJlbGVhc2VTeXNDYWNoZShv cGNUdXApOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJCQl7 CisJCQkJSGVhcFR1cGxlCW9wZlR1cDsKKwkJCQlIZWFwVHVwbGUJYW1UdXA7CisJCQkJRm9ybV9w Z19vcGZhbWlseSBvcGZGb3JtOworCQkJCUZvcm1fcGdfYW0JYW1Gb3JtOworCQkJCUxpc3QJICAg Km9sZG5hbWVzOworCQkJCWNoYXIJICAgKnNjaGVtYW5hbWU7CisJCQkJY2hhcgkgICAqb3BmbmFt ZTsKKworCQkJCW9wZlR1cCA9IFNlYXJjaFN5c0NhY2hlMShPUEZBTUlMWU9JRCwgYWRkcmVzcy5v YmplY3RJZCk7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKG9wZlR1cCkpCisJCQkJCWVsb2co RVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGVyYXRvciBmYW1pbHkgd2l0aCBPSUQg JXUiLAorCQkJCQkJIGFkZHJlc3Mub2JqZWN0SWQpOworCQkJCW9wZkZvcm0gPSAoRm9ybV9wZ19v cGZhbWlseSkgR0VUU1RSVUNUKG9wZlR1cCk7CisKKwkJCQlhbVR1cCA9IFNlYXJjaFN5c0NhY2hl MShBTU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGZGb3JtLT5vcGZtZXRob2QpKTsKKwkJCQlpZiAo IUhlYXBUdXBsZUlzVmFsaWQoYW1UdXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3Vw IGZhaWxlZCBmb3IgYWNjZXNzIG1ldGhvZCB3aXRoIE9JRCAldSIsCisJCQkJCQkgb3BmRm9ybS0+ b3BmbWV0aG9kKTsKKworCQkJCWFtRm9ybSA9IChGb3JtX3BnX2FtKSBHRVRTVFJVQ1QoYW1UdXAp OworCisJCQkJb2xkbmFtZXMgPSBsaXN0X2NvcHlfdGFpbCgoTGlzdCAqKSBub2RlLT5vYmplY3Qs IDEpOworCisJCQkJLyogRGVjb25zdHJ1Y3QgdGhlIG5hbWUgbGlzdCAqLworCQkJCURlY29uc3Ry dWN0UXVhbGlmaWVkTmFtZShvbGRuYW1lcywgJnNjaGVtYW5hbWUsICZvcGZuYW1lKTsKKworCQkJ CXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiAle29ianR5cGV9cyAle2lkZW50aXR5fUQgVVNJ TkcgJXtpbmRleF9tZXRob2R9cyBSRU5BTUUgVE8gJXtuZXduYW1lfUkiLCA0LAorCQkJCQkJCQkJ ICJvYmp0eXBlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCSBzdHJpbmdpZnlfb2JqdHlwZShu b2RlLT5yZW5hbWVUeXBlLCBmYWxzZSksCisJCQkJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9i amVjdCwKKwkJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUob3BmRm9ybS0+b3BmbmFt ZXNwYWNlLAorCQkJCQkJCQkJCQkJCQkJICBvcGZuYW1lKSwKKwkJCQkJCQkJCSAiaW5kZXhfbWV0 aG9kIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCSBOYW1lU3RyKGFtRm9ybS0+YW1uYW1lKSwK KwkJCQkJCQkJCSAibmV3bmFtZSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPm5ld25hbWUpOworCisJ CQkJUmVsZWFzZVN5c0NhY2hlKGFtVHVwKTsKKwkJCQlSZWxlYXNlU3lzQ2FjaGUob3BmVHVwKTsK KwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgT0JKRUNUX1NDSEVNQToKKwkJCXJldCA9IG5ld19v Ymp0cmVlX1ZBKCJBTFRFUiBTQ0hFTUEgJXtpZGVudGl0eX1JIFJFTkFNRSBUTyAle25ld25hbWV9 SSIsIDIsCisJCQkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5zdWJuYW1l LAorCQkJCQkJCQkgIm5ld25hbWUiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5uZXduYW1lKTsKKwkJ CWJyZWFrOworCisJCWNhc2UgT0JKRUNUX0ZEVzoKKwkJY2FzZSBPQkpFQ1RfTEFOR1VBR0U6CisJ CWNhc2UgT0JKRUNUX0ZPUkVJR05fU0VSVkVSOgorCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTjoK KwkJCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiAle29ianR5cGV9cyAle2lkZW50aXR5fXMg UkVOQU1FIFRPICV7bmV3bmFtZX1JIiwgMywKKwkJCQkJCQkJICJvYmp0eXBlIiwgT2JqVHlwZVN0 cmluZywKKwkJCQkJCQkJIHN0cmluZ2lmeV9vYmp0eXBlKG5vZGUtPnJlbmFtZVR5cGUsIGZhbHNl KSwKKwkJCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCSBzdHJWYWwo Y2FzdE5vZGUoU3RyaW5nLCBub2RlLT5vYmplY3QpKSwKKwkJCQkJCQkJICJuZXduYW1lIiwgT2Jq VHlwZVN0cmluZywgbm9kZS0+bmV3bmFtZSk7CisJCQlicmVhazsKKworCQljYXNlIE9CSkVDVF9S VUxFOgorCQkJeworCQkJCUhlYXBUdXBsZQlyZXdyVHVwOworCQkJCUZvcm1fcGdfcmV3cml0ZSBy ZXdyRm9ybTsKKwkJCQlSZWxhdGlvbglwZ19yZXdyaXRlOworCisJCQkJcGdfcmV3cml0ZSA9IHJl bGF0aW9uX29wZW4oUmV3cml0ZVJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJcmV3 clR1cCA9IGdldF9jYXRhbG9nX29iamVjdF9ieV9vaWQocGdfcmV3cml0ZSwgQW51bV9wZ19yZXdy aXRlX29pZCwgYWRkcmVzcy5vYmplY3RJZCk7CisJCQkJcmV3ckZvcm0gPSAoRm9ybV9wZ19yZXdy aXRlKSBHRVRTVFJVQ1QocmV3clR1cCk7CisKKwkJCQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxU RVIgUlVMRSAle3J1bGVuYW1lfUkgT04gJXtpZGVudGl0eX1EIFJFTkFNRSBUTyAle25ld25hbWV9 SSIsIDMsCisJCQkJCQkJCQkgInJ1bGVuYW1lIiwgT2JqVHlwZVN0cmluZywgbm9kZS0+c3VibmFt ZSwKKwkJCQkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJIG5ld19v Ymp0cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJ CQkJIHJld3JGb3JtLT5ldl9jbGFzcyksCisJCQkJCQkJCQkgIm5ld25hbWUiLCBPYmpUeXBlU3Ry aW5nLCBub2RlLT5uZXduYW1lKTsKKwkJCQlyZWxhdGlvbl9jbG9zZShwZ19yZXdyaXRlLCBBY2Nl c3NTaGFyZUxvY2spOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBPQkpFQ1RfVFJJR0dFUjoK KwkJCXsKKwkJCQlIZWFwVHVwbGUJdHJpZ1R1cDsKKwkJCQlGb3JtX3BnX3RyaWdnZXIgdHJpZ0Zv cm07CisJCQkJUmVsYXRpb24JcGdfdHJpZ2dlcjsKKworCQkJCXBnX3RyaWdnZXIgPSByZWxhdGlv bl9vcGVuKFRyaWdnZXJSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCXRyaWdUdXAg PSBnZXRfY2F0YWxvZ19vYmplY3RfYnlfb2lkKHBnX3RyaWdnZXIsIGdldF9vYmplY3RfYXR0bnVt X29pZChhZGRyZXNzLmNsYXNzSWQpLCBhZGRyZXNzLm9iamVjdElkKTsKKwkJCQl0cmlnRm9ybSA9 IChGb3JtX3BnX3RyaWdnZXIpIEdFVFNUUlVDVCh0cmlnVHVwKTsKKworCQkJCXJldCA9IG5ld19v Ymp0cmVlX1ZBKCJBTFRFUiBUUklHR0VSICV7dHJpZ2dlcm5hbWV9SSBPTiAle2lkZW50aXR5fUQg UkVOQU1FIFRPICV7bmV3bmFtZX1JIiwgMywKKwkJCQkJCQkJCSAidHJpZ2dlcm5hbWUiLCBPYmpU eXBlU3RyaW5nLCBub2RlLT5zdWJuYW1lLAorCQkJCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVP YmplY3QsCisJCQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFJlbGF0aW9uUmVs YXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJCQkgdHJpZ0Zvcm0tPnRncmVsaWQpLAorCQkJCQkJCQkJ ICJuZXduYW1lIiwgT2JqVHlwZVN0cmluZywgbm9kZS0+bmV3bmFtZSk7CisKKwkJCQlyZWxhdGlv bl9jbG9zZShwZ190cmlnZ2VyLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJfQorCQkJYnJlYWs7CisK KwkJY2FzZSBPQkpFQ1RfQ09MTEFUSU9OOgorCQljYXNlIE9CSkVDVF9TVEFUSVNUSUNfRVhUOgor CQljYXNlIE9CSkVDVF9UWVBFOgorCQljYXNlIE9CSkVDVF9DT05WRVJTSU9OOgorCQljYXNlIE9C SkVDVF9ET01BSU46CisJCWNhc2UgT0JKRUNUX1RTRElDVElPTkFSWToKKwkJY2FzZSBPQkpFQ1Rf VFNQQVJTRVI6CisJCWNhc2UgT0JKRUNUX1RTVEVNUExBVEU6CisJCWNhc2UgT0JKRUNUX1RTQ09O RklHVVJBVElPTjoKKwkJCXsKKwkJCQlIZWFwVHVwbGUJb2JqVHVwOworCQkJCVJlbGF0aW9uCWNh dGFsb2c7CisJCQkJRGF0dW0JCW9iam5zcDsKKwkJCQlib29sCQlpc251bGw7CisJCQkJQXR0ck51 bWJlcglBbnVtX25hbWVzcGFjZTsKKwkJCQlMaXN0CSAgICppZGVudGl0eSA9IGNhc3ROb2RlKExp c3QsIG5vZGUtPm9iamVjdCk7CisKKwkJCQkvKiBPYnRhaW4gb2JqZWN0IHR1cGxlICovCisJCQkJ Y2F0YWxvZyA9IHJlbGF0aW9uX29wZW4oYWRkcmVzcy5jbGFzc0lkLCBBY2Nlc3NTaGFyZUxvY2sp OworCQkJCW9ialR1cCA9IGdldF9jYXRhbG9nX29iamVjdF9ieV9vaWQoY2F0YWxvZywgZ2V0X29i amVjdF9hdHRudW1fb2lkKGFkZHJlc3MuY2xhc3NJZCksIGFkZHJlc3Mub2JqZWN0SWQpOworCisJ CQkJLyogT2J0YWluIG5hbWVzcGFjZSAqLworCQkJCUFudW1fbmFtZXNwYWNlID0gZ2V0X29iamVj dF9hdHRudW1fbmFtZXNwYWNlKGFkZHJlc3MuY2xhc3NJZCk7CisJCQkJb2JqbnNwID0gaGVhcF9n ZXRhdHRyKG9ialR1cCwgQW51bV9uYW1lc3BhY2UsCisJCQkJCQkJCQkgIFJlbGF0aW9uR2V0RGVz Y3IoY2F0YWxvZyksICZpc251bGwpOworCQkJCWlmIChpc251bGwpCisJCQkJCWVsb2coRVJST1Is ICJpbnZhbGlkIE5VTEwgbmFtZXNwYWNlIik7CisKKwkJCQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgi QUxURVIgJXtvYmp0eXBlfXMgJXtpZGVudGl0eX1EIFJFTkFNRSBUTyAle25ld25hbWV9SSIsIDMs CisJCQkJCQkJCQkgIm9ianR5cGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJIHN0cmluZ2lm eV9vYmp0eXBlKG5vZGUtPnJlbmFtZVR5cGUsIGZhbHNlKSwKKwkJCQkJCQkJCSAiaWRlbnRpdHki LCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShEYXR1 bUdldE9iamVjdElkKG9iam5zcCksCisJCQkJCQkJCQkJCQkJCQkgIHN0clZhbChsbGFzdChpZGVu dGl0eSkpKSwKKwkJCQkJCQkJCSAibmV3bmFtZSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPm5ld25h bWUpOworCQkJCXJlbGF0aW9uX2Nsb3NlKGNhdGFsb2csIEFjY2Vzc1NoYXJlTG9jayk7CisJCQl9 CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIG9i amVjdCB0eXBlICVkIiwgbm9kZS0+cmVuYW1lVHlwZSk7CisJfQorCisJcmV0dXJuIHJldDsKK30K KworLyoKKyAqIERlcGFyc2UgYSBBbHRlck9iamVjdERlcGVuZHNTdG10IChBTFRFUiAuLi4gREVQ RU5EUyBPTiAuLi4pLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRFUiBJTkRFWCAle2lk ZW50aXR5fUQgJXtub31zIERFUEVORFMgT04gRVhURU5TSU9OICV7bmV3bmFtZX1JCisgKi8KK3N0 YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJEZXBlbmRTdG10KE9pZCBvYmplY3RJZCwgTm9k ZSAqcGFyc2V0cmVlKQoreworCUFsdGVyT2JqZWN0RGVwZW5kc1N0bXQgKm5vZGUgPSAoQWx0ZXJP YmplY3REZXBlbmRzU3RtdCAqKSBwYXJzZXRyZWU7CisJT2JqVHJlZSAgICAqcmV0ID0gTlVMTDsK KworCWlmIChub2RlLT5vYmplY3RUeXBlID09IE9CSkVDVF9JTkRFWCkKKwl7CisJCU9ialRyZWUg ICAgKnF1YWxpZmllZDsKKwkJUmVsYXRpb24JcmVsYXRpb24gPSByZWxhdGlvbl9vcGVuKG9iamVj dElkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCXF1YWxpZmllZCA9IG5ld19vYmp0cmVlX2Zvcl9x dWFsbmFtZShyZWxhdGlvbi0+cmRfcmVsLT5yZWxuYW1lc3BhY2UsCisJCQkJCQkJCQkJCSBub2Rl LT5yZWxhdGlvbi0+cmVsbmFtZSk7CisJCXJlbGF0aW9uX2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NT aGFyZUxvY2spOworCisJCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBJTkRFWCAle2lkZW50 aXR5fUQgJXtub31zIERFUEVORFMgT04gRVhURU5TSU9OICV7bmV3bmFtZX1JIiwgMywKKwkJCQkJ CQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwgcXVhbGlmaWVkLAorCQkJCQkJCSAibm8iLCBP YmpUeXBlU3RyaW5nLAorCQkJCQkJCSBub2RlLT5yZW1vdmUgPyAiTk8iIDogIiIsCisJCQkJCQkJ ICJuZXduYW1lIiwgT2JqVHlwZVN0cmluZywgc3RyVmFsKG5vZGUtPmV4dG5hbWUpKTsKKwl9CisJ ZWxzZQorCQllbG9nKExPRywgInVucmVjb2duaXplZCBub2RlIHR5cGUgaW4gZGVwYXJzZSBjb21t YW5kOiAlZCIsCisJCQkgKGludCkgbm9kZVRhZyhwYXJzZXRyZWUpKTsKKworCXJldHVybiByZXQ7 Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgUnVsZVN0bXQgKENSRUFURSBSVUxFKS4KKyAqCisgKiBH aXZlbiBhIHJ1bGUgT0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVy biBhbiBPYmpUcmVlCisgKiByZXByZXNlbnRpbmcgdGhlIHJ1bGUgY29tbWFuZC4KKyAqCisgKiBW ZXJib3NlIHN5bnRheAorICogQ1JFQVRFIFJVTEUgJXtvcl9yZXBsYWNlfXMgJXtpZGVudGl0eX1J IEFTIE9OICV7ZXZlbnR9cyBUTyAle3RhYmxlfUQKKyAqICV7d2hlcmVfY2xhdXNlfXMgRE8gJXtp bnN0ZWFkfXMgJXthY3Rpb25zOiwgfXMKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9S dWxlU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlSdWxlU3RtdCAgICpu b2RlID0gKFJ1bGVTdG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQ7CisJT2JqVHJl ZSAgICAqdG1wOworCVJlbGF0aW9uCXBnX3Jld3JpdGU7CisJRm9ybV9wZ19yZXdyaXRlIHJld3JG b3JtOworCUhlYXBUdXBsZQlyZXdyVHVwOworCVN5c1NjYW5EZXNjIHNjYW47CisJU2NhbktleURh dGEga2V5OworCURhdHVtCQlldl9xdWFsOworCURhdHVtCQlldl9hY3Rpb25zOworCWJvb2wJCWlz bnVsbDsKKwljaGFyCSAgICpxdWFsOworCUxpc3QJICAgKmFjdGlvbnM7CisJTGlzdAkgICAqbGlz dCA9IE5JTDsKKwlMaXN0Q2VsbCAgICpjZWxsOworCWNoYXIJICAgKmV2ZW50X3N0cjsKKworCXBn X3Jld3JpdGUgPSB0YWJsZV9vcGVuKFJld3JpdGVSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2sp OworCVNjYW5LZXlJbml0KCZrZXksCisJCQkJQW51bV9wZ19yZXdyaXRlX29pZCwKKwkJCQlCVEVx dWFsU3RyYXRlZ3lOdW1iZXIsCisJCQkJRl9PSURFUSwgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJ ZCkpOworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19yZXdyaXRlLCBSZXdyaXRlT2lk SW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkgIE5VTEwsIDEsICZrZXkpOworCXJld3JUdXAgPSBzeXN0 YWJsZV9nZXRuZXh0KHNjYW4pOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChyZXdyVHVwKSkKKwkJ ZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJld3JpdGUgcnVsZSB3aXRoIE9J RCAldSIsCisJCQkgb2JqZWN0SWQpOworCisJcmV3ckZvcm0gPSAoRm9ybV9wZ19yZXdyaXRlKSBH RVRTVFJVQ1QocmV3clR1cCk7CisKKwlldmVudF9zdHIgPSBub2RlLT5ldmVudCA9PSBDTURfU0VM RUNUID8gIlNFTEVDVCIgOgorCQlub2RlLT5ldmVudCA9PSBDTURfVVBEQVRFID8gIlVQREFURSIg OgorCQlub2RlLT5ldmVudCA9PSBDTURfREVMRVRFID8gIkRFTEVURSIgOgorCQlub2RlLT5ldmVu dCA9PSBDTURfSU5TRVJUID8gIklOU0VSVCIgOiBOVUxMOworCUFzc2VydChldmVudF9zdHIgIT0g TlVMTCk7CisKKwlldl9xdWFsID0gaGVhcF9nZXRhdHRyKHJld3JUdXAsIEFudW1fcGdfcmV3cml0 ZV9ldl9xdWFsLAorCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihwZ19yZXdyaXRlKSwgJmlzbnVs bCk7CisJZXZfYWN0aW9ucyA9IGhlYXBfZ2V0YXR0cihyZXdyVHVwLCBBbnVtX3BnX3Jld3JpdGVf ZXZfYWN0aW9uLAorCQkJCQkJCSAgUmVsYXRpb25HZXREZXNjcihwZ19yZXdyaXRlKSwgJmlzbnVs bCk7CisKKwlwZ19nZXRfcnVsZWRlZl9kZXRhaWxlZChldl9xdWFsLCBldl9hY3Rpb25zLCAmcXVh bCwgJmFjdGlvbnMpOworCisJdG1wID0gbmV3X29ianRyZWUoIiIpOworCWlmIChxdWFsKQorCQlh cHBlbmRfc3RyaW5nX29iamVjdCh0bXAsICJXSEVSRSAle2NsYXVzZX1zIiwgImNsYXVzZSIsIHF1 YWwpOworCWVsc2UKKwl7CisJCWFwcGVuZF9udWxsX29iamVjdCh0bXAsICJXSEVSRSAle2NsYXVz ZX1zIik7CisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCX0KKworCWlmIChhY3Rpb25zID09 IE5JTCkKKwkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X3N0cmluZ19vYmplY3QoIk5PVEhJTkci KSk7CisJZWxzZQorCXsKKwkJZm9yZWFjaChjZWxsLCBhY3Rpb25zKQorCQkJbGlzdCA9IGxhcHBl bmQobGlzdCwgbmV3X3N0cmluZ19vYmplY3QobGZpcnN0KGNlbGwpKSk7CisJfQorCisJcmV0ID0g bmV3X29ianRyZWVfVkEoIkNSRUFURSBSVUxFICV7b3JfcmVwbGFjZX1zICV7aWRlbnRpdHl9SSBB UyBPTiAle2V2ZW50fXMgVE8gJXt0YWJsZX1EICV7d2hlcmVfY2xhdXNlfXMgRE8gJXtpbnN0ZWFk fXMiLCA2LAorCQkJCQkJICJvcl9yZXBsYWNlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBub2Rl LT5yZXBsYWNlID8gIk9SIFJFUExBQ0UiIDogIiIsCisJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlw ZVN0cmluZywgbm9kZS0+cnVsZW5hbWUsCisJCQkJCQkgImV2ZW50IiwgT2JqVHlwZVN0cmluZywg ZXZlbnRfc3RyLAorCQkJCQkJICJ0YWJsZSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29i anRyZWVfZm9yX3F1YWxuYW1lX2lkKFJlbGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkg cmV3ckZvcm0tPmV2X2NsYXNzKSwKKwkJCQkJCSAid2hlcmVfY2xhdXNlIiwgT2JqVHlwZU9iamVj dCwgdG1wLAorCQkJCQkJICJpbnN0ZWFkIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBub2RlLT5p bnN0ZWFkID8gIklOU1RFQUQiIDogIkFMU08iKTsKKworCWlmIChsaXN0X2xlbmd0aChsaXN0KSA+ IDEpCisJCWFwcGVuZF9hcnJheV9vYmplY3QocmV0LCAiKCV7YWN0aW9uczo7IH1zKSIsIGxpc3Qp OworCWVsc2UKKwkJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICIle2FjdGlvbnM6OyB9cyIsIGxp c3QpOworCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwl0YWJsZV9jbG9zZShwZ19yZXdyaXRl LCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2Ug YSBDcmVhdGVUcmFuc2Zvcm1TdG10IChDUkVBVEUgVFJBTlNGT1JNKS4KKyAqCisgKiBHaXZlbiBh IHRyYW5zZm9ybSBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJu IGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgQ1JFQVRFIFRSQU5TRk9STSBjb21tYW5k LgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgJXtvcl9yZXBsYWNlfXMgVFJBTlNG T1JNIEZPUiAle3R5cGVuYW1lfUQgTEFOR1VBR0UgJXtsYW5ndWFnZX1JCisgKiAoIEZST00gU1FM IFdJVEggRlVOQ1RJT04gJXtzaWduYXR1cmV9cywgVE8gU1FMIFdJVEggRlVOQ1RJT04KKyAqICV7 c2lnbmF0dXJlX3RvZn1zICkKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9DcmVhdGVU cmFuc2Zvcm1TdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUNyZWF0ZVRy YW5zZm9ybVN0bXQgKm5vZGUgPSAoQ3JlYXRlVHJhbnNmb3JtU3RtdCAqKSBwYXJzZXRyZWU7CisJ T2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKnNpZ25hdHVyZTsKKwlIZWFwVHVwbGUJdHJm VHVwOworCUhlYXBUdXBsZQlsYW5nVHVwOworCUhlYXBUdXBsZQlwcm9jVHVwOworCUZvcm1fcGdf dHJhbnNmb3JtIHRyZkZvcm07CisJRm9ybV9wZ19sYW5ndWFnZSBsYW5nRm9ybTsKKwlGb3JtX3Bn X3Byb2MgcHJvY0Zvcm07CisJaW50CQkJaTsKKworCS8qIEdldCB0aGUgcGdfdHJhbnNmb3JtIHR1 cGxlICovCisJdHJmVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFRSRk9JRCwgT2JqZWN0SWRHZXREYXR1 bShvYmplY3RJZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0cmZUdXApKQorCQllbG9nKEVS Uk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdHJhbnNmb3JtIHdpdGggT0lEICV1IiwKKwkJ CSBvYmplY3RJZCk7CisJdHJmRm9ybSA9IChGb3JtX3BnX3RyYW5zZm9ybSkgR0VUU1RSVUNUKHRy ZlR1cCk7CisKKwkvKiBHZXQgdGhlIGNvcnJlc3BvbmRpbmcgcGdfbGFuZ3VhZ2UgdHVwbGUgKi8K KwlsYW5nVHVwID0gU2VhcmNoU3lzQ2FjaGUxKExBTkdPSUQsIHRyZkZvcm0tPnRyZmxhbmcpOwor CWlmICghSGVhcFR1cGxlSXNWYWxpZChsYW5nVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIGxhbmd1YWdlIHdpdGggT0lEICV1IiwKKwkJCSB0cmZGb3JtLT50cmZs YW5nKTsKKwlsYW5nRm9ybSA9IChGb3JtX3BnX2xhbmd1YWdlKSBHRVRTVFJVQ1QobGFuZ1R1cCk7 CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFICV7b3JfcmVwbGFjZX1zIFRSQU5TRk9S TSBGT1IgJXt0eXBlbmFtZX1EIExBTkdVQUdFICV7bGFuZ3VhZ2V9SSIsIDMsCisJCQkJCQkgIm9y X3JlcGxhY2UiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIG5vZGUtPnJlcGxhY2UgPyAiT1IgUkVQ TEFDRSIgOiAiIiwKKwkJCQkJCSAidHlwZW5hbWUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5l d19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChUeXBlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkg dHJmRm9ybS0+dHJmdHlwZSksCisJCQkJCQkgImxhbmd1YWdlIiwgT2JqVHlwZVN0cmluZywKKwkJ CQkJCSBOYW1lU3RyKGxhbmdGb3JtLT5sYW5uYW1lKSk7CisKKwkvKiBEZXBhcnNlIHRoZSB0cmFu c2Zvcm1fZWxlbWVudF9saXN0ICovCisJaWYgKE9pZElzVmFsaWQodHJmRm9ybS0+dHJmZnJvbXNx bCkpCisJeworCQlMaXN0CSAgICpwYXJhbXMgPSBOSUw7CisKKwkJLyogR2V0IHRoZSBwZ19wcm9j IHR1cGxlIGZvciB0aGUgRlJPTSBGVU5DVElPTiAqLworCQlwcm9jVHVwID0gU2VhcmNoU3lzQ2Fj aGUxKFBST0NPSUQsIHRyZkZvcm0tPnRyZmZyb21zcWwpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFs aWQocHJvY1R1cCkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgZnVu Y3Rpb24gd2l0aCBPSUQgJXUiLAorCQkJCSB0cmZGb3JtLT50cmZmcm9tc3FsKTsKKwkJcHJvY0Zv cm0gPSAoRm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QocHJvY1R1cCk7CisKKwkJLyoKKwkJICogQ1JF QVRFIFRSQU5TRk9STSBkb2VzIG5vdCBjaGFuZ2UgZnVuY3Rpb24gc2lnbmF0dXJlIHNvIHdlIGNh biB1c2UKKwkJICogY2F0YWxvZyB0byBnZXQgaW5wdXQgdHlwZSBPaWRzLgorCQkgKi8KKwkJZm9y IChpID0gMDsgaSA8IHByb2NGb3JtLT5wcm9uYXJnczsgaSsrKQorCQl7CisJCQlPYmpUcmVlICAg ICpwYXJhbV9vYmo7CisKKwkJCXBhcmFtX29iaiA9IG5ld19vYmp0cmVlX1ZBKCIle3R5cGV9VCIs IDEsCisJCQkJCQkJCQkgICJ0eXBlIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJIG5ld19vYmp0 cmVlX2Zvcl90eXBlKHByb2NGb3JtLT5wcm9hcmd0eXBlcy52YWx1ZXNbaV0sIC0xKSk7CisJCQlw YXJhbXMgPSBsYXBwZW5kKHBhcmFtcywgbmV3X29iamVjdF9vYmplY3QocGFyYW1fb2JqKSk7CisJ CX0KKworCQlzaWduYXR1cmUgPSBuZXdfb2JqdHJlZV9WQSgiJXtpZGVudGl0eX1EICgle2FyZ3Vt ZW50czosIH1zKSIsIDIsCisJCQkJCQkJCSAgICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJ CQkJCQkJCSAgIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShwcm9jRm9ybS0+cHJvbmFtZXNwYWNl LAorCQkJCQkJCQkJCQkJCQkJTmFtZVN0cihwcm9jRm9ybS0+cHJvbmFtZSkpLAorCQkJCQkJCQkg ICAiYXJndW1lbnRzIiwgT2JqVHlwZUFycmF5LCBwYXJhbXMpOworCisJCWFwcGVuZF9vYmplY3Rf b2JqZWN0KHJldCwgIihGUk9NIFNRTCBXSVRIIEZVTkNUSU9OICV7c2lnbmF0dXJlfXMiLAorCQkJ CQkJCSBzaWduYXR1cmUpOworCQlSZWxlYXNlU3lzQ2FjaGUocHJvY1R1cCk7CisJfQorCWlmIChP aWRJc1ZhbGlkKHRyZkZvcm0tPnRyZnRvc3FsKSkKKwl7CisJCUxpc3QJICAgKnBhcmFtcyA9IE5J TDsKKworCQkvKiBBcHBlbmQgYSAnLCcgaWYgdHJmZnJvbXNxbCBpcyBwcmVzZW50LCBlbHNlIGFw cGVuZCAnKCcgKi8KKwkJYXBwZW5kX2Zvcm1hdF9zdHJpbmcocmV0LCBPaWRJc1ZhbGlkKHRyZkZv cm0tPnRyZmZyb21zcWwpID8gIiwiIDogIigiKTsKKworCQkvKiBHZXQgdGhlIHBnX3Byb2MgdHVw bGUgZm9yIHRoZSBUTyBGVU5DVElPTiAqLworCQlwcm9jVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFBS T0NPSUQsIHRyZkZvcm0tPnRyZnRvc3FsKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHByb2NU dXApKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZ1bmN0aW9uIHdp dGggT0lEICV1IiwKKwkJCQkgdHJmRm9ybS0+dHJmdG9zcWwpOworCQlwcm9jRm9ybSA9IChGb3Jt X3BnX3Byb2MpIEdFVFNUUlVDVChwcm9jVHVwKTsKKworCQkvKgorCQkgKiBDUkVBVEUgVFJBTlNG T1JNIGRvZXMgbm90IGNoYW5nZSBmdW5jdGlvbiBzaWduYXR1cmUgc28gd2UgY2FuIHVzZQorCQkg KiBjYXRhbG9nIHRvIGdldCBpbnB1dCB0eXBlIE9pZHMuCisJCSAqLworCQlmb3IgKGkgPSAwOyBp IDwgcHJvY0Zvcm0tPnByb25hcmdzOyBpKyspCisJCXsKKwkJCU9ialRyZWUgICAgKnBhcmFtX29i aiA9IG5ld19vYmp0cmVlKCIiKTsKKworCQkJcGFyYW1fb2JqID0gbmV3X29ianRyZWVfVkEoIiV7 dHlwZX1UIiwgMSwKKwkJCQkJCQkJCSAgInR5cGUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJ ICBuZXdfb2JqdHJlZV9mb3JfdHlwZShwcm9jRm9ybS0+cHJvYXJndHlwZXMudmFsdWVzW2ldLCAt MSkpOworCQkJcGFyYW1zID0gbGFwcGVuZChwYXJhbXMsIG5ld19vYmplY3Rfb2JqZWN0KHBhcmFt X29iaikpOworCQl9CisKKwkJc2lnbmF0dXJlID0gbmV3X29ianRyZWVfVkEoIiV7aWRlbnRpdHl9 RCAoJXthcmd1bWVudHM6LCB9cykiLCAyLAorCQkJCQkJCQkgICAiaWRlbnRpdHkiLCBPYmpUeXBl T2JqZWN0LAorCQkJCQkJCQkgICBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUocHJvY0Zvcm0tPnBy b25hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCQkJCU5hbWVTdHIocHJvY0Zvcm0tPnByb25hbWUpKSwK KwkJCQkJCQkJICAgImFyZ3VtZW50cyIsIE9ialR5cGVBcnJheSwgcGFyYW1zKTsKKworCQlhcHBl bmRfb2JqZWN0X29iamVjdChyZXQsICJUTyBTUUwgV0lUSCBGVU5DVElPTiAle3NpZ25hdHVyZV90 b2Z9cyIsCisJCQkJCQkJIHNpZ25hdHVyZSk7CisJCVJlbGVhc2VTeXNDYWNoZShwcm9jVHVwKTsK Kwl9CisKKwlhcHBlbmRfZm9ybWF0X3N0cmluZyhyZXQsICIpIik7CisKKwlSZWxlYXNlU3lzQ2Fj aGUobGFuZ1R1cCk7CisJUmVsZWFzZVN5c0NhY2hlKHRyZlR1cCk7CisJcmV0dXJuIHJldDsKK30K KworLyoKKyAqIERlcGFyc2UgYSBDb21tZW50U3RtdCB3aGVuIGl0IHBlcnRhaW5zIHRvIGEgY29u c3RyYWludC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ09NTUVOVCBPTiBDT05TVFJBSU5U ICV7aWRlbnRpdHl9cyBPTiBbRE9NQUlOXSAle3BhcmVudG9ian1zIElTICV7Y29tbWVudH1zCisg Ki8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ29tbWVudE9uQ29uc3RyYWludFNtdChPaWQg b2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlDb21tZW50U3RtdCAqbm9kZSA9IChDb21t ZW50U3RtdCAqKSBwYXJzZXRyZWU7CisJT2JqVHJlZSAgICAqcmV0OworCUhlYXBUdXBsZQljb25z dHJUdXA7CisJRm9ybV9wZ19jb25zdHJhaW50IGNvbnN0ckZvcm07CisJT2JqZWN0QWRkcmVzcyBh ZGRyOworCisJQXNzZXJ0KG5vZGUtPm9ianR5cGUgPT0gT0JKRUNUX1RBQkNPTlNUUkFJTlQgfHwg bm9kZS0+b2JqdHlwZSA9PSBPQkpFQ1RfRE9NQ09OU1RSQUlOVCk7CisKKwljb25zdHJUdXAgPSBT ZWFyY2hTeXNDYWNoZTEoQ09OU1RST0lELCBvYmplY3RJZCk7CisJaWYgKCFIZWFwVHVwbGVJc1Zh bGlkKGNvbnN0clR1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBj b25zdHJhaW50IHdpdGggT0lEICV1Iiwgb2JqZWN0SWQpOworCWNvbnN0ckZvcm0gPSAoRm9ybV9w Z19jb25zdHJhaW50KSBHRVRTVFJVQ1QoY29uc3RyVHVwKTsKKworCWlmIChPaWRJc1ZhbGlkKGNv bnN0ckZvcm0tPmNvbnJlbGlkKSkKKwkJT2JqZWN0QWRkcmVzc1NldChhZGRyLCBSZWxhdGlvblJl bGF0aW9uSWQsIGNvbnN0ckZvcm0tPmNvbnJlbGlkKTsKKwllbHNlCisJCU9iamVjdEFkZHJlc3NT ZXQoYWRkciwgVHlwZVJlbGF0aW9uSWQsIGNvbnN0ckZvcm0tPmNvbnR5cGlkKTsKKworCXJldCA9 IG5ld19vYmp0cmVlX1ZBKCJDT01NRU5UIE9OIENPTlNUUkFJTlQgJXtpZGVudGl0eX1zIE9OICV7 ZG9tYWlufXMgJXtwYXJlbnRvYmp9cyIsIDMsCisJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZVN0 cmluZywgcHN0cmR1cChOYW1lU3RyKGNvbnN0ckZvcm0tPmNvbm5hbWUpKSwKKwkJCQkJCSAiZG9t YWluIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSAobm9kZS0+b2JqdHlwZSA9PSBPQkpFQ1RfRE9N Q09OU1RSQUlOVCkgPyAiRE9NQUlOIiA6ICIiLAorCQkJCQkJICJwYXJlbnRvYmoiLCBPYmpUeXBl U3RyaW5nLAorCQkJCQkJIGdldE9iamVjdElkZW50aXR5KCZhZGRyLCBmYWxzZSkpOworCisJLyog QWRkIHRoZSBjb21tZW50IGNsYXVzZSAqLworCWFwcGVuZF9saXRlcmFsX29yX251bGwocmV0LCAi SVMgJXtjb21tZW50fXMiLCBub2RlLT5jb21tZW50KTsKKworCVJlbGVhc2VTeXNDYWNoZShjb25z dHJUdXApOworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGFuIENvbW1lbnRTdG10 IChDT01NRU5UIE9OIC4uLikuCisgKgorICogR2l2ZW4gdGhlIG9iamVjdCBhZGRyZXNzIGFuZCB0 aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbgorICogT2JqVHJlZSByZXBy ZXNlbnRpbmcgdGhlIGNvbW1lbnQgY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICog Q09NTUVOVCBPTiAle29ianR5cGV9cyAle2lkZW50aXR5fXMgSVMgJXtjb21tZW50fXMKKyAqLwor c3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9Db21tZW50U3RtdChPYmplY3RBZGRyZXNzIGFkZHJl c3MsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlDb21tZW50U3RtdCAqbm9kZSA9IChDb21tZW50U3Rt dCAqKSBwYXJzZXRyZWU7CisJT2JqVHJlZSAgICAqcmV0OworCWNoYXIJICAgKmlkZW50aXR5Owor CisJLyogQ29tbWVudCBvbiBzdWJzY3JpcHRpb24gaXMgbm90IHN1cHBvcnRlZCAqLworCWlmIChu b2RlLT5vYmp0eXBlID09IE9CSkVDVF9TVUJTQ1JJUFRJT04pCisJCXJldHVybiBOVUxMOworCisJ LyoKKwkgKiBDb25zdHJhaW50cyBhcmUgc3VmZmljaWVudGx5IGRpZmZlcmVudCB0aGF0IGl0IGlz IGVhc2llciB0byBoYW5kbGUgdGhlbQorCSAqIHNlcGFyYXRlbHkuCisJICovCisJaWYgKG5vZGUt Pm9ianR5cGUgPT0gT0JKRUNUX0RPTUNPTlNUUkFJTlQgfHwKKwkJbm9kZS0+b2JqdHlwZSA9PSBP QkpFQ1RfVEFCQ09OU1RSQUlOVCkKKwl7CisJCUFzc2VydChhZGRyZXNzLmNsYXNzSWQgPT0gQ29u c3RyYWludFJlbGF0aW9uSWQpOworCQlyZXR1cm4gZGVwYXJzZV9Db21tZW50T25Db25zdHJhaW50 U210KGFkZHJlc3Mub2JqZWN0SWQsIHBhcnNldHJlZSk7CisJfQorCisJcmV0ID0gbmV3X29ianRy ZWVfVkEoIkNPTU1FTlQgT04gJXtvYmp0eXBlfXMiLCAxLAorCQkJCQkJICJvYmp0eXBlIiwgT2Jq VHlwZVN0cmluZywKKwkJCQkJCSAoY2hhciAqKSBzdHJpbmdpZnlfb2JqdHlwZShub2RlLT5vYmp0 eXBlLCBmYWxzZSkpOworCisJLyoKKwkgKiBBZGQgdGhlIG9iamVjdCBpZGVudGl0eSBjbGF1c2Uu ICBGb3IgemVybyBhcmd1bWVudCBhZ2dyZWdhdGVzIHdlIG5lZWQKKwkgKiB0byBhZGQgdGhlICgq KSBiaXQ7IGluIGFsbCBvdGhlciBjYXNlcyB3ZSBjYW4ganVzdCB1c2UKKwkgKiBnZXRPYmplY3RJ ZGVudGl0eS4KKwkgKgorCSAqIFhYWCBzaG91bGRuJ3Qgd2UgaW5zdGVhZCBmaXggdGhlIG9iamVj dCBpZGVudGl0aWVzIGZvciB6ZXJvLWFyZ3VtZW50CisJICogYWdncmVnYXRlcz8KKwkgKi8KKwlp ZiAobm9kZS0+b2JqdHlwZSA9PSBPQkpFQ1RfQUdHUkVHQVRFKQorCXsKKwkJSGVhcFR1cGxlCXBy b2NUdXA7CisJCUZvcm1fcGdfcHJvYyBwcm9jRm9ybTsKKworCQlwcm9jVHVwID0gU2VhcmNoU3lz Q2FjaGUxKFBST0NPSUQsIE9iamVjdElkR2V0RGF0dW0oYWRkcmVzcy5vYmplY3RJZCkpOworCQlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQocHJvY1R1cCkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgcHJvY2VkdXJlIHdpdGggT0lEICV1IiwKKwkJCQkgYWRkcmVzcy5vYmpl Y3RJZCk7CisJCXByb2NGb3JtID0gKEZvcm1fcGdfcHJvYykgR0VUU1RSVUNUKHByb2NUdXApOwor CQlpZiAocHJvY0Zvcm0tPnByb25hcmdzID09IDApCisJCQlpZGVudGl0eSA9IHBzcHJpbnRmKCIl cygqKSIsCisJCQkJCQkJCXF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKGdldF9uYW1lc3BhY2Vf bmFtZShwcm9jRm9ybS0+cHJvbmFtZXNwYWNlKSwKKwkJCQkJCQkJCQkJCQkJICAgTmFtZVN0cihw cm9jRm9ybS0+cHJvbmFtZSkpKTsKKwkJZWxzZQorCQkJaWRlbnRpdHkgPSBnZXRPYmplY3RJZGVu dGl0eSgmYWRkcmVzcywgZmFsc2UpOworCQlSZWxlYXNlU3lzQ2FjaGUocHJvY1R1cCk7CisJfQor CWVsc2UKKwkJaWRlbnRpdHkgPSBnZXRPYmplY3RJZGVudGl0eSgmYWRkcmVzcywgZmFsc2UpOwor CisJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtpZGVudGl0eX1zIiwgImlkZW50aXR5Iiwg aWRlbnRpdHkpOworCisJLyogQWRkIHRoZSBjb21tZW50IGNsYXVzZTsgY2FuIGJlIGVpdGhlciBO VUxMIG9yIGEgcXVvdGVkIGxpdGVyYWwuICovCisJYXBwZW5kX2xpdGVyYWxfb3JfbnVsbChyZXQs ICJJUyAle2NvbW1lbnR9cyIsIG5vZGUtPmNvbW1lbnQpOworCisJcmV0dXJuIHJldDsKK30KKwor LyoKKyAqIERlcGFyc2UgYSBTRUNVUklUWSBMQUJFTCBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ug c3ludGF4CisgKiBTRUNVUklUWSBMQUJFTCBGT1IgJXtwcm92aWRlcn1zIE9OICV7b2JqZWN0X3R5 cGVfbmFtZX1zICV7aWRlbnRpdHl9cyBJUyAle2xhYmVsfXMKKyAqLworc3RhdGljIE9ialRyZWUg KgorZGVwYXJzZV9TZWNMYWJlbFN0bXQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQoreworCU9ialRy ZWUJICAgKnJldDsKKwlTZWNMYWJlbFN0bXQgKm5vZGUgPSAoU2VjTGFiZWxTdG10ICopIGNtZC0+ cGFyc2V0cmVlOworCisJLyogRG9uJ3QgZGVwYXJzZSBzcWwgY29tbWFuZHMgZ2VuZXJhdGVkIHdo aWxlIGNyZWF0aW5nIGV4dGVuc2lvbiAqLworCWlmIChjbWQtPmluX2V4dGVuc2lvbikKKwkJcmV0 dXJuIE5VTEw7CisKKwlBc3NlcnQoY21kLT5kLnNlY2xhYmVsLnByb3ZpZGVyKTsKKworCXJldCA9 IG5ld19vYmp0cmVlX1ZBKCJTRUNVUklUWSBMQUJFTCBGT1IgJXtwcm92aWRlcn1zIE9OICV7b2Jq dHlwZX1zICV7aWRlbnRpdHl9cyIsIDMsCisJCQkJCQkgInByb3ZpZGVyIiwgT2JqVHlwZVN0cmlu ZywgY21kLT5kLnNlY2xhYmVsLnByb3ZpZGVyLAorCQkJCQkJICJvYmp0eXBlIiwgT2JqVHlwZVN0 cmluZywgc3RyaW5naWZ5X29ianR5cGUobm9kZS0+b2JqdHlwZSwgZmFsc2UpLAorCQkJCQkJICJp ZGVudGl0eSIsIE9ialR5cGVTdHJpbmcsIGdldE9iamVjdElkZW50aXR5KCYoY21kLT5kLnNlY2xh YmVsLmFkZHJlc3MpLCBmYWxzZSkpOworCisJLyogQWRkIHRoZSBsYWJlbCBjbGF1c2U7IGNhbiBi ZSBlaXRoZXIgTlVMTCBvciBhIHF1b3RlZCBsaXRlcmFsLiAqLworCWFwcGVuZF9saXRlcmFsX29y X251bGwocmV0LCAiSVMgJXtsYWJlbH1zIiwgbm9kZS0+bGFiZWwpOworCisJcmV0dXJuIHJldDsK K30KKworLyoKKyAqIERlcGFyc2UgYSBDcmVhdGVBbVN0bXQgKENSRUFURSBBQ0NFU1MgTUVUSE9E KS4KKyAqCisgKiBHaXZlbiBhbiBhY2Nlc3MgbWV0aG9kIE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUg dGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4KKyAqIE9ialRyZWUgcmVwcmVzZW50aW5nIHRoZSBD UkVBVEUgQUNDRVNTIE1FVEhPRCBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBD UkVBVEUgQUNDRVNTIE1FVEhPRCAle2lkZW50aXR5fUkgVFlQRSAle2FtX3R5cGV9cyBIQU5ETEVS ICV7aGFuZGxlcn1ECisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRlQW1TdG10 KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCU9ialRyZWUgICAgKnJldDsKKwlI ZWFwVHVwbGUJYW1UdXA7CisJRm9ybV9wZ19hbQlhbUZvcm07CisJY2hhcgkgICAqYW10eXBlOwor CisJYW1UdXAgPSBTZWFyY2hTeXNDYWNoZTEoQU1PSUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0 SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoYW1UdXApKQorCQllbG9nKEVSUk9SLCAiY2Fj aGUgbG9va3VwIGZhaWxlZCBmb3IgYWNjZXNzIG1ldGhvZCB3aXRoIE9JRCAldSIsCisJCQkgb2Jq ZWN0SWQpOworCWFtRm9ybSA9IChGb3JtX3BnX2FtKSBHRVRTVFJVQ1QoYW1UdXApOworCisJc3dp dGNoIChhbUZvcm0tPmFtdHlwZSkKKwl7CisJCWNhc2UgJ2knOgorCQkJYW10eXBlID0gIklOREVY IjsKKwkJCWJyZWFrOworCQljYXNlICd0JzoKKwkJCWFtdHlwZSA9ICJUQUJMRSI7CisJCQlicmVh azsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIHR5cGUgJWMgZm9yIGFjY2Vz cyBtZXRob2QiLCBhbUZvcm0tPmFtdHlwZSk7CisJfQorCisJcmV0ID0gbmV3X29ianRyZWVfVkEo IkNSRUFURSBBQ0NFU1MgTUVUSE9EICV7aWRlbnRpdHl9SSBUWVBFICV7YW1fdHlwZX1zIEhBTkRM RVIgJXtoYW5kbGVyfUQiLCAzLAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVTdHJpbmcsCisJ CQkJCQkgTmFtZVN0cihhbUZvcm0tPmFtbmFtZSksCisJCQkJCQkgImFtX3R5cGUiLCBPYmpUeXBl U3RyaW5nLCBhbXR5cGUsCisJCQkJCQkgImhhbmRsZXIiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJ IG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJ CQkJCQkJCSBhbUZvcm0tPmFtaGFuZGxlcikpOworCisJUmVsZWFzZVN5c0NhY2hlKGFtVHVwKTsK KworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBwdWJsaWNhdGlvbiBjb2x1 bW4gbGlzdC4KKyAqCisgKiBHaXZlbiBhIHR1cGxlIG9mIHBnX3B1YmxpY2F0aW9uX3JlbCwgcmV0 dXJuIGFuIG9ialRyZWUgdGhhdCByZXByZXNlbnQgdGhlCisgKiBjb2x1bW4gbmFtZXMuCisgKi8K K3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfUHVibGljYXRpb25SZWxhdGlvbkNvbHVtbkxpc3Qo SGVhcFR1cGxlIHB1YnJlbHR1cCkKK3sKKwlib29sCQlpc251bGw7CisJTGlzdAkgICAqY29sbGlz dCA9IE5JTDsKKwlPYmpUcmVlCSAgICpjb2x1bW5saXN0OworCURhdHVtCQlhdHRyc2RhdHVtOwor CisJYXR0cnNkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihQVUJMSUNBVElPTlJFTE1BUCwgcHVicmVs dHVwLAorCQkJCQkJCQkgQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJhdHRycywKKwkJCQkJCQkJ ICZpc251bGwpOworCisJY29sdW1ubGlzdCA9IG5ld19vYmp0cmVlKCIiKTsKKwlpZiAoIWlzbnVs bCkKKwl7CisJCUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHB1YnJlbDsKKwkJQXJyYXlUeXBlICAq YXJyOworCQlpbnQJCQluZWxlbXM7CisJCWludDE2CSAgICplbGVtczsKKworCQlhcnIgPSBEYXR1 bUdldEFycmF5VHlwZVAoYXR0cnNkYXR1bSk7CisJCW5lbGVtcyA9IEFSUl9ESU1TKGFycilbMF07 CisJCWVsZW1zID0gKGludDE2ICopIEFSUl9EQVRBX1BUUihhcnIpOworCisJCXB1YnJlbCA9IChG b3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHB1YnJlbHR1cCk7CisKKwkJZm9yIChp bnQgaSA9IDA7IGkgPCBuZWxlbXM7IGkrKykKKwkJeworCQkJY2hhciAqY29sbmFtZSA9IGdldF9h dHRuYW1lKHB1YnJlbC0+cHJyZWxpZCwgZWxlbXNbaV0sIGZhbHNlKTsKKwkJCWNvbGxpc3QgPSBs YXBwZW5kKGNvbGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0KGNvbG5hbWUpKTsKKwkJfQorCisJCWFw cGVuZF9hcnJheV9vYmplY3QoY29sdW1ubGlzdCwgIigle2NvbHM6LCB9cykiLCBjb2xsaXN0KTsK Kwl9CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQoY29sdW1ubGlzdCk7CisKKwlyZXR1cm4g Y29sdW1ubGlzdDsKK30KKworLyoKKyAqIERlcGFyc2UgdGhlIHB1YmxpY2F0aW9uIHdoZXJlIGNs YXVzZS4KKyAqCisgKiBHaXZlbiBhIHR1cGxlIG9mIHBnX3B1YmxpY2F0aW9uX3JlbCwgcmV0dXJu IGEgb2JqVHJlZSB0aGF0IHJlcHJlc2VudCB0aGUKKyAqIHB1YmxpY2F0aW9uIHdoZXJlIGNsYXVz ZS4KKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9QdWJsaWNhdGlvblJlbGF0aW9uV2hl cmVDbGF1c2UoSGVhcFR1cGxlIHB1YnJlbHR1cCkKK3sKKwlEYXR1bQkJCQkJcXVhbGRhdHVtOwor CU9ialRyZWUJCQkJICAgKndoZXJlY2xhdXNlOworCWJvb2wJCQkJCWlzbnVsbDsKKworCXF1YWxk YXR1bSA9IFN5c0NhY2hlR2V0QXR0cihQVUJMSUNBVElPTlJFTE1BUCwgcHVicmVsdHVwLAorCQkJ CQkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcnF1YWwsICZpc251bGwpOworCisJd2hlcmVj bGF1c2UgPSBuZXdfb2JqdHJlZSgiIik7CisJaWYgKCFpc251bGwpCisJeworCQlGb3JtX3BnX3B1 YmxpY2F0aW9uX3JlbCBwdWJyZWw7CisJCU5vZGUJCQkJICAgKnF1YWxub2RlOworCQlMaXN0CQkJ CSAgICpjb250ZXh0OworCQljaGFyCQkJCSAgICpxdWFsc3RyOworCQlPaWQJCQkJCQlyZWxpZDsK KworCQlwdWJyZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVChwdWJyZWx0 dXApOworCQlyZWxpZCA9IHB1YnJlbC0+cHJyZWxpZDsKKworCQljb250ZXh0ID0gZGVwYXJzZV9j b250ZXh0X2ZvcihnZXRfcmVsX25hbWUocmVsaWQpLCByZWxpZCk7CisJCXF1YWxub2RlID0gc3Ry aW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcocXVhbGRhdHVtKSk7CisJCXF1YWxzdHIgPSBk ZXBhcnNlX2V4cHJlc3Npb24ocXVhbG5vZGUsIGNvbnRleHQsIGZhbHNlLCBmYWxzZSk7CisKKwkJ YXBwZW5kX3N0cmluZ19vYmplY3Qod2hlcmVjbGF1c2UsICJXSEVSRSAle3doZXJlfXMiLCAid2hl cmUiLCBxdWFsc3RyKTsKKwl9CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQod2hlcmVjbGF1 c2UpOworCisJcmV0dXJuIHdoZXJlY2xhdXNlOworfQorCisvKgorICogU3Vicm91dGluZSBmb3Ig Q1JFQVRFIFBVQkxJQ0FUSU9OIGRlcGFyc2luZy4KKyAqCisgKiBEZWFsIHdpdGggYWxsIHRoZSBw dWJsaWNhdGlvbiB0YWJsZSBpbmZvcm1hdGlvbiBpbmNsdWRpbmcgdGhlIHdoZXJlIGNsYXVzZQor ICogYW5kIGNvbHVtbiBsaXN0LgorICovCitzdGF0aWMgTGlzdCAqCitkZXBhcnNlX1B1YmxpY2F0 aW9uUmVsYXRpb25EZWZzKE9pZCBwdWJvaWQpCit7CisJUmVsYXRpb24JcHVicmVsc3JlbDsKKwlT Y2FuS2V5RGF0YSBzY2Fua2V5OworCVN5c1NjYW5EZXNjIHNjYW47CisJSGVhcFR1cGxlCXR1cDsK KwlMaXN0CSAgICpyZWxkZWZzID0gTklMOworCisJcHVicmVsc3JlbCA9IHRhYmxlX29wZW4oUHVi bGljYXRpb25SZWxSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJU2NhbktleUluaXQo JnNjYW5rZXksCisJCQkJQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJwdWJpZCwKKwkJCQlCVEVx dWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShwdWJvaWQp KTsKKworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocHVicmVsc3JlbCwgUHVibGljYXRpb25S ZWxQcnB1YmlkSW5kZXhJZCwKKwkJCQkJCQkgIHRydWUsIE5VTEwsIDEsICZzY2Fua2V5KTsKKwor CXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQor CXsKKwkJRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwgcHVicmVsOworCQlPaWQJCQkJCQlyZWxpZDsK KwkJT2JqVHJlZQkJCQkgICAqY29sdW1ubGlzdDsKKwkJT2JqVHJlZQkJCQkgICAqd2hlcmVjbGF1 c2U7CisJCU9ialRyZWUJCQkJICAgKnJlbGRlZjsKKworCQlwdWJyZWwgPSAoRm9ybV9wZ19wdWJs aWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOworCQlyZWxpZCA9IHB1YnJlbC0+cHJyZWxpZDsK KworCQlyZWxkZWYgPSBuZXdfb2JqdHJlZV9WQSgiJXt0YWJsZW5hbWV9RCIsIDEsCisJCQkJCQkJ CSJ0YWJsZW5hbWUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1 YWxuYW1lX2lkKFJlbGF0aW9uUmVsYXRpb25JZCwgcmVsaWQpKTsKKworCQljb2x1bW5saXN0ID0g ZGVwYXJzZV9QdWJsaWNhdGlvblJlbGF0aW9uQ29sdW1uTGlzdCh0dXApOworCQlhcHBlbmRfb2Jq ZWN0X29iamVjdChyZWxkZWYsICIle2NvbHVtbl9saXN0fXMiLCBjb2x1bW5saXN0KTsKKworCQl3 aGVyZWNsYXVzZSA9IGRlcGFyc2VfUHVibGljYXRpb25SZWxhdGlvbldoZXJlQ2xhdXNlKHR1cCk7 CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJlbGRlZiwgIiV7d2hlcmVfY2xhdXNlfXMiLCB3aGVy ZWNsYXVzZSk7CisKKwkJcmVsZGVmcyA9IGxhcHBlbmQocmVsZGVmcywgbmV3X29iamVjdF9vYmpl Y3QocmVsZGVmKSk7CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwl0YWJsZV9jbG9z ZShwdWJyZWxzcmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHJlbGRlZnM7Cit9CisK Ky8qCisgKiBEZXBhcnNlIGEgQ3JlYXRlUHVibGljYXRpb25TdG10IChDUkVBVEUgUFVCTElDQVRJ T04pLgorICoKKyAqIEdpdmVuIGFuIHB1YmxpY2F0aW9uIE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUg dGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4KKyAqIE9ialRyZWUgcmVwcmVzZW50aW5nIHRoZSBD UkVBVEUgUFVCTElDQVRJT04gY29tbWFuZC4KICAqCiAgKiBWZXJib3NlIHN5bnRheAotICogQUxU RVIgJXtvYmp0eXBlfXMgJXtpZl9leGlzdHN9cyAle2lkZW50aXR5fUQgUkVOQU1FIFRPICV7bmV3 bmFtZX1JCisgKiBDUkVBVEUgUFVCTElDQVRJT04gJXtpZGVudGl0eX1JICV7Zm9yX3RhYmxlc31z ICV7Zm9yX3NjaGVtYXN9cyAle3dpdGhfY2xhdXNlfXMKICAqIE9SCi0gKiBBTFRFUiBUQUJMRSAl e29ubHl9cyAle2lkZW50aXR5fUQgUkVOQU1FIENPTlNUUkFJTlQgJXtvbGRuYW1lfUkgVE8gJXtu ZXduYW1lfUkKKyAqIENSRUFURSBQVUJMSUNBVElPTiAle2lkZW50aXR5fUkgRk9SIEFMTCBUQUJM RVMgJXt3aXRoX2NsYXVzZX1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRl UHVibGljYXRpb25TdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUNyZWF0 ZVB1YmxpY2F0aW9uU3RtdCAqbm9kZSA9IChDcmVhdGVQdWJsaWNhdGlvblN0bXQgKikgcGFyc2V0 cmVlOworCU9ialRyZWUgICAgKmNyZWF0ZVB1YjsKKwlPYmpUcmVlICAgICp0bXA7CisJSGVhcFR1 cGxlCXB1YlR1cDsKKwlGb3JtX3BnX3B1YmxpY2F0aW9uCXB1YkZvcm07CisJTGlzdAkgICAqbGlz dCA9IE5JTDsKKwlMaXN0Q2VsbCAgICpjZWxsOworCisJcHViVHVwID0gU2VhcmNoU3lzQ2FjaGUx KFBVQkxJQ0FUSU9OT0lELCBPYmplY3RJZEdldERhdHVtKG9iamVjdElkKSk7CisJaWYgKCFIZWFw VHVwbGVJc1ZhbGlkKHB1YlR1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVk IGZvciBhY2Nlc3MgbWV0aG9kIHdpdGggT0lEICV1IiwKKwkJCSBvYmplY3RJZCk7CisJcHViRm9y bSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QocHViVHVwKTsKKworCWNyZWF0ZVB1 YiA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUgUFVCTElDQVRJT04gJXtpZGVudGl0eX1zIiwgMSwK KwkJCQkJCQkgICAiaWRlbnRpdHkiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCSAgIE5hbWVTdHIo cHViRm9ybS0+cHVibmFtZSkpOworCisJaWYgKG5vZGUtPmZvcl9hbGxfdGFibGVzKQorCQlhcHBl bmRfZm9ybWF0X3N0cmluZyhjcmVhdGVQdWIsICJGT1IgQUxMIFRBQkxFUyIpOworCWVsc2UKKwl7 CisJCUxpc3QJICAgKm9sZHNjaGVtYWlkczsKKwkJU3RyaW5nSW5mb0RhdGEgZm9yX3NjaGVtYXM7 CisKKwkJLyogRk9SIFRBQkxFUyB0MSx0MiwuLi4gKi8KKwkJdG1wID0gbmV3X29ianRyZWUoIkZP UiBUQUJMRSIpOworCisJCWxpc3QgPSBkZXBhcnNlX1B1YmxpY2F0aW9uUmVsYXRpb25EZWZzKG9i amVjdElkKTsKKwkJaWYgKGxpc3QgIT0gTklMKQorCQkJYXBwZW5kX2FycmF5X29iamVjdCh0bXAs ICIle3RhYmxlczosIH1zIiwgbGlzdCk7CisJCWVsc2UKKwkJCWFwcGVuZF9ub3RfcHJlc2VudCh0 bXApOworCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KGNyZWF0ZVB1YiwgIiV7Zm9yX3RhYmxlc31z IiwgdG1wKTsKKworCQkvKiBGT1IgVEFCTEVTIElOIFNDSEVNQSBzMSxzMiwuLi4gKi8KKwkJaW5p dFN0cmluZ0luZm8oJmZvcl9zY2hlbWFzKTsKKwkJaWYgKGxpc3QgIT0gTklMKQorCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmZm9yX3NjaGVtYXMsICIsICIpOworCQllbHNlCisJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZmb3Jfc2NoZW1hcywgIkZPUiAiKTsKKwkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZygmZm9yX3NjaGVtYXMsICJUQUJMRVMgSU4gU0NIRU1BIik7CisKKwkJdG1wID0gbmV3 X29ianRyZWUoZm9yX3NjaGVtYXMuZGF0YSk7CisJCWxpc3QgPSBOSUw7CisJCW9sZHNjaGVtYWlk cyA9IEdldFB1YmxpY2F0aW9uU2NoZW1hcyhwdWJGb3JtLT5vaWQpOworCQlmb3JlYWNoKGNlbGws IG9sZHNjaGVtYWlkcykKKwkJeworCQkJT2lkCQlzY2hlbWFpZCA9IGxmaXJzdF9vaWQoY2VsbCk7 CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChnZXRfbmFtZXNwYWNl X25hbWUoc2NoZW1haWQpKSk7CisJCX0KKworCQlpZiAobGlzdCAhPSBOSUwpCisJCQlhcHBlbmRf YXJyYXlfb2JqZWN0KHRtcCwgIiV7c2NoZW1hczosIH1JIiwgbGlzdCk7CisJCWVsc2UKKwkJCWFw cGVuZF9ub3RfcHJlc2VudCh0bXApOworCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KGNyZWF0ZVB1 YiwgIiV7Zm9yX3NjaGVtYXN9cyIsIHRtcCk7CisJfQorCisJLyogV0lUSCBjbGF1c2UgKi8KKwl0 bXAgPSBuZXdfb2JqdHJlZSgiV0lUSCIpOworCisJbGlzdCA9IE5JTDsKKwlmb3JlYWNoKGNlbGws IG5vZGUtPm9wdGlvbnMpCisJeworCQlPYmpUcmVlICAgICp0bXBfb2JqOworCQlEZWZFbGVtICAg ICpvcHQgPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7CisKKwkJdG1wX29iaiA9IGRlcGFyc2Vf RGVmRWxlbShvcHQsIGZhbHNlKTsKKwkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9v YmplY3QodG1wX29iaikpOworCX0KKworCWlmIChsaXN0ICE9IE5JTCkKKwkJYXBwZW5kX2FycmF5 X29iamVjdCh0bXAsICIoJXt3aXRoOiwgfXMpIiwgbGlzdCk7CisJZWxzZQorCQlhcHBlbmRfbm90 X3ByZXNlbnQodG1wKTsKKworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KGNyZWF0ZVB1YiwgIiV7d2l0 aF9jbGF1c2V9cyIsIHRtcCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUocHViVHVwKTsKKworCXJldHVy biBjcmVhdGVQdWI7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQWx0ZXJQdWJsaWNhdGlvblN0bXQg KEFMVEVSIFBVQkxJQ0FUSU9OKS4KKyAqCisgKiBHaXZlbiBhbiBwdWJsaWNhdGlvbiByZWxhdGlv biBPSUQgb3IgcHVibGljYXRpb24gc2NoZW1hIE9JRCBhbmQgdGhlIHBhcnNlCisgKiB0cmVlIHRo YXQgYWRkZWQgaXQsIHJldHVybiBhbiBPYmpUcmVlIHJlcHJlc2VudGluZyB0aGUgQUxURVIgUFVC TElDQVRJT04KKyAqIGNvbW1hbmQuCisgKgorICogTm90ZSB0aGF0IG9ubHkgQUxURVIgUFVCTElD QVRJT04gQUREL1NFVCBzaG91bGQgYmUgZGVwYXJzZWQgaGVyZSwgQUxURVIKKyAqIFBVQkxJQ0FU SU9OIERST1AgaXMgZGVwYXJzZWQgaW4gZGlmZmVyZW50IHBsYWNlcy4KKyAqCisgKiBYWFggQUxU RVIgUFVCTElDQVRJT04gU0VUIHB1YmxpY2F0aW9uX29iamVjdCBpcyBjb252ZXJ0ZWQgdG8gQUxU RVIKKyAqIFBVQkxJQ0FUSU9OIEFERC9EUk9QLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBB TFRFUiBQVUJMSUNBVElPTiAle2lkZW50aXR5fUkgJXthZGRfb2JqZWN0fXMKICAqIE9SCi0gKiBB TFRFUiAle29ianR5cGV9cyAle2lmX2V4aXN0c31zICV7b25seX1zICV7aWRlbnRpdHl9RCBSRU5B TUUgQ09MVU1OICV7Y29sbmFtZX1JIFRPICV7bmV3bmFtZX1JICV7Y2FzY2FkZX1zCisgKiBBTFRF UiBQVUJMSUNBVElPTiAle2lkZW50aXR5fUkgJXtzZXRfb3B0aW9uc31zCiAgKi8KIHN0YXRpYyBP YmpUcmVlICoKLWRlcGFyc2VfUmVuYW1lU3RtdChPYmplY3RBZGRyZXNzIGFkZHJlc3MsIE5vZGUg KnBhcnNldHJlZSkKK2RlcGFyc2VfQWx0ZXJQdWJsaWNhdGlvbkFkZFN0bXQoT2JqZWN0QWRkcmVz cyBvYmplY3QsIE5vZGUgKnBhcnNldHJlZSkKIHsKLQlSZW5hbWVTdG10ICpub2RlID0gKFJlbmFt ZVN0bXQgKikgcGFyc2V0cmVlOwotCU9ialRyZWUgICAgKnJldDsKLQlSZWxhdGlvbglyZWxhdGlv bjsKLQlPaWQJCQlzY2hlbWFJZDsKKwljaGFyCSAgICpwdWJuYW1lOworCU9ialRyZWUJICAgKmFs dGVycHViOworCU9ialRyZWUJICAgKmFkZG9iamVjdCA9IE5VTEw7CisJT2JqVHJlZQkgICAqc2V0 b3B0aW9uID0gTlVMTDsKKwlBbHRlclB1YmxpY2F0aW9uU3RtdCAqbm9kZSA9IChBbHRlclB1Ymxp Y2F0aW9uU3RtdCAqKSBwYXJzZXRyZWU7CiAKLQkvKgotCSAqIEluIGFuIEFMVEVSIC4uIFJFTkFN RSBjb21tYW5kLCB3ZSBkb24ndCBoYXZlIHRoZSBvcmlnaW5hbCBuYW1lIG9mIHRoZQotCSAqIG9i amVjdCBpbiBzeXN0ZW0gY2F0YWxvZ3M6IHNpbmNlIHdlIGluc3BlY3QgdGhlbSBhZnRlciB0aGUg Y29tbWFuZCBoYXMKLQkgKiBleGVjdXRlZCwgdGhlIG9sZCBuYW1lIGlzIGFscmVhZHkgZ29uZS4g IFRoZXJlZm9yZSwgd2UgZXh0cmFjdCBpdCBmcm9tCi0JICogdGhlIHBhcnNlIG5vZGUuICBOb3Rl IHdlIHN0aWxsIGV4dHJhY3QgdGhlIHNjaGVtYSBuYW1lIGZyb20gdGhlIGNhdGFsb2cKLQkgKiAo aXQgbWlnaHQgbm90IGJlIHByZXNlbnQgaW4gdGhlIHBhcnNlIG5vZGUpOyBpdCBjYW5ub3QgcG9z c2libHkgaGF2ZQotCSAqIGNoYW5nZWQgYW55d2F5LgotCSAqLwotCXN3aXRjaCAobm9kZS0+cmVu YW1lVHlwZSkKKwlzd2l0Y2ggKG9iamVjdC5jbGFzc0lkKQogCXsKLQkJY2FzZSBPQkpFQ1RfSU5E RVg6Ci0JCWNhc2UgT0JKRUNUX1RBQkxFOgotCQkJcmVsYXRpb24gPSByZWxhdGlvbl9vcGVuKGFk ZHJlc3Mub2JqZWN0SWQsIEFjY2Vzc1NoYXJlTG9jayk7Ci0JCQlzY2hlbWFJZCA9IFJlbGF0aW9u R2V0TmFtZXNwYWNlKHJlbGF0aW9uKTsKLQkJCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiAl e29ianR5cGV9cyAle2lmX2V4aXN0c31zICV7aWRlbnRpdHl9RCBSRU5BTUUgVE8gJXtuZXduYW1l fUkiLCA0LAotCQkJCQkJCQkgIm9ianR5cGUiLCBPYmpUeXBlU3RyaW5nLAotCQkJCQkJCQkgc3Ry aW5naWZ5X29ianR5cGUobm9kZS0+cmVuYW1lVHlwZSwgZmFsc2UpLAotCQkJCQkJCQkgImlmX2V4 aXN0cyIsIE9ialR5cGVTdHJpbmcsCi0JCQkJCQkJCSBub2RlLT5taXNzaW5nX29rID8gIklGIEVY SVNUUyIgOiAiIiwKLQkJCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCi0JCQkJCQkJ CSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUoc2NoZW1hSWQsCi0JCQkJCQkJCQkJCQkJCSAgbm9k ZS0+cmVsYXRpb24tPnJlbG5hbWUpLAotCQkJCQkJCQkgIm5ld25hbWUiLCBPYmpUeXBlU3RyaW5n LAotCQkJCQkJCQkgbm9kZS0+bmV3bmFtZSk7Ci0JCQlyZWxhdGlvbl9jbG9zZShyZWxhdGlvbiwg QWNjZXNzU2hhcmVMb2NrKTsKKwkJLyogQUREIFRBQkxFICovCisJCWNhc2UgUHVibGljYXRpb25S ZWxSZWxhdGlvbklkOgorCQkJeworCQkJCU9ialRyZWUJICAgKndoZXJlY2xhdXNlOworCQkJCU9i alRyZWUJICAgKmNvbHVtbmxpc3Q7CisJCQkJRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwgcHVicmVs Zm9ybTsKKwkJCQlPaWQJCQlyZWxpZDsKKwkJCQlIZWFwVHVwbGUJdHVwOworCisJCQkJdHVwID0g U2VhcmNoU3lzQ2FjaGUxKFBVQkxJQ0FUSU9OUkVMLAorCQkJCQkJCQkJICBPYmplY3RJZEdldERh dHVtKG9iamVjdC5vYmplY3RJZCkpOworCisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkp CisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBwdWJsaWNhdGlvbiB0 YWJsZSAldSIsCisJCQkJCQkgb2JqZWN0Lm9iamVjdElkKTsKKworCQkJCXB1YnJlbGZvcm0gPSAo Rm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOworCQkJCXJlbGlkID0gcHVi cmVsZm9ybS0+cHJyZWxpZDsKKworCQkJCWFkZG9iamVjdCA9IG5ld19vYmp0cmVlX1ZBKCJBREQg VEFCTEUgJXt0YWJsZW5hbWV9RCIsIDEsCisJCQkJCQkJCQkJICAgInRhYmxlbmFtZSIsIE9ialR5 cGVPYmplY3QsCisJCQkJCQkJCQkJICAgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFJlbGF0 aW9uUmVsYXRpb25JZCwgcmVsaWQpKTsKKworCQkJCWNvbHVtbmxpc3QgPSBkZXBhcnNlX1B1Ymxp Y2F0aW9uUmVsYXRpb25Db2x1bW5MaXN0KHR1cCk7CisJCQkJYXBwZW5kX29iamVjdF9vYmplY3Qo YWRkb2JqZWN0LCAiJXtjb2x1bW5fbGlzdH1zIiwgY29sdW1ubGlzdCk7CisKKwkJCQl3aGVyZWNs YXVzZSA9IGRlcGFyc2VfUHVibGljYXRpb25SZWxhdGlvbldoZXJlQ2xhdXNlKHR1cCk7CisJCQkJ YXBwZW5kX29iamVjdF9vYmplY3QoYWRkb2JqZWN0LCAiJXt3aGVyZV9jbGF1c2V9cyIsIHdoZXJl Y2xhdXNlKTsKKworCQkJCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCQkJfQogCQkJYnJlYWs7CiAK LQkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoKKwkJLyogQUREIFRBQkxFUyBJTiBTQ0hFTUEg Ki8KKwkJY2FzZSBQdWJsaWNhdGlvbk5hbWVzcGFjZVJlbGF0aW9uSWQ6CiAJCQl7Ci0JCQkJSGVh cFR1cGxlCWNvbnN0cnR1cDsKLQkJCQlGb3JtX3BnX2NvbnN0cmFpbnQgY29uc3Rmb3JtOworCQkJ CUZvcm1fcGdfcHVibGljYXRpb25fbmFtZXNwYWNlIHB1Ym5zcGZvcm07CisJCQkJSGVhcFR1cGxl CXR1cDsKIAotCQkJCWNvbnN0cnR1cCA9IFNlYXJjaFN5c0NhY2hlMShDT05TVFJPSUQsCi0JCQkJ CQkJCQkJCU9iamVjdElkR2V0RGF0dW0oYWRkcmVzcy5vYmplY3RJZCkpOwotCQkJCWlmICghSGVh cFR1cGxlSXNWYWxpZChjb25zdHJ0dXApKQotCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3Vw IGZhaWxlZCBmb3IgY29uc3RyYWludCB3aXRoIE9JRCAldSIsCi0JCQkJCQkgYWRkcmVzcy5vYmpl Y3RJZCk7Ci0JCQkJY29uc3Rmb3JtID0gKEZvcm1fcGdfY29uc3RyYWludCkgR0VUU1RSVUNUKGNv bnN0cnR1cCk7CisJCQkJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFBVQkxJQ0FUSU9OTkFNRVNQQUNF LAorCQkJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKG9iamVjdC5vYmplY3RJZCkpOwogCi0JCQkJ cmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIFRBQkxFICV7b25seX1zICV7aWRlbnRpdHl9RCBS RU5BTUUgQ09OU1RSQUlOVCAle29sZG5hbWV9SSBUTyAle25ld25hbWV9SSIsIDQsCi0JCQkJCQkJ CQkib25seSIsICBPYmpUeXBlU3RyaW5nLAotCQkJCQkJCQkJbm9kZS0+cmVsYXRpb24tPmluaCA/ ICIiIDogIk9OTFkiLAotCQkJCQkJCQkJImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKLQkJCQkJ CQkJCW5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxhdGlvblJlbGF0aW9uSWQsCi0JCQkJ CQkJCQkJCQkJCQkJY29uc3Rmb3JtLT5jb25yZWxpZCksCi0JCQkJCQkJCQkib2xkbmFtZSIsIE9i alR5cGVTdHJpbmcsIG5vZGUtPnN1Ym5hbWUsCi0JCQkJCQkJCQkibmV3bmFtZSIsIE9ialR5cGVT dHJpbmcsIG5vZGUtPm5ld25hbWUpOwotCQkJCVJlbGVhc2VTeXNDYWNoZShjb25zdHJ0dXApOwor CQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3IgcHVibGljYXRpb24gc2NoZW1hICV1IiwKKwkJCQkJCSBvYmplY3Qu b2JqZWN0SWQpOworCisJCQkJcHVibnNwZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uX25hbWVz cGFjZSkgR0VUU1RSVUNUKHR1cCk7CisKKwkJCQlhZGRvYmplY3QgPSBuZXdfb2JqdHJlZV9WQSgi QUREIFRBQkxFUyBJTiBTQ0hFTUEgJXtzY2hlbWF9SSIsIDEsCisJCQkJCQkJCQkJICAgInNjaGVt YSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJICAgZ2V0X25hbWVzcGFjZV9uYW1lKHB1Ym5z cGZvcm0tPnBubnNwaWQpKTsKKworCQkJCVJlbGVhc2VTeXNDYWNoZSh0dXApOwogCQkJfQogCQkJ YnJlYWs7CiAKLQkJY2FzZSBPQkpFQ1RfQ09MVU1OOgotCQkJcmVsYXRpb24gPSByZWxhdGlvbl9v cGVuKGFkZHJlc3Mub2JqZWN0SWQsIEFjY2Vzc1NoYXJlTG9jayk7Ci0JCQlzY2hlbWFJZCA9IFJl bGF0aW9uR2V0TmFtZXNwYWNlKHJlbGF0aW9uKTsKLQotCQkJcmV0ID0gbmV3X29ianRyZWVfVkEo IkFMVEVSICV7b2JqdHlwZX1zIiwgMSwKLQkJCQkJCQkJICJvYmp0eXBlIiwgT2JqVHlwZVN0cmlu ZywKLQkJCQkJCQkJIHN0cmluZ2lmeV9vYmp0eXBlKG5vZGUtPnJlbGF0aW9uVHlwZSwgZmFsc2Up KTsKKwkJLyogU0VUIG9wdGlvbiAqLworCQljYXNlIFB1YmxpY2F0aW9uUmVsYXRpb25JZDoKKwkJ CXsKKwkJCQlMaXN0CSAgICpvcHRpb25saXN0ID0gTklMOworCQkJCUxpc3RDZWxsICAgKmNlbGw7 CiAKLQkJCS8qIENvbXBvc2l0ZSB0eXBlcyBkbyBub3Qgc3VwcG9ydCBJRiBFWElTVFMgKi8KLQkJ CWlmIChub2RlLT5yZW5hbWVUeXBlID09IE9CSkVDVF9DT0xVTU4pCi0JCQkJYXBwZW5kX3N0cmlu Z19vYmplY3QocmV0LCAiJXtpZl9leGlzdHN9cyIsCi0JCQkJCQkJCQkgImlmX2V4aXN0cyIsCi0J CQkJCQkJCQkgbm9kZS0+bWlzc2luZ19vayA/ICJJRiBFWElTVFMiIDogIiIpOwotCQkJaWYgKCFu b2RlLT5yZWxhdGlvbi0+aW5oKQotCQkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7b25s eX1zIiwKLQkJCQkJCQkJCSAib25seSIsCi0JCQkJCQkJCQkgIk9OTFkiKTsKLQkJCWFwcGVuZF9v YmplY3Rfb2JqZWN0KHJldCwgIiV7aWRlbnRpdHl9RCIsCi0JCQkJCQkJCSBuZXdfb2JqdHJlZV9m b3JfcXVhbG5hbWUoc2NoZW1hSWQsCi0JCQkJCQkJCQkJCQkJCSAgbm9kZS0+cmVsYXRpb24tPnJl bG5hbWUpKTsKLQkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIlJFTkFNRSBDT0xVTU4gJXtj b2xuYW1lfUkiLAotCQkJCQkJCQkgImNvbG5hbWUiLCBub2RlLT5zdWJuYW1lKTsKKwkJCQlBc3Nl cnQobm9kZS0+b3B0aW9ucyAhPSBOSUwpOwogCi0JCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQs ICJUTyAle25ld25hbWV9SSIsICJuZXduYW1lIiwKLQkJCQkJCQkJIG5vZGUtPm5ld25hbWUpOwor CQkJCWZvcmVhY2goY2VsbCwgbm9kZS0+b3B0aW9ucykKKwkJCQl7CisJCQkJCU9ialRyZWUgICAg KnRtcF9vYmo7CisJCQkJCURlZkVsZW0gICAgKm9wdCA9IChEZWZFbGVtICopIGxmaXJzdChjZWxs KTsKIAotCQkJaWYgKG5vZGUtPnJlbmFtZVR5cGUgPT0gT0JKRUNUX0FUVFJJQlVURSkKLQkJCQlh cHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle2Nhc2NhZGV9cyIsCi0JCQkJCQkJCQkgbmV3X29i anRyZWVfVkEoIkNBU0NBREUiLCAxLAotCQkJCQkJCQkJCQkJCSJwcmVzZW50IiwgT2JqVHlwZUJv b2wsCi0JCQkJCQkJCQkJCQkJbm9kZS0+YmVoYXZpb3IgPT0gRFJPUF9DQVNDQURFKSk7CisJCQkJ CXRtcF9vYmogPSBkZXBhcnNlX0RlZkVsZW0ob3B0LCBmYWxzZSk7CisJCQkJCW9wdGlvbmxpc3Qg PSBsYXBwZW5kKG9wdGlvbmxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQl9 CiAKLQkJCXJlbGF0aW9uX2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCXNl dG9wdGlvbiA9IG5ld19vYmp0cmVlX1ZBKCJTRVQgKCV7b3B0aW9uczosIH1zKSIsIDEsCisJCQkJ CQkJCQkJICAgIm9wdGlvbnMiLCBPYmpUeXBlQXJyYXksCisJCQkJCQkJCQkJICAgb3B0aW9ubGlz dCk7CisJCQl9CiAJCQlicmVhazsKIAogCQlkZWZhdWx0OgotCQkJZWxvZyhFUlJPUiwgInVuc3Vw cG9ydGVkIG9iamVjdCB0eXBlICVkIiwgbm9kZS0+cmVuYW1lVHlwZSk7CisJCQlBc3NlcnQoZmFs c2UpOworCQkJYnJlYWs7CiAJfQogCi0JcmV0dXJuIHJldDsKKwlwdWJuYW1lID0gcHN0cmR1cChu b2RlLT5wdWJuYW1lKTsKKworCWFsdGVycHViID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIFBVQkxJ Q0FUSU9OICV7aWRlbnRpdHl9cyIsIDEsCisJCQkJCQkJICAiaWRlbnRpdHkiLCBPYmpUeXBlU3Ry aW5nLCBwdWJuYW1lKTsKKworCUFzc2VydChhZGRvYmplY3QgfHwgc2V0b3B0aW9uKTsKKworCWlm IChhZGRvYmplY3QpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KGFsdGVycHViLCAiJXthZGRfb2Jq ZWN0fXMiLCBhZGRvYmplY3QpOworCWVsc2UKKwkJYXBwZW5kX29iamVjdF9vYmplY3QoYWx0ZXJw dWIsICIle3NldF9vcHRpb25zfXMiLCBzZXRvcHRpb24pOworCisJcmV0dXJuIGFsdGVycHViOwog fQogCiAvKgotICogRGVwYXJzZSBhIEFsdGVyT2JqZWN0RGVwZW5kc1N0bXQgKEFMVEVSIC4uLiBE RVBFTkRTIE9OIC4uLikuCisgKiBIYW5kbGUgZGVwYXJzaW5nIG9mIEFMVEVSIFBVQkxJQ0FUSU9O IERST1AgY29tbWFuZHMuCiAgKgogICogVmVyYm9zZSBzeW50YXgKLSAqIEFMVEVSIElOREVYICV7 aWRlbnRpdHl9RCAle25vfXMgREVQRU5EUyBPTiBFWFRFTlNJT04gJXtuZXduYW1lfUkKKyAqIEFM VEVSIFBVQkxJQ0FUSU9OICV7aWRlbnRpdHl9SSAle2Ryb3Bfb2JqZWN0fXMKICAqLwotc3RhdGlj IE9ialRyZWUgKgotZGVwYXJzZV9BbHRlckRlcGVuZFN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpw YXJzZXRyZWUpCitjaGFyICoKK2RlcGFyc2VfQWx0ZXJQdWJsaWNhdGlvbkRyb3BTdG10KFNRTERy b3BPYmplY3QgKm9iaikKIHsKLQlBbHRlck9iamVjdERlcGVuZHNTdG10ICpub2RlID0gKEFsdGVy T2JqZWN0RGVwZW5kc1N0bXQgKikgcGFyc2V0cmVlOwotCU9ialRyZWUgICAgKnJldCA9IE5VTEw7 CisJT2JqVHJlZQkgICAqYWx0ZXJwdWI7CisJT2JqVHJlZQkgICAqZHJvcF9vYmplY3QgPSBOVUxM OworCWNoYXIJCW9iam5hbWVbTkFNRURBVEFMRU5dOworCWNoYXIJCXB1Ym5hbWVbTkFNRURBVEFM RU5dOworCUpzb25iCSAgICpqc29uYjsKKwljaGFyCSAgICpjb21tYW5kOworCVN0cmluZ0luZm9E YXRhIHN0cjsKIAotCWlmIChub2RlLT5vYmplY3RUeXBlID09IE9CSkVDVF9JTkRFWCkKKwlpZiAo c3NjYW5mKG9iai0+b2JqaWRlbnRpdHksICIlcyBpbiBwdWJsaWNhdGlvbiAlcyIsIG9iam5hbWUs IHB1Ym5hbWUpICE9IDIpCisJCWVsb2coRVJST1IsICJjb3VsZCBub3QgcGFyc2UgQUxURVIgUFVC TElDQVRJT04gY29tbWFuZCBcIiVzXCIiLAorCQkJIG9iai0+b2JqaWRlbnRpdHkpOworCisJc3dp dGNoIChnZXRPYmplY3RDbGFzcygmb2JqLT5hZGRyZXNzKSkKIAl7Ci0JCU9ialRyZWUgICAgKnF1 YWxpZmllZDsKLQkJUmVsYXRpb24JcmVsYXRpb24gPSByZWxhdGlvbl9vcGVuKG9iamVjdElkLCBB Y2Nlc3NTaGFyZUxvY2spOworCQkvKiBEUk9QIFRBQkxFICovCisJCWNhc2UgT0NMQVNTX1BVQkxJ Q0FUSU9OX1JFTDoKKwkJCWRyb3Bfb2JqZWN0ID0gbmV3X29ianRyZWVfVkEoIkRST1AgVEFCTEUg JXt0YWJsZW5hbWV9cyIsIDEsCisJCQkJCQkJCQkJICJ0YWJsZW5hbWUiLCBPYmpUeXBlU3RyaW5n LCBvYmpuYW1lKTsKKwkJCWJyZWFrOwogCi0JCXF1YWxpZmllZCA9IG5ld19vYmp0cmVlX2Zvcl9x dWFsbmFtZShyZWxhdGlvbi0+cmRfcmVsLT5yZWxuYW1lc3BhY2UsCi0JCQkJCQkJCQkJCSBub2Rl LT5yZWxhdGlvbi0+cmVsbmFtZSk7Ci0JCXJlbGF0aW9uX2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NT aGFyZUxvY2spOworCQkvKiBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgKi8KKwkJY2FzZSBPQ0xBU1Nf UFVCTElDQVRJT05fTkFNRVNQQUNFOgorCQkJZHJvcF9vYmplY3QgPSBuZXdfb2JqdHJlZV9WQSgi RFJPUCBUQUJMRVMgSU4gU0NIRU1BICV7c2NoZW1hbmFtZX1zIiwgMSwKKwkJCQkJCQkJCQkgInNj aGVtYW5hbWUiLCBPYmpUeXBlU3RyaW5nLCBvYmpuYW1lKTsKKwkJCWJyZWFrOwogCi0JCXJldCA9 IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBJTkRFWCAle2lkZW50aXR5fUQgJXtub31zIERFUEVORFMg T04gRVhURU5TSU9OICV7bmV3bmFtZX1JIiwgMywKLQkJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlw ZU9iamVjdCwgcXVhbGlmaWVkLAotCQkJCQkJCSAibm8iLCBPYmpUeXBlU3RyaW5nLAotCQkJCQkJ CSBub2RlLT5yZW1vdmUgPyAiTk8iIDogIiIsCi0JCQkJCQkJICJuZXduYW1lIiwgT2JqVHlwZVN0 cmluZywgc3RyVmFsKG5vZGUtPmV4dG5hbWUpKTsKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxz ZSk7CisJCQlicmVhazsKIAl9Ci0JZWxzZQotCQllbG9nKExPRywgInVucmVjb2duaXplZCBub2Rl IHR5cGUgaW4gZGVwYXJzZSBjb21tYW5kOiAlZCIsCi0JCQkgKGludCkgbm9kZVRhZyhwYXJzZXRy ZWUpKTsKIAotCXJldHVybiByZXQ7CisJYWx0ZXJwdWIgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIg UFVCTElDQVRJT04gJXtpZGVudGl0eX1zIiwgMSwKKwkJCQkJCQkgICJpZGVudGl0eSIsIE9ialR5 cGVTdHJpbmcsIHB1Ym5hbWUpOworCisJQXNzZXJ0KGRyb3Bfb2JqZWN0KTsKKworCWFwcGVuZF9v YmplY3Rfb2JqZWN0KGFsdGVycHViLCAiJXtkcm9wX29iamVjdH1zIiwgZHJvcF9vYmplY3QpOwor CisJaW5pdFN0cmluZ0luZm8oJnN0cik7CisJanNvbmIgPSBvYmp0cmVlX3RvX2pzb25iKGFsdGVy cHViLCBOVUxMIC8qIE93bmVyL3JvbGUgY2FuIGJlIHNraXBwZWQgZm9yIGRyb3AgY29tbWFuZCAq Lyk7CisJY29tbWFuZCA9IEpzb25iVG9DU3RyaW5nKCZzdHIsICZqc29uYi0+cm9vdCwgSlNPTkJf RVNUSU1BVEVEX0xFTik7CisKKwlyZXR1cm4gY29tbWFuZDsKIH0KIAogLyoKQEAgLTM2NjYsNiAr OTg5Niw0MCBAQCBkZXBhcnNlX3NpbXBsZV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCwg Ym9vbCAqaW5jbHVkZV9vd25lcikKIAkvKiBUaGlzIHN3aXRjaCBuZWVkcyB0byBoYW5kbGUgZXZl cnl0aGluZyB0aGF0IFByb2Nlc3NVdGlsaXR5U2xvdyBkb2VzICovCiAJc3dpdGNoIChub2RlVGFn KHBhcnNldHJlZSkpCiAJeworCQljYXNlIFRfQWx0ZXJDb2xsYXRpb25TdG10OgorCQkJKmluY2x1 ZGVfb3duZXIgPSBmYWxzZTsKKwkJCXJldHVybiBkZXBhcnNlX0FsdGVyQ29sbGF0aW9uKG9iamVj dElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9BbHRlckRvbWFpblN0bXQ6CisJCQkqaW5jbHVk ZV9vd25lciA9IGZhbHNlOworCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJEb21haW5TdG10KG9iamVj dElkLCBwYXJzZXRyZWUsCisJCQkJCQkJCQkJICAgY21kLT5kLnNpbXBsZS5zZWNvbmRhcnlPYmpl Y3QpOworCisJCWNhc2UgVF9BbHRlckVudW1TdG10OgorCQkJKmluY2x1ZGVfb3duZXIgPSBmYWxz ZTsKKwkJCXJldHVybiBkZXBhcnNlX0FsdGVyRW51bVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7 CisKKwkJY2FzZSBUX0FsdGVyRXh0ZW5zaW9uQ29udGVudHNTdG10OgorCQkJKmluY2x1ZGVfb3du ZXIgPSBmYWxzZTsKKwkJCXJldHVybiBkZXBhcnNlX0FsdGVyRXh0ZW5zaW9uQ29udGVudHNTdG10 KG9iamVjdElkLCBwYXJzZXRyZWUsCisJCQkJCQkJCQkJCQkJICBjbWQtPmQuc2ltcGxlLnNlY29u ZGFyeU9iamVjdCk7CisKKwkJY2FzZSBUX0FsdGVyRXh0ZW5zaW9uU3RtdDoKKwkJCSppbmNsdWRl X293bmVyID0gZmFsc2U7CisJCQlyZXR1cm4gZGVwYXJzZV9BbHRlckV4dGVuc2lvblN0bXQob2Jq ZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0FsdGVyRmR3U3RtdDoKKwkJCSppbmNsdWRl X293bmVyID0gZmFsc2U7CisJCQlyZXR1cm4gZGVwYXJzZV9BbHRlckZkd1N0bXQob2JqZWN0SWQs IHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0FsdGVyRm9yZWlnblNlcnZlclN0bXQ6CisJCQkqaW5j bHVkZV9vd25lciA9IGZhbHNlOworCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJGb3JlaWduU2VydmVy U3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQWx0ZXJGdW5jdGlvblN0bXQ6 CisJCQkqaW5jbHVkZV9vd25lciA9IGZhbHNlOworCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJGdW5j dGlvbihvYmplY3RJZCwgcGFyc2V0cmVlKTsKKwogCQljYXNlIFRfQWx0ZXJPYmplY3REZXBlbmRz U3RtdDoKIAkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7CiAJCQlyZXR1cm4gZGVwYXJzZV9BbHRl ckRlcGVuZFN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CkBAIC0zNjc2LDIwICs5OTQwLDEzOCBA QCBkZXBhcnNlX3NpbXBsZV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCwgYm9vbCAqaW5j bHVkZV9vd25lcikKIAkJCQkJCQkJCQkJCSBwYXJzZXRyZWUsCiAJCQkJCQkJCQkJCQkgY21kLT5k LnNpbXBsZS5zZWNvbmRhcnlPYmplY3QpOwogCisJCWNhc2UgVF9BbHRlck9wZXJhdG9yU3RtdDoK KwkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7CisJCQlyZXR1cm4gZGVwYXJzZV9BbHRlck9wZXJh dG9yU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKwogCQljYXNlIFRfQWx0ZXJPd25lclN0bXQ6 CiAJCQkqaW5jbHVkZV9vd25lciA9IGZhbHNlOwogCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJPd25l clN0bXQoY21kLT5kLnNpbXBsZS5hZGRyZXNzLCBwYXJzZXRyZWUpOwogCisJCWNhc2UgVF9BbHRl clBvbGljeVN0bXQ6CisJCQkqaW5jbHVkZV9vd25lciA9IGZhbHNlOworCQkJcmV0dXJuIGRlcGFy c2VfQWx0ZXJQb2xpY3lTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9BbHRl clNlcVN0bXQ6CisJCQkqaW5jbHVkZV9vd25lciA9IGZhbHNlOworCQkJcmV0dXJuIGRlcGFyc2Vf QWx0ZXJTZXFTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9BbHRlclN0YXRz U3RtdDoKKwkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7CisJCQlyZXR1cm4gZGVwYXJzZV9BbHRl clN0YXRzU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQWx0ZXJUU0RpY3Rp b25hcnlTdG10OgorCQkJKmluY2x1ZGVfb3duZXIgPSBmYWxzZTsKKwkJCXJldHVybiBkZXBhcnNl X0FsdGVyVFNEaWN0aW9uYXJ5U3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRf QWx0ZXJUeXBlU3RtdDoKKwkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7CisJCQlyZXR1cm4gZGVw YXJzZV9BbHRlclR5cGVTZXRTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9B bHRlclVzZXJNYXBwaW5nU3RtdDoKKwkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7CisJCQlyZXR1 cm4gZGVwYXJzZV9BbHRlclVzZXJNYXBwaW5nU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKwor CQljYXNlIFRfQ29tbWVudFN0bXQ6CisJCQkqaW5jbHVkZV9vd25lciA9IGZhbHNlOworCQkJcmV0 dXJuIGRlcGFyc2VfQ29tbWVudFN0bXQoY21kLT5kLnNpbXBsZS5hZGRyZXNzLCBwYXJzZXRyZWUp OworCisJCWNhc2UgVF9Db21wb3NpdGVUeXBlU3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX0NvbXBv c2l0ZVR5cGVTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9DcmVhdGVBbVN0 bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVBbVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7 CisKKwkJY2FzZSBUX0NyZWF0ZUNhc3RTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlQ2Fz dFN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0NyZWF0ZUNvbnZlcnNpb25T dG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlQ29udmVyc2lvbihvYmplY3RJZCwgcGFyc2V0 cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlRG9tYWluU3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX0Ny ZWF0ZURvbWFpbihvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlRW51bVN0 bXQ6CS8qIENSRUFURSBUWVBFIEFTIEVOVU0gKi8KKwkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZUVu dW1TdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9DcmVhdGVFeHRlbnNpb25T dG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlRXh0ZW5zaW9uU3RtdChvYmplY3RJZCwgcGFy c2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlRmR3U3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX0Ny ZWF0ZUZkd1N0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0NyZWF0ZUZvcmVp Z25TZXJ2ZXJTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlRm9yZWlnblNlcnZlclN0bXQo b2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0NyZWF0ZUZ1bmN0aW9uU3RtdDoKKwkJ CXJldHVybiBkZXBhcnNlX0NyZWF0ZUZ1bmN0aW9uKG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJ CWNhc2UgVF9DcmVhdGVPcEZhbWlseVN0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVPcEZh bWlseShvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlUExhbmdTdG10Ogor CQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlTGFuZ1N0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisK KwkJY2FzZSBUX0NyZWF0ZVBvbGljeVN0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVQb2xp Y3lTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9DcmVhdGVSYW5nZVN0bXQ6 IC8qIENSRUFURSBUWVBFIEFTIFJBTkdFICovCisJCQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVSYW5n ZVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0NyZWF0ZVNjaGVtYVN0bXQ6 CisJCQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVTY2hlbWFTdG10KG9iamVjdElkLCBwYXJzZXRyZWUp OworCisJCWNhc2UgVF9DcmVhdGVTZXFTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlU2Vx U3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlU3RhdHNTdG10Ogor CQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlU3RhdGlzdGljc1N0bXQob2JqZWN0SWQsIHBhcnNldHJl ZSk7CisKIAkJY2FzZSBUX0NyZWF0ZVN0bXQ6CiAJCQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVTdG10 KG9iamVjdElkLCBwYXJzZXRyZWUpOwogCisJCWNhc2UgVF9DcmVhdGVGb3JlaWduVGFibGVTdG10 OgorCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlRm9yZWlnblRhYmxlU3RtdChvYmplY3RJZCwgcGFy c2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlVGFibGVBc1N0bXQ6CS8qIENSRUFURSBNQVRFUklB TElaRUQgVklFVyAqLworCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlVGFibGVBc1N0bXRfdmFuaWxs YShvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlVHJhbnNmb3JtU3RtdDoK KwkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZVRyYW5zZm9ybVN0bXQob2JqZWN0SWQsIHBhcnNldHJl ZSk7CisKKwkJY2FzZSBUX0NyZWF0ZVRyaWdTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRl VHJpZ1N0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0NyZWF0ZVVzZXJNYXBw aW5nU3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZVVzZXJNYXBwaW5nU3RtdChvYmplY3RJ ZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfRGVmaW5lU3RtdDoKKwkJCXJldHVybiBkZXBhcnNl X0RlZmluZVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSwKKwkJCQkJCQkJCSAgY21kLT5kLnNpbXBs ZS5zZWNvbmRhcnlPYmplY3QpOworCiAJCWNhc2UgVF9JbmRleFN0bXQ6CiAJCQlyZXR1cm4gZGVw YXJzZV9JbmRleFN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CiAKKwkJY2FzZSBUX1JlZnJlc2hN YXRWaWV3U3RtdDoKKwkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7CisJCQlyZXR1cm4gZGVwYXJz ZV9SZWZyZXNoTWF0Vmlld1N0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKIAkJY2FzZSBUX1Jl bmFtZVN0bXQ6CiAJCQkqaW5jbHVkZV9vd25lciA9IGZhbHNlOwogCQkJcmV0dXJuIGRlcGFyc2Vf UmVuYW1lU3RtdChjbWQtPmQuc2ltcGxlLmFkZHJlc3MsIHBhcnNldHJlZSk7CiAKKwkJY2FzZSBU X1J1bGVTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfUnVsZVN0bXQob2JqZWN0SWQsIHBhcnNldHJl ZSk7CisKKwkJY2FzZSBUX1ZpZXdTdG10OgkJLyogQ1JFQVRFIFZJRVcgKi8KKwkJCXJldHVybiBk ZXBhcnNlX1ZpZXdTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9DcmVhdGVQ dWJsaWNhdGlvblN0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVQdWJsaWNhdGlvblN0bXQo b2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0FsdGVyUHVibGljYXRpb25TdG10Ogor CQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJQdWJsaWNhdGlvbkFkZFN0bXQoY21kLT5kLnNpbXBsZS5h ZGRyZXNzLCBwYXJzZXRyZWUpOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKExPRywgInVucmVjb2du aXplZCBub2RlIHR5cGUgaW4gZGVwYXJzZSBjb21tYW5kOiAlZCIsCiAJCQkJIChpbnQpIG5vZGVU YWcocGFyc2V0cmVlKSk7CkBAIC0zNzU1LDkgKzEwMTM3LDMyIEBAIGRlcGFyc2VfdXRpbGl0eV9j b21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCwgYm9vbCBpbmNsdWRlX293bmVyLCBib29sIHZl cmJvc2VfCiAJCQl0cmVlID0gZGVwYXJzZV9BbHRlclJlbGF0aW9uKGNtZCk7CiAJCQlpbmNsdWRl X293bmVyID0gZmFsc2U7CiAJCQlicmVhazsKKwkJY2FzZSBTQ1RfR3JhbnQ6CisJCQl0cmVlID0g ZGVwYXJzZV9HcmFudFN0bXQoY21kKTsKKwkJCWluY2x1ZGVfb3duZXIgPSBmYWxzZTsKKwkJCWJy ZWFrOwogCQljYXNlIFNDVF9DcmVhdGVUYWJsZUFzOgogCQkJdHJlZSA9IGRlcGFyc2VfQ3JlYXRl VGFibGVBc1N0bXQoY21kKTsKIAkJCWJyZWFrOworCQljYXNlIFNDVF9BbHRlck9wRmFtaWx5Ogor CQkJaW5jbHVkZV9vd25lciA9IGZhbHNlOworCQkJdHJlZSA9IGRlcGFyc2VfQWx0ZXJPcEZhbWls eShjbWQpOworCQkJYnJlYWs7CisJCWNhc2UgU0NUX0NyZWF0ZU9wQ2xhc3M6CisJCQl0cmVlID0g ZGVwYXJzZV9DcmVhdGVPcENsYXNzU3RtdChjbWQpOworCQkJYnJlYWs7CisJCWNhc2UgU0NUX0Fs dGVyRGVmYXVsdFByaXZpbGVnZXM6CisJCQlpbmNsdWRlX293bmVyID0gZmFsc2U7CisJCQl0cmVl ID0gZGVwYXJzZV9BbHRlckRlZmF1bHRQcml2aWxlZ2VzU3RtdChjbWQpOworCQkJYnJlYWs7CisJ CWNhc2UgU0NUX0FsdGVyVFNDb25maWc6CisJCQlpbmNsdWRlX293bmVyID0gZmFsc2U7CisJCQl0 cmVlID0gZGVwYXJzZV9BbHRlclRTQ29uZmlndXJhdGlvblN0bXQoY21kKTsKKwkJCWJyZWFrOwor CQljYXNlIFNDVF9TZWN1cml0eUxhYmVsOgorCQkJaW5jbHVkZV9vd25lciA9IGZhbHNlOworCQkJ dHJlZSA9IGRlcGFyc2VfU2VjTGFiZWxTdG10KGNtZCk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoK IAkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGRlcGFyc2Ugbm9kZSB0eXBlICVkIiwgY21kLT50 eXBlKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2Vy LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5kZXggMzhjMTFmMDAw Yy4uMWI3NTAwM2I1ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJp Z2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtMjA3 NCw2ICsyMDc0LDM3IEBAIEV2ZW50VHJpZ2dlckNvbGxlY3RBbHRlckRlZlByaXZzKEFsdGVyRGVm YXVsdFByaXZpbGVnZXNTdG10ICpzdG10KQogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQp OwogfQogCisvKgorICogRXZlbnRUcmlnZ2VyQ29sbGVjdFNlY0xhYmVsCisgKgkJU2F2ZSBkYXRh IGFib3V0IGFuIFNFQ1VSSVRZIExBQkVMIGNvbW1hbmQgYmVpbmcgZXhlY3V0ZWQKKyAqLwordm9p ZAorRXZlbnRUcmlnZ2VyQ29sbGVjdFNlY0xhYmVsKE9iamVjdEFkZHJlc3MgYWRkcmVzcywgY2hh ciAqcHJvdmlkZXIsCisJCQkJCQkJU2VjTGFiZWxTdG10ICpzdG10KQoreworCU1lbW9yeUNvbnRl eHQgb2xkY3h0OworCUNvbGxlY3RlZENvbW1hbmQgKmNvbW1hbmQ7CisKKwkvKiBpZ25vcmUgaWYg ZXZlbnQgdHJpZ2dlciBjb250ZXh0IG5vdCBzZXQsIG9yIGNvbGxlY3Rpb24gZGlzYWJsZWQgKi8K KwlpZiAoIWN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZSB8fAorCQljdXJyZW50RXZlbnRUcmlnZ2Vy U3RhdGUtPmNvbW1hbmRDb2xsZWN0aW9uSW5oaWJpdGVkKQorCQlyZXR1cm47CisKKwlvbGRjeHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jeHQpOwor CisJY29tbWFuZCA9IHBhbGxvYzAoc2l6ZW9mKENvbGxlY3RlZENvbW1hbmQpKTsKKwljb21tYW5k LT50eXBlID0gU0NUX1NlY3VyaXR5TGFiZWw7CisJY29tbWFuZC0+aW5fZXh0ZW5zaW9uID0gY3Jl YXRpbmdfZXh0ZW5zaW9uOworCWNvbW1hbmQtPnJvbGUgPSBHZXRVc2VyTmFtZUZyb21JZChHZXRV c2VySWQoKSwgZmFsc2UpOworCWNvbW1hbmQtPmQuc2VjbGFiZWwuYWRkcmVzcyA9IGFkZHJlc3M7 CisJY29tbWFuZC0+ZC5zZWNsYWJlbC5wcm92aWRlciA9IHByb3ZpZGVyOworCWNvbW1hbmQtPnBh cnNldHJlZSA9IChOb2RlICopIGNvcHlPYmplY3Qoc3RtdCk7CisKKwljdXJyZW50RXZlbnRUcmln Z2VyU3RhdGUtPmNvbW1hbmRMaXN0ID0KKwkJbGFwcGVuZChjdXJyZW50RXZlbnRUcmlnZ2VyU3Rh dGUtPmNvbW1hbmRMaXN0LCBjb21tYW5kKTsKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0 KTsKK30KKwogLyoKICAqIEluIGEgZGRsX2NvbW1hbmRfZW5kIGV2ZW50IHRyaWdnZXIsIHRoaXMg ZnVuY3Rpb24gcmVwb3J0cyB0aGUgRERMIGNvbW1hbmRzCiAgKiBiZWluZyBydW4uCkBAIC0yMTI1 LDYgKzIxNTYsNyBAQCBwZ19ldmVudF90cmlnZ2VyX2RkbF9jb21tYW5kcyhQR19GVU5DVElPTl9B UkdTKQogCQkJY2FzZSBTQ1RfQWx0ZXJPcEZhbWlseToKIAkJCWNhc2UgU0NUX0NyZWF0ZU9wQ2xh c3M6CiAJCQljYXNlIFNDVF9BbHRlclRTQ29uZmlnOgorCQkJY2FzZSBTQ1RfU2VjdXJpdHlMYWJl bDoKIAkJCWNhc2UgU0NUX0NyZWF0ZVRhYmxlQXM6CiAJCQkJewogCQkJCQljaGFyCSAgICppZGVu dGl0eTsKQEAgLTIxNDMsNiArMjE3NSw4IEBAIHBnX2V2ZW50X3RyaWdnZXJfZGRsX2NvbW1hbmRz KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCQlhZGRyID0gY21kLT5kLmNyZWF0ZW9wYy5hZGRyZXNz OwogCQkJCQllbHNlIGlmIChjbWQtPnR5cGUgPT0gU0NUX0FsdGVyVFNDb25maWcpCiAJCQkJCQlh ZGRyID0gY21kLT5kLmF0c2NmZy5hZGRyZXNzOworCQkJCQllbHNlIGlmIChjbWQtPnR5cGUgPT0g U0NUX1NlY3VyaXR5TGFiZWwpCisJCQkJCQlhZGRyID0gY21kLT5kLnNlY2xhYmVsLmFkZHJlc3M7 CiAJCQkJCWVsc2UgaWYgKGNtZC0+dHlwZSA9PSBTQ1RfQ3JlYXRlVGFibGVBcykKIAkJCQkJCWFk ZHIgPSBjbWQtPmQuY3Rhcy5hZGRyZXNzOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9u Y21kcy5jCmluZGV4IDBhYmVkMDA4MmYuLjIzOWE5M2I1MzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3B1YmxpY2F0aW9uY21kcy5jCkBAIC0xMDQsNiArMTA0LDcgQEAgcGFyc2VfcHVibGljYXRpb25f b3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJcHViYWN0aW9ucy0+cHVidHJ1bmNhdGUgPSB0 cnVlOwogCXB1YmFjdGlvbnMtPnB1YmRkbF90YWJsZSA9IGZhbHNlOwogCXB1YmFjdGlvbnMtPnB1 YmRkbF9pbmRleCA9IGZhbHNlOworCXB1YmFjdGlvbnMtPnB1YmRkbF9hbGwgPSBmYWxzZTsKIAkq cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZTsKIAogCS8qIFBhcnNlIG9wdGlvbnMg Ki8KQEAgLTE4MCw2ICsxODEsNyBAQCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkJCSAqLwogCQkJcHViYWN0aW9ucy0+cHViZGRsX3RhYmxlID0gZmFsc2U7 CiAJCQlwdWJhY3Rpb25zLT5wdWJkZGxfaW5kZXggPSBmYWxzZTsKKwkJCXB1YmFjdGlvbnMtPnB1 YmRkbF9hbGwgPSBmYWxzZTsKIAogCQkJKmRkbF90eXBlX2dpdmVuID0gdHJ1ZTsKIAkJCWRkbF9s ZXZlbCA9IGRlZkdldFN0cmluZyhkZWZlbCk7CkBAIC0xOTQsNyArMTk2LDkgQEAgcGFyc2VfcHVi bGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQl7CiAJCQkJY2hhcgkgICAq cHVibGlzaF9vcHQgPSAoY2hhciAqKSBsZmlyc3QobGMzKTsKIAotCQkJCWlmIChzdHJjbXAocHVi bGlzaF9vcHQsICJ0YWJsZSIpID09IDApCisJCQkJaWYgKHN0cmNtcChwdWJsaXNoX29wdCwgImFs bCIpID09IDApCisJCQkJCXB1YmFjdGlvbnMtPnB1YmRkbF9hbGwgPSB0cnVlOworCQkJCWVsc2Ug aWYgKHN0cmNtcChwdWJsaXNoX29wdCwgInRhYmxlIikgPT0gMCkKIAkJCQkJcHViYWN0aW9ucy0+ cHViZGRsX3RhYmxlID0gdHJ1ZTsKIAkJCQllbHNlIGlmIChzdHJjbXAocHVibGlzaF9vcHQsICJp bmRleCIpID09IDApCiAJCQkJCXB1YmFjdGlvbnMtPnB1YmRkbF9pbmRleCA9IHRydWU7CkBAIC05 MTQsNiArOTE4LDggQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVh dGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHViZGRs X3RhYmxlKTsKIAl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJkZGxfaW5kZXggLSAxXSA9 CiAJQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHViZGRsX2luZGV4KTsKKwl2YWx1ZXNbQW51bV9w Z19wdWJsaWNhdGlvbl9wdWJkZGxfYWxsIC0gMV0gPQorCQlCb29sR2V0RGF0dW0ocHViYWN0aW9u cy5wdWJkZGxfYWxsKTsKIAl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ2aWFyb290IC0g MV0gPQogCQlCb29sR2V0RGF0dW0ocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwogCkBAIC05 ODMsMjkgKzk4OSwzNiBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENy ZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkvKgogCSAqIENyZWF0ZSBhbiBldmVudCB0cmln Z2VyIHRvIGFsbG93IGxvZ2dpbmcgb2YgRERMIHN0YXRlbWVudHMuCiAJICovCi0JaWYgKHB1YmFj dGlvbnMucHViZGRsX3RhYmxlKQorCWlmIChwdWJhY3Rpb25zLnB1YmRkbF9hbGwpCisJCWVuZF9j b21tYW5kcyA9IEdldENvbW1hbmRUYWdzRm9yRERMUmVwbCgpOworCWVsc2UKIAl7Ci0JCXN0YXJ0 X2NvbW1hbmRzID0gbGFwcGVuZF9pbnQoc3RhcnRfY29tbWFuZHMsIENNRFRBR19EUk9QX1RBQkxF KTsKLQkJcmV3cml0ZV9jb21tYW5kcyA9IGxhcHBlbmRfaW50KHJld3JpdGVfY29tbWFuZHMsIENN RFRBR19BTFRFUl9UQUJMRSk7CisJCWlmIChwdWJhY3Rpb25zLnB1YmRkbF90YWJsZSkKKwkJewor CQkJc3RhcnRfY29tbWFuZHMgPSBsYXBwZW5kX2ludChzdGFydF9jb21tYW5kcywgQ01EVEFHX0RS T1BfVEFCTEUpOworCQkJcmV3cml0ZV9jb21tYW5kcyA9IGxhcHBlbmRfaW50KHJld3JpdGVfY29t bWFuZHMsIENNRFRBR19BTFRFUl9UQUJMRSk7CiAKLQkJaW5pdF9jb21tYW5kcyA9IGxhcHBlbmRf aW50KGluaXRfY29tbWFuZHMsIENNRFRBR19DUkVBVEVfVEFCTEVfQVMpOwotCQlpbml0X2NvbW1h bmRzID0gbGFwcGVuZF9pbnQoaW5pdF9jb21tYW5kcywgQ01EVEFHX1NFTEVDVF9JTlRPKTsKKwkJ CWluaXRfY29tbWFuZHMgPSBsYXBwZW5kX2ludChpbml0X2NvbW1hbmRzLCBDTURUQUdfQ1JFQVRF X1RBQkxFX0FTKTsKKwkJCWluaXRfY29tbWFuZHMgPSBsYXBwZW5kX2ludChpbml0X2NvbW1hbmRz LCBDTURUQUdfU0VMRUNUX0lOVE8pOwogCi0JCWVuZF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGVu ZF9jb21tYW5kcywgQ01EVEFHX0NSRUFURV9UQUJMRSk7Ci0JCWVuZF9jb21tYW5kcyA9IGxhcHBl bmRfaW50KGVuZF9jb21tYW5kcywgQ01EVEFHX0FMVEVSX1RBQkxFKTsKLQkJZW5kX2NvbW1hbmRz ID0gbGFwcGVuZF9pbnQoZW5kX2NvbW1hbmRzLCBDTURUQUdfRFJPUF9UQUJMRSk7Ci0JfQorCQkJ ZW5kX2NvbW1hbmRzID0gbGFwcGVuZF9pbnQoZW5kX2NvbW1hbmRzLCBDTURUQUdfQ1JFQVRFX1RB QkxFKTsKKwkJCWVuZF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGVuZF9jb21tYW5kcywgQ01EVEFH X0FMVEVSX1RBQkxFKTsKKwkJCWVuZF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGVuZF9jb21tYW5k cywgQ01EVEFHX0RST1BfVEFCTEUpOworCQl9CiAKLQlpZiAocHViYWN0aW9ucy5wdWJkZGxfaW5k ZXgpCi0JewotCQlzdGFydF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KHN0YXJ0X2NvbW1hbmRzLCBD TURUQUdfRFJPUF9JTkRFWCk7CisJCWlmIChwdWJhY3Rpb25zLnB1YmRkbF9pbmRleCkKKwkJewor CQkJc3RhcnRfY29tbWFuZHMgPSBsYXBwZW5kX2ludChzdGFydF9jb21tYW5kcywgQ01EVEFHX0RS T1BfSU5ERVgpOwogCi0JCWVuZF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGVuZF9jb21tYW5kcywg Q01EVEFHX0NSRUFURV9JTkRFWCk7Ci0JCWVuZF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGVuZF9j b21tYW5kcywgQ01EVEFHX0FMVEVSX0lOREVYKTsKLQkJZW5kX2NvbW1hbmRzID0gbGFwcGVuZF9p bnQoZW5kX2NvbW1hbmRzLCBDTURUQUdfRFJPUF9JTkRFWCk7CisJCQllbmRfY29tbWFuZHMgPSBs YXBwZW5kX2ludChlbmRfY29tbWFuZHMsIENNRFRBR19DUkVBVEVfSU5ERVgpOworCQkJZW5kX2Nv bW1hbmRzID0gbGFwcGVuZF9pbnQoZW5kX2NvbW1hbmRzLCBDTURUQUdfQUxURVJfSU5ERVgpOwor CQkJZW5kX2NvbW1hbmRzID0gbGFwcGVuZF9pbnQoZW5kX2NvbW1hbmRzLCBDTURUQUdfRFJPUF9J TkRFWCk7CisJCX0KIAl9CiAKLQlpZiAocHViYWN0aW9ucy5wdWJkZGxfdGFibGUgfHwgcHViYWN0 aW9ucy5wdWJkZGxfaW5kZXgpCisKKwlpZiAocHViYWN0aW9ucy5wdWJkZGxfdGFibGUgfHwgcHVi YWN0aW9ucy5wdWJkZGxfaW5kZXggfHwKKwkJcHViYWN0aW9ucy5wdWJkZGxfYWxsKQogCXsKIAkJ LyogQ3JlYXRlIHRoZSBkZGxfY29tbWFuZF9lbmQgZXZlbnQgdHJpZ2dlciAqLwogCQlDcmVhdGVE RExSZXBsaWNhRXZlbnRUcmlnZ2VyKFBVQl9UUklHX0VWRU5UMSwgZW5kX2NvbW1hbmRzLApAQCAt MTE0OSw3ICsxMTYyLDkgQEAgQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAkJfQogCX0KIAotCWlmIChkZGxfdHlw ZV9naXZlbiAmJiAocHViYWN0aW9ucy5wdWJkZGxfdGFibGUgfHwgcHViYWN0aW9ucy5wdWJkZGxf aW5kZXgpKQorCWlmIChkZGxfdHlwZV9naXZlbiAmJgorCQkocHViYWN0aW9ucy5wdWJkZGxfdGFi bGUgfHwgcHViYWN0aW9ucy5wdWJkZGxfaW5kZXggfHwKKwkJcHViYWN0aW9ucy5wdWJkZGxfYWxs KSkKIAl7CiAJCWlmIChyb290X3JlbGlkcyA9PSBOSUwpCiAJCQlyb290X3JlbGlkcyA9IEdldFB1 YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKQEAgLTExODUsNiArMTIwMCw5IEBAIEFs dGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlv blN0bXQgKnN0bXQsCiAKIAkJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHViZGRsX2luZGV4 IC0gMV0gPSBCb29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJkZGxfaW5kZXgpOwogCQlyZXBsYWNl c1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmRkbF9pbmRleCAtIDFdID0gdHJ1ZTsKKworCQl2YWx1 ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJkZGxfYWxsIC0gMV0gPSBCb29sR2V0RGF0dW0ocHVi YWN0aW9ucy5wdWJkZGxfYWxsKTsKKwkJcmVwbGFjZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJk ZGxfYWxsIC0gMV0gPSB0cnVlOwogCX0KIAogCWlmIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9v dF9naXZlbikKQEAgLTEyOTIsNyArMTMxMCw4IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0 ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAKIAlpZiAoc3RtdC0+YWN0 aW9uID09IEFQX0FkZE9iamVjdHMpCiAJewotCQlpZiAocHViZm9ybS0+cHViZGRsX3RhYmxlIHx8 IHB1YmZvcm0tPnB1YmRkbF9pbmRleCkKKwkJaWYgKHB1YmZvcm0tPnB1YmRkbF90YWJsZSB8fCBw dWJmb3JtLT5wdWJkZGxfaW5kZXggfHwKKwkJCXB1YmZvcm0tPnB1YmRkbF9hbGwpCiAJCQllcmVw b3J0KEVSUk9SLAogCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAogCQkJCQllcnJtc2coImNhbm5vdCBhZGQgdGFibGUgdG8gcHVibGljYXRpb24gXCIlc1wiIGlm IERETCByZXBsaWNhdGlvbiBpcyBlbmFibGVkIiwKQEAgLTEzMTYsNyArMTMzNSw4IEBAIEFsdGVy UHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0 dXAsCiAJCUxpc3QJICAgKmRlbHJlbHMgPSBOSUw7CiAJCUxpc3RDZWxsICAgKm9sZGxjOwogCi0J CWlmIChwdWJmb3JtLT5wdWJkZGxfdGFibGUgfHwgcHViZm9ybS0+cHViZGRsX2luZGV4KQorCQlp ZiAocHViZm9ybS0+cHViZGRsX3RhYmxlIHx8IHB1YmZvcm0tPnB1YmRkbF9pbmRleCB8fAorCQkJ cHViZm9ybS0+cHViZGRsX2FsbCkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCWVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJCWVycm1zZygiY2Fubm90IGFkZCB0 YWJsZSB0byBwdWJsaWNhdGlvbiBcIiVzXCIgaWYgRERMIHJlcGxpY2F0aW9uIGlzIGVuYWJsZWQi LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMKaW5kZXggN2ZmMTZlMzI3Ni4uN2VlNTRjZGU4ZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zZWNsYWJlbC5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiY2F0YWxv Zy9pbmRleGluZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc2VjbGFiZWwuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3Noc2VjbGFiZWwuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmln Z2VyLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VjbGFiZWwuaCIKICNpbmNsdWRlICJtaXNjYWRt aW4uaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpAQCAtMjEzLDYgKzIxNCwxMSBAQCBF eGVjU2VjTGFiZWxTdG10KFNlY0xhYmVsU3RtdCAqc3RtdCkKIAlpZiAocmVsYXRpb24gIT0gTlVM TCkKIAkJcmVsYXRpb25fY2xvc2UocmVsYXRpb24sIE5vTG9jayk7CiAKKwkvKiBQYXNzIHRoZSBp bmZvIHRvIGV2ZW50IHRyaWdnZXJzIGFib3V0IHRoZSBTRUNVUklUWSBMQUJFTC4gKi8KKwlpZiAo RXZlbnRUcmlnZ2VyU3VwcG9ydHNPYmplY3RUeXBlKHN0bXQtPm9ianR5cGUpKQorCQlFdmVudFRy aWdnZXJDb2xsZWN0U2VjTGFiZWwoYWRkcmVzcywgcHN0cmR1cChwcm92aWRlci0+cHJvdmlkZXJf bmFtZSksCisJCQkJCQkJCQlzdG10KTsKKwogCXJldHVybiBhZGRyZXNzOwogfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dlci5jCmluZGV4IDExZTMzYjliNjUu Ljg2YzUyMGJhMTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv ZGRsdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsdHJp Z2dlci5jCkBAIC0yMjYsMjEgKzIyNiwxMDMgQEAgcHVibGljYXRpb25fZGVwYXJzZV9kZGxfY29t bWFuZF9lbmQoUEdfRlVOQ1RJT05fQVJHUykKIAkJRXZlbnRUcmlnZ2VyRGF0YSAqdHJpZ2RhdGE7 CiAJCWNoYXIJICAgKmNvbW1hbmQ7CiAJCURlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZTsKKwkJ Y29uc3QgY2hhciAqdG1wdHlwZTsKKwkJT2JqZWN0Q2xhc3MJb2JqY2xhc3M7CisJCU9iamVjdEFk ZHJlc3Mgb2JqYWRkcjsKIAogCQl0cmlnZGF0YSA9IChFdmVudFRyaWdnZXJEYXRhICopIGZjaW5m by0+Y29udGV4dDsKIAkJc3RtdCA9IChEcm9wU3RtdCAqKSB0cmlnZGF0YS0+cGFyc2V0cmVlOwog CiAJCW9iaiA9IHNsaXN0X2NvbnRhaW5lcihTUUxEcm9wT2JqZWN0LCBuZXh0LCBpdGVyLmN1cik7 CisJCW9iamFkZHIgPSBvYmotPmFkZHJlc3M7CisJCW9iamNsYXNzID0gZ2V0T2JqZWN0Q2xhc3Mo Jm9iamFkZHIpOwogCiAJCWlmIChzdHJjbXAob2JqLT5vYmplY3R0eXBlLCAidGFibGUiKSA9PSAw KQogCQkJY21kdHlwZSA9IERDVF9UYWJsZURyb3BFbmQ7Ci0JCWVsc2UgaWYgKHN0cmNtcChvYmot Pm9iamVjdHR5cGUsICJpbmRleCIpID09IDApCisJCWVsc2UgaWYgKG9iamNsYXNzID09IE9DTEFT U19TQ0hFTUEgfHwKKwkJCQkgb2JqY2xhc3MgPT0gT0NMQVNTX09QRVJBVE9SIHx8CisJCQkJIG9i amNsYXNzID09IE9DTEFTU19PUENMQVNTIHx8CisJCQkJIG9iamNsYXNzID09IE9DTEFTU19PUEZB TUlMWSB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfQ0FTVCB8fAorCQkJCSBvYmpjbGFzcyA9 PSBPQ0xBU1NfVFlQRSB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfVFJJR0dFUiB8fAorCQkJ CSBvYmpjbGFzcyA9PSBPQ0xBU1NfQ09OVkVSU0lPTiB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xB U1NfUE9MSUNZIHx8CisJCQkJIG9iamNsYXNzID09IE9DTEFTU19SRVdSSVRFIHx8CisJCQkJIG9i amNsYXNzID09IE9DTEFTU19FWFRFTlNJT04gfHwKKwkJCQkgb2JqY2xhc3MgPT0gT0NMQVNTX0ZE VyB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfVFNDT05GSUcgfHwKKwkJCQkgb2JqY2xhc3Mg PT0gT0NMQVNTX1RTRElDVCB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfVFNURU1QTEFURSB8 fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfVFNQQVJTRVIgfHwKKwkJCQkgb2JqY2xhc3MgPT0g T0NMQVNTX1RSQU5TRk9STSB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfRk9SRUlHTl9TRVJW RVIgfHwKKwkJCQkgb2JqY2xhc3MgPT0gT0NMQVNTX0NPTExBVElPTiB8fAorCQkJCSBvYmpjbGFz cyA9PSBPQ0xBU1NfVVNFUl9NQVBQSU5HIHx8CisJCQkJIG9iamNsYXNzID09IE9DTEFTU19MQU5H VUFHRSB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfU1RBVElTVElDX0VYVCB8fAorCQkJCSBv YmpjbGFzcyA9PSBPQ0xBU1NfQU0gfHwKKwkJCQkgb2JqY2xhc3MgPT0gT0NMQVNTX1BVQkxJQ0FU SU9OIHx8CisJCQkJIG9iamNsYXNzID09IE9DTEFTU19QVUJMSUNBVElPTl9SRUwgfHwKKwkJCQkg b2JqY2xhc3MgPT0gT0NMQVNTX1BVQkxJQ0FUSU9OX05BTUVTUEFDRSB8fAorCQkJCSBzdHJjbXAo b2JqLT5vYmplY3R0eXBlLCAiZm9yZWlnbiB0YWJsZSIpID09IDAgfHwKKwkJCQkgc3RyY21wKG9i ai0+b2JqZWN0dHlwZSwgImluZGV4IikgPT0gMCB8fAorCQkJCSBzdHJjbXAob2JqLT5vYmplY3R0 eXBlLCAic2VxdWVuY2UiKSA9PSAwIHx8CisJCQkJIHN0cmNtcChvYmotPm9iamVjdHR5cGUsICJ2 aWV3IikgPT0gMCB8fAorCQkJCSBzdHJjbXAob2JqLT5vYmplY3R0eXBlLCAiZnVuY3Rpb24iKSA9 PSAwIHx8CisJCQkJIHN0cmNtcChvYmotPm9iamVjdHR5cGUsICJtYXRlcmlhbGl6ZWQgdmlldyIp ID09IDAgfHwKKwkJCQkgc3RyY21wKG9iai0+b2JqZWN0dHlwZSwgInByb2NlZHVyZSIpID09IDAg fHwKKwkJCQkgc3RyY21wKG9iai0+b2JqZWN0dHlwZSwgInJvdXRpbmUiKSA9PSAwIHx8CisJCQkJ IHN0cmNtcChvYmotPm9iamVjdHR5cGUsICJhZ2dyZWdhdGUiKSA9PSAwKQogCQkJY21kdHlwZSA9 IERDVF9PYmplY3REcm9wRW5kOwogCQllbHNlCiAJCQljb250aW51ZTsKIAotCQljb21tYW5kID0g ZGVwYXJzZV9kcm9wX2NvbW1hbmQob2JqLT5vYmppZGVudGl0eSwgb2JqLT5vYmplY3R0eXBlLAot CQkJCQkJCQkJICAgc3RtdC0+YmVoYXZpb3IpOworCQkvKiBDaGFuZ2UgZm9yZWlnbi1kYXRhIHdy YXBwZXIgdG8gZm9yZWlnbiBkYXRhIHdyYXBwZXIgKi8KKwkJaWYgKHN0cm5jbXAob2JqLT5vYmpl Y3R0eXBlLCAiZm9yZWlnbi1kYXRhIHdyYXBwZXIiLCAyMCkgPT0gMCkKKwkJeworCQkJdG1wdHlw ZSA9IHBzdHJkdXAoImZvcmVpZ24gZGF0YSB3cmFwcGVyIik7CisJCQljb21tYW5kID0gZGVwYXJz ZV9kcm9wX2NvbW1hbmQob2JqLT5vYmppZGVudGl0eSwgdG1wdHlwZSwKKwkJCQkJCQkJCQkgICBz dG10LT5iZWhhdmlvcik7CisJCX0KKworCQkvKiBDaGFuZ2Ugc3RhdGlzdGljcyBvYmplY3QgdG8g c3RhdGlzdGljcyAqLworCQllbHNlIGlmIChzdHJuY21wKG9iai0+b2JqZWN0dHlwZSwgInN0YXRp c3RpY3Mgb2JqZWN0IiwKKwkJCQkJCSBzdHJsZW4oInN0YXRpc3RpY3Mgb2JqZWN0IikpID09IDAp CisJCXsKKwkJCXRtcHR5cGUgPSBwc3RyZHVwKCJzdGF0aXN0aWNzIik7CisJCQljb21tYW5kID0g ZGVwYXJzZV9kcm9wX2NvbW1hbmQob2JqLT5vYmppZGVudGl0eSwgdG1wdHlwZSwKKwkJCQkJCQkJ CQkgICBzdG10LT5iZWhhdmlvcik7CisJCX0KKworCQkvKgorCQkgKiBPYmplY3QgaWRlbnRpdHkg bmVlZHMgdG8gYmUgbW9kaWZpZWQgdG8gbWFrZSB0aGUgZHJvcCB3b3JrCisJCSAqCisJCSAqIEZS T006IDxyb2xlPiBvbiBzZXJ2ZXIgPHNlcnZlcm5hbWU+IFRPICA6IGZvciA8cm9sZT4gc2VydmVy CisJCSAqIDxzZXJ2ZXJuYW1lPgorCQkgKgorCQkgKi8KKwkJZWxzZSBpZiAoc3RybmNtcChvYmot Pm9iamVjdHR5cGUsICJ1c2VyIG1hcHBpbmciLCAxMikgPT0gMCkKKwkJeworCQkJY2hhcgkgICAq b25fc2VydmVyOworCisJCQl0bXB0eXBlID0gcGFsbG9jKHN0cmxlbihvYmotPm9iamlkZW50aXR5 KSArIDIpOworCQkJb25fc2VydmVyID0gc3Ryc3RyKG9iai0+b2JqaWRlbnRpdHksICJvbiBzZXJ2 ZXIiKTsKKworCQkJc3ByaW50ZigoY2hhciAqKSB0bXB0eXBlLCAiZm9yICIpOworCQkJc3RybmNh dCgoY2hhciAqKSB0bXB0eXBlLCBvYmotPm9iamlkZW50aXR5LCBvbl9zZXJ2ZXIgLSBvYmotPm9i amlkZW50aXR5KTsKKwkJCXN0cmNhdCgoY2hhciAqKSB0bXB0eXBlLCBvbl9zZXJ2ZXIgKyAzKTsK KwkJCWNvbW1hbmQgPSBkZXBhcnNlX2Ryb3BfY29tbWFuZCh0bXB0eXBlLCBvYmotPm9iamVjdHR5 cGUsCisJCQkJCQkJCQkJICAgc3RtdC0+YmVoYXZpb3IpOworCQl9CisJCWVsc2UgaWYgKHN0cm5j bXAob2JqLT5vYmplY3R0eXBlLCAicHVibGljYXRpb24gbmFtZXNwYWNlIiwKKwkJCQkJCSBzdHJs ZW4oInB1YmxpY2F0aW9uIG5hbWVzcGFjZSIpKSA9PSAwIHx8CisJCQkJIHN0cm5jbXAob2JqLT5v YmplY3R0eXBlLCAicHVibGljYXRpb24gcmVsYXRpb24iLAorCQkJCQkJIHN0cmxlbigicHVibGlj YXRpb24gcmVsYXRpb24iKSkgPT0gMCkKKwkJCWNvbW1hbmQgPSBkZXBhcnNlX0FsdGVyUHVibGlj YXRpb25Ecm9wU3RtdChvYmopOworCQllbHNlCisJCQljb21tYW5kID0gZGVwYXJzZV9kcm9wX2Nv bW1hbmQob2JqLT5vYmppZGVudGl0eSwgb2JqLT5vYmplY3R0eXBlLAorCQkJCQkJCQkJCSAgIHN0 bXQtPmJlaGF2aW9yKTsKIAogCQlpZiAoY29tbWFuZCkKIAkJCUxvZ0xvZ2ljYWxERExNZXNzYWdl KCJkZXBhcnNlIiwgb2JqLT5hZGRyZXNzLm9iamVjdElkLCBjbWR0eXBlLApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggNDI5YTNhZWY5MS4uN2M0YTJl YzhkZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRw dXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBA IC0yMjQsNiArMjI0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRERMU3luY0NhY2hlCiB7CiAJYm9vbAkJ dmFsaWQ7CiAJYm9vbAkJcHViaW5kZXg7CisJYm9vbAkJcHViYWxsOwogfSBERExTeW5jQ2FjaGU7 CiAKIHN0YXRpYyBERExTeW5jQ2FjaGUgKmRkbGNhY2hlID0gTlVMTDsKQEAgLTE3NTQsNiArMTc1 NSw4IEBAIGlzX29iamVjdF9wdWJsaXNoZWQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBP aWQgb2JqaWQpCiAJUmVsYXRpb25TeW5jRW50cnkgKnJlbGVudHJ5OwogCVBHT3V0cHV0RGF0YSAq ZGF0YSA9IChQR091dHB1dERhdGEgKikgY3R4LT5vdXRwdXRfcGx1Z2luX3ByaXZhdGU7CiAKKwli dWlsZF9kZGxfc3luY19jYWNoZShkYXRhKTsKKwogCS8qIEZpcnN0IGNoZWNrIHRoZSBEREwgY29t bWFuZCBmaWx0ZXIuICovCiAJc3dpdGNoIChnZXRfcmVsX3JlbGtpbmQob2JqaWQpKQogCXsKQEAg LTE3NjYsMTUgKzE3NjksMTQgQEAgaXNfb2JqZWN0X3B1Ymxpc2hlZChMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsIE9pZCBvYmppZCkKIAkJCSAqIFNraXAgc2VuZGluZyB0aGlzIGRkbCBpZiB3 ZSBkb24ndCBwdWJsaXNoIGRkbCBtZXNzYWdlIG9yIHRoZSBkZGwKIAkJCSAqIG5lZWQgdG8gYmUg cHVibGlzaGVkIHZpYSBpdHMgcm9vdCByZWxhdGlvbi4KIAkJCSAqLwotCQkJaWYgKCFyZWxlbnRy eS0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUgfHwKKwkJCWlmICgoIXJlbGVudHJ5LT5wdWJhY3Rp b25zLnB1YmRkbF90YWJsZSAmJgorCQkJCSFkZGxjYWNoZS0+cHViYWxsKSB8fAogCQkJCXJlbGVu dHJ5LT5wdWJsaXNoX2FzX3JlbGlkICE9IG9iamlkKQogCQkJCXJldHVybiBmYWxzZTsKIAogCQkJ YnJlYWs7CiAJCWNhc2UgUkVMS0lORF9JTkRFWDoKLQkJCWJ1aWxkX2RkbF9zeW5jX2NhY2hlKGRh dGEpOwotCi0JCQlpZiAoIWRkbGNhY2hlLT5wdWJpbmRleCkKKwkJCWlmICghZGRsY2FjaGUtPnB1 YmluZGV4ICYmICFkZGxjYWNoZS0+cHViYWxsKQogCQkJCXJldHVybiBmYWxzZTsKIAogCQkJLyog R2V0IHRoZSB0YWJsZSBPSUQgdGhhdCB0aGUgaW5kZXggaXMgZm9yLiAqLwpAQCAtMTc4Nyw3ICsx Nzg5LDggQEAgaXNfb2JqZWN0X3B1Ymxpc2hlZChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgs IE9pZCBvYmppZCkKIAkJCXJlbGVudHJ5ID0gZ2V0X3JlbF9zeW5jX2VudHJ5KGRhdGEsIHJlbGF0 aW9uKTsKIAkJCVJlbGF0aW9uQ2xvc2UocmVsYXRpb24pOwogCi0JCQlpZiAoIXJlbGVudHJ5LT5w dWJhY3Rpb25zLnB1YmRkbF90YWJsZSB8fAorCQkJaWYgKCghcmVsZW50cnktPnB1YmFjdGlvbnMu cHViZGRsX3RhYmxlICYmCisJCQkJIWRkbGNhY2hlLT5wdWJhbGwpIHx8CiAJCQkJcmVsZW50cnkt PnB1Ymxpc2hfYXNfcmVsaWQgIT0gb2JqaWQpCiAJCQkJcmV0dXJuIGZhbHNlOwogCkBAIC0yMjM3 LDcgKzIyNDAsOCBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxh dGlvbiByZWxhdGlvbikKIAkJZW50cnktPnN0cmVhbWVkX3R4bnMgPSBOSUw7CiAJCWVudHJ5LT5w dWJhY3Rpb25zLnB1Ymluc2VydCA9IGVudHJ5LT5wdWJhY3Rpb25zLnB1YnVwZGF0ZSA9CiAJCQll bnRyeS0+cHViYWN0aW9ucy5wdWJkZWxldGUgPSBlbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0 ZSA9Ci0JCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUgPSBlbnRyeS0+cHViYWN0aW9u cy5wdWJkZGxfaW5kZXggPSBmYWxzZTsKKwkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRkbF90YWJs ZSA9IGVudHJ5LT5wdWJhY3Rpb25zLnB1YmRkbF9pbmRleCA9CisJCQllbnRyeS0+cHViYWN0aW9u cy5wdWJkZGxfYWxsID0gZmFsc2U7CiAJCWVudHJ5LT5uZXdfc2xvdCA9IE5VTEw7CiAJCWVudHJ5 LT5vbGRfc2xvdCA9IE5VTEw7CiAJCW1lbXNldChlbnRyeS0+ZXhwcnN0YXRlLCAwLCBzaXplb2Yo ZW50cnktPmV4cHJzdGF0ZSkpOwpAQCAtMjI4NSw2ICsyMjg5LDcgQEAgZ2V0X3JlbF9zeW5jX2Vu dHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCWVudHJ5LT5wdWJh Y3Rpb25zLnB1YnRydW5jYXRlID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRkbF90 YWJsZSA9IGZhbHNlOwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfaW5kZXggPSBmYWxzZTsK KwkJZW50cnktPnB1YmFjdGlvbnMucHViZGRsX2FsbCA9IGZhbHNlOwogCiAJCS8qCiAJCSAqIFR1 cGxlIHNsb3RzIGNsZWFudXBzLiAoV2lsbCBiZSByZWJ1aWx0IGxhdGVyIGlmIG5lZWRlZCkuCkBA IC0yNDAwLDYgKzI0MDUsNyBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRh LCBSZWxhdGlvbiByZWxhdGlvbikKIAkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSB8 PSBwdWItPnB1YmFjdGlvbnMucHVidHJ1bmNhdGU7CiAJCQkJZW50cnktPnB1YmFjdGlvbnMucHVi ZGRsX3RhYmxlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGU7CiAJCQkJZW50cnktPnB1 YmFjdGlvbnMucHViZGRsX2luZGV4IHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJkZGxfaW5kZXg7CisJ CQkJZW50cnktPnB1YmFjdGlvbnMucHViZGRsX2FsbCB8PSBwdWItPnB1YmFjdGlvbnMucHViZGRs X2FsbDsKIAogCQkJCS8qCiAJCQkJICogV2Ugd2FudCB0byBwdWJsaXNoIHRoZSBjaGFuZ2VzIGFz IHRoZSB0b3AtbW9zdCBhbmNlc3RvcgpAQCAtMjQ5MSw2ICsyNDk3LDcgQEAgYnVpbGRfZGRsX3N5 bmNfY2FjaGUoUEdPdXRwdXREYXRhICpkYXRhKQogCQlQdWJsaWNhdGlvbiAqcHViID0gbGZpcnN0 KGxjKTsKIAogCQlkZGxjYWNoZS0+cHViaW5kZXggfD0gcHViLT5wdWJhY3Rpb25zLnB1YmRkbF9p bmRleDsKKwkJZGRsY2FjaGUtPnB1YmFsbCB8PSBwdWItPnB1YmFjdGlvbnMucHViZGRsX2FsbDsK IAl9CiAKIAlkZGxjYWNoZS0+dmFsaWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dGNvcC9jbWR0YWcuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvY21kdGFnLmMKaW5kZXggY2UwOWM1ZjIz My4uN2UwMzc4MjUyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9jbWR0YWcuYworKysg Yi9zcmMvYmFja2VuZC90Y29wL2NtZHRhZy5jCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSAi cG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgIm5vZGVzL3Bn X2xpc3QuaCIKICNpbmNsdWRlICJ0Y29wL2NtZHRhZy5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCiAKQEAgLTU4LDE2ICs1OSwxNSBAQCBHZXRDb21tYW5kVGFnTmFtZUFuZExlbihDb21t YW5kVGFnIGNvbW1hbmRUYWcsIFNpemUgKmxlbikKIAlyZXR1cm4gdGFnX2JlaGF2aW9yW2NvbW1h bmRUYWddLm5hbWU7CiB9CiAKLUNvbW1hbmRUYWcgKgotR2V0Q29tbWFuZFRhZ3NGb3JERExSZXBs KGludCAqbmNvbW1hbmRzKQorTGlzdCAqCitHZXRDb21tYW5kVGFnc0ZvckRETFJlcGwodm9pZCkK IHsKLQlDb21tYW5kVGFnICpkZGxyZXBsX2NvbW1hbmRzID0gcGFsbG9jMChDT01NQU5EX1RBR19O RVhUVEFHICogc2l6ZW9mKENvbW1hbmRUYWcpKTsKLQkqbmNvbW1hbmRzID0gMDsKKwlMaXN0ICpk ZGxyZXBsX2NvbW1hbmRzID0gTklMOwogCiAJZm9yKGludCBpID0gMDsgaSA8IENPTU1BTkRfVEFH X05FWFRUQUc7IGkrKykKIAl7CiAJCWlmICh0YWdfYmVoYXZpb3JbaV0uZGRsX3JlcGxpY2F0aW9u X29rKQotCQkJZGRscmVwbF9jb21tYW5kc1soKm5jb21tYW5kcykrK10gPSAoQ29tbWFuZFRhZykg aTsKKwkJCWRkbHJlcGxfY29tbWFuZHMgPSBsYXBwZW5kX2ludChkZGxyZXBsX2NvbW1hbmRzLCBp KTsKIAl9CiAKIAlyZXR1cm4gZGRscmVwbF9jb21tYW5kczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggNTc4 YTIyOWZmYy4uMzRhOWM4NTNhNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5 LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTE0NDksNyArMTQ0OSw4IEBA IFByb2Nlc3NVdGlsaXR5U2xvdyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJYWRkcmVzcyA9 IERlZmluZUNvbGxhdGlvbihwc3RhdGUsCiAJCQkJCQkJCQkJCQkJICBzdG10LT5kZWZuYW1lcywK IAkJCQkJCQkJCQkJCQkgIHN0bXQtPmRlZmluaXRpb24sCi0JCQkJCQkJCQkJCQkJICBzdG10LT5p Zl9ub3RfZXhpc3RzKTsKKwkJCQkJCQkJCQkJCQkgIHN0bXQtPmlmX25vdF9leGlzdHMsCisJCQkJ CQkJCQkJCQkJICAmc2Vjb25kYXJ5T2JqZWN0KTsKIAkJCQkJCQlicmVhazsKIAkJCQkJCWRlZmF1 bHQ6CiAJCQkJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBkZWZpbmUgc3RtdCB0eXBlOiAl ZCIsCkBAIC0xODM5LDYgKzE4NDAsNyBAQCBQcm9jZXNzVXRpbGl0eVNsb3coUGFyc2VTdGF0ZSAq cHN0YXRlLAogCiAJCQljYXNlIFRfU2VjTGFiZWxTdG10OgogCQkJCWFkZHJlc3MgPSBFeGVjU2Vj TGFiZWxTdG10KChTZWNMYWJlbFN0bXQgKikgcGFyc2V0cmVlKTsKKwkJCQljb21tYW5kQ29sbGVj dGVkID0gdHJ1ZTsKIAkJCQlicmVhazsKIAogCQkJY2FzZSBUX0NyZWF0ZUFtU3RtdDoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvcmVncHJvYy5jCmluZGV4IDI5NjkzMGViM2IuLmU0NmMzOWQ2MjAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3JlZ3Byb2MuYwpAQCAtMzA3LDYgKzMwNyw1NyBAQCBmb3JtYXRfcHJvY2VkdXJlX3F1YWxp ZmllZChPaWQgcHJvY2VkdXJlX29pZCkKIAlyZXR1cm4gZm9ybWF0X3Byb2NlZHVyZV9leHRlbmRl ZChwcm9jZWR1cmVfb2lkLCBGT1JNQVRfUFJPQ19GT1JDRV9RVUFMSUZZKTsKIH0KIAorLyoKKyAq IEFwcGVuZCB0aGUgcGFyZW50aGVzaXplZCBhcmd1bWVudHMgb2YgdGhlIGdpdmVuIHBnX3Byb2Mg cm93IGludG8gdGhlIG91dHB1dAorICogYnVmZmVyLiBmb3JjZV9xdWFsaWZ5IGluZGljYXRlcyB3 aGV0aGVyIHRvIHNjaGVtYS1xdWFsaWZ5IHR5cGUgbmFtZXMKKyAqIHJlZ2FyZGxlc3Mgb2Ygdmlz aWJpbGl0eS4KKyAqLworc3RhdGljIHZvaWQKK2Zvcm1hdF9wcm9jZWR1cmVfYXJnc19pbnRlcm5h bChGb3JtX3BnX3Byb2MgcHJvY2Zvcm0sIFN0cmluZ0luZm8gYnVmLAorCQkJCQkJCSAgIGJvb2wg Zm9yY2VfcXVhbGlmeSkKK3sKKwlpbnQJCQlpOworCWNoYXIJICAgKigqZnVuY1syXSkgKE9pZCkg PSB7Zm9ybWF0X3R5cGVfYmUsIGZvcm1hdF90eXBlX2JlX3F1YWxpZmllZH07CisKKwlhcHBlbmRT dHJpbmdJbmZvQ2hhcihidWYsICcoJyk7CisJZm9yIChpID0gMDsgaSA8IHByb2Nmb3JtLT5wcm9u YXJnczsgaSsrKQorCXsKKwkJT2lkCQkJdGhpc2FyZ3R5cGUgPSBwcm9jZm9ybS0+cHJvYXJndHlw ZXMudmFsdWVzW2ldOworCQljaGFyCSAgICphcmd0eXBlOworCisJCWlmIChpID4gMCkKKwkJCWFw cGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJywnKTsKKworCQlhcmd0eXBlID0gZnVuY1tmb3JjZV9x dWFsaWZ5XSAodGhpc2FyZ3R5cGUpOworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgYXJn dHlwZSk7CisJCXBmcmVlKGFyZ3R5cGUpOworCX0KKwlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYs ICcpJyk7Cit9CisKKy8qCisgKiBmb3JtYXRfcHJvY2VkdXJlX2FyZ3MgICAtIGNvbnZlcnRzIHBy b2MgT0lEIHRvICIoYXJncykiCisgKi8KK2NoYXIgKgorZm9ybWF0X3Byb2NlZHVyZV9hcmdzKE9p ZCBwcm9jZWR1cmVfb2lkLCBib29sIGZvcmNlX3F1YWxpZnkpCit7CisJU3RyaW5nSW5mb0RhdGEg YnVmOworCUhlYXBUdXBsZQlwcm9jdHVwOworCUZvcm1fcGdfcHJvYyBwcm9jZm9ybTsKKworCXBy b2N0dXAgPSBTZWFyY2hTeXNDYWNoZTEoUFJPQ09JRCwgT2JqZWN0SWRHZXREYXR1bShwcm9jZWR1 cmVfb2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHByb2N0dXApKQorCQllbG9nKEVSUk9S LCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcHJvY2VkdXJlICV1IiwgcHJvY2VkdXJlX29pZCk7 CisJcHJvY2Zvcm0gPSAoRm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QocHJvY3R1cCk7CisKKwlpbml0 U3RyaW5nSW5mbygmYnVmKTsKKwlmb3JtYXRfcHJvY2VkdXJlX2FyZ3NfaW50ZXJuYWwocHJvY2Zv cm0sICZidWYsIGZvcmNlX3F1YWxpZnkpOworCisJUmVsZWFzZVN5c0NhY2hlKHByb2N0dXApOwor CisJcmV0dXJuIGJ1Zi5kYXRhOworfQorCiAvKgogICogZm9ybWF0X3Byb2NlZHVyZV9leHRlbmRl ZCAtIGNvbnZlcnRzIHByb2NlZHVyZSBPSUQgdG8gInByb19uYW1lKGFyZ3MpIgogICoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCBjOGY1NDcxYjE4Li5jNDg5Y2FjOGRjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFydGl0aW9uZWRfdGFibGUu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Jl d3JpdGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpY19leHQuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3RyaWdnZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKQEAg LTM0MSw2ICszNDIsOCBAQCBzdGF0aWMgY2hhciAqcGdfZ2V0X3RyaWdnZXJkZWZfd29ya2VyKE9p ZCB0cmlnaWQsIGJvb2wgcHJldHR5KTsKIHN0YXRpYyBpbnQJZGVjb21waWxlX2NvbHVtbl9pbmRl eF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwKIAkJCQkJCQkJCQkg U3RyaW5nSW5mbyBidWYpOwogc3RhdGljIGNoYXIgKnBnX2dldF9ydWxlZGVmX3dvcmtlcihPaWQg cnVsZW9pZCwgaW50IHByZXR0eUZsYWdzKTsKK3N0YXRpYyB2b2lkIHBnX2dldF9ydWxlX3doZXJl Y2xhdXNlKGNoYXIgKnF1YWxzdHIsIFF1ZXJ5ICpxdWVyeSwKKwkJCQkJCQkJCSBTdHJpbmdJbmZv IGJ1ZiwgaW50IHByZXR0eUZsYWdzKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfaW5kZXhkZWZfd29y a2VyKE9pZCBpbmRleHJlbGlkLCBpbnQgY29sbm8sCiAJCQkJCQkJCQljb25zdCBPaWQgKmV4Y2x1 ZGVPcHMsCiAJCQkJCQkJCQlib29sIGF0dHJzT25seSwgYm9vbCBrZXlzT25seSwKQEAgLTM1OCw3 ICszNjEsNiBAQCBzdGF0aWMgaW50CXByaW50X2Z1bmN0aW9uX2FyZ3VtZW50cyhTdHJpbmdJbmZv IGJ1ZiwgSGVhcFR1cGxlIHByb2N0dXAsCiAJCQkJCQkJCQkgYm9vbCBwcmludF90YWJsZV9hcmdz LCBib29sIHByaW50X2RlZmF1bHRzKTsKIHN0YXRpYyB2b2lkIHByaW50X2Z1bmN0aW9uX3JldHR5 cGUoU3RyaW5nSW5mbyBidWYsIEhlYXBUdXBsZSBwcm9jdHVwKTsKIHN0YXRpYyB2b2lkIHByaW50 X2Z1bmN0aW9uX3RyZnR5cGVzKFN0cmluZ0luZm8gYnVmLCBIZWFwVHVwbGUgcHJvY3R1cCk7Ci1z dGF0aWMgdm9pZCBwcmludF9mdW5jdGlvbl9zcWxib2R5KFN0cmluZ0luZm8gYnVmLCBIZWFwVHVw bGUgcHJvY3R1cCk7CiBzdGF0aWMgdm9pZCBzZXRfcnRhYmxlX25hbWVzKGRlcGFyc2VfbmFtZXNw YWNlICpkcG5zLCBMaXN0ICpwYXJlbnRfbmFtZXNwYWNlcywKIAkJCQkJCQkgQml0bWFwc2V0ICpy ZWxzX3VzZWQpOwogc3RhdGljIHZvaWQgc2V0X2RlcGFyc2VfZm9yX3F1ZXJ5KGRlcGFyc2VfbmFt ZXNwYWNlICpkcG5zLCBRdWVyeSAqcXVlcnksCkBAIC01NTUsNiArNTU3LDgwIEBAIHBnX2dldF9y dWxlZGVmX2V4dChQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9URVhUX1Aoc3RyaW5nX3Rv X3RleHQocmVzKSk7CiB9CiAKKy8qCisgKiBHaXZlbiBhIHBhaXIgb2YgRGF0dW0gY29ycmVzcG9u ZGluZyB0byBhIHJ1bGUncyBwZ19yZXdyaXRlLmV2X3F1YWwgYW5kCisgKiBldl9hY3Rpb24gY29s dW1ucywgcmV0dXJuIHRoZWlyIHRleHQgcmVwcmVzZW50YXRpb247IGV2X3F1YWwgYXMgYSBzaW5n bGUKKyAqIHN0cmluZyBpbiB3aGVyZUNsYXVzZSBhbmQgZXZfYWN0aW9uIGFzIGEgTGlzdCBvZiBz dHJpbmdzICh3aGljaCBtaWdodCBiZQorICogTklMLCBzaWduYWxsaW5nIE5PVEhJTkcpIGluIGFj dGlvbnMuCisgKi8KK3ZvaWQKK3BnX2dldF9ydWxlZGVmX2RldGFpbGVkKERhdHVtIGV2X3F1YWws IERhdHVtIGV2X2FjdGlvbiwKKwkJCQkJCWNoYXIgKip3aGVyZUNsYXVzZSwgTGlzdCAqKmFjdGlv bnMpCit7CisJaW50CQkJcHJldHR5RmxhZ3MgPSAwOworCWNoYXIJICAgKnF1YWxzdHIgPSBUZXh0 RGF0dW1HZXRDU3RyaW5nKGV2X3F1YWwpOworCWNoYXIJICAgKmFjdGlvbnN0ciA9IFRleHREYXR1 bUdldENTdHJpbmcoZXZfYWN0aW9uKTsKKwlMaXN0CSAgICphY3Rpb25Ob2RlTGlzdCA9IChMaXN0 ICopIHN0cmluZ1RvTm9kZShhY3Rpb25zdHIpOworCVN0cmluZ0luZm9EYXRhIGJ1ZjsKKworCSp3 aGVyZUNsYXVzZSA9IE5VTEw7CisJKmFjdGlvbnMgPSBOSUw7CisJaW5pdFN0cmluZ0luZm8oJmJ1 Zik7CisKKwlpZiAoc3RyY21wKHF1YWxzdHIsICI8PiIpICE9IDApCisJeworCQlRdWVyeQkgICAq cXVlcnkgPSAoUXVlcnkgKikgbGluaXRpYWwoYWN0aW9uTm9kZUxpc3QpOworCisJCXBnX2dldF9y dWxlX3doZXJlY2xhdXNlKHF1YWxzdHIsIHF1ZXJ5LCAmYnVmLCAwKTsKKwkJKndoZXJlQ2xhdXNl ID0gcHN0cmR1cChidWYuZGF0YSk7CisJfQorCisJaWYgKGxpc3RfbGVuZ3RoKGFjdGlvbk5vZGVM aXN0KSA+IDApCisJeworCQlMaXN0Q2VsbCAgICpjZWxsOworCisJCWZvcmVhY2goY2VsbCwgYWN0 aW9uTm9kZUxpc3QpCisJCXsKKwkJCVF1ZXJ5CSAgICpxdWVyeSA9IChRdWVyeSAqKSBsZmlyc3Qo Y2VsbCk7CisKKwkJCXJlc2V0U3RyaW5nSW5mbygmYnVmKTsKKwkJCWdldF9xdWVyeV9kZWYocXVl cnksICZidWYsIE5JTCwgTlVMTCwgdHJ1ZSwKKwkJCQkJCSAgcHJldHR5RmxhZ3MsIFdSQVBfQ09M VU1OX0RFRkFVTFQsIDApOworCQkJKmFjdGlvbnMgPSBsYXBwZW5kKCphY3Rpb25zLCBwc3RyZHVw KGJ1Zi5kYXRhKSk7CisJCX0KKwl9Cit9CisKKy8qCisgKiBUbyBnZXQgdGhlIHJld3JpdGUgcnVs ZSBvZiBhIHZpZXcgd2hlbiB0aGUgQ1JFQVRFIFZJRVcgY29tbWFuZCBleGVjdXRpb24gaXMKKyAq IHN0aWxsIGluIHByb2dyZXNzOiB3ZSBzZWFyY2ggdGhlIHN5c3RlbSBjYWNoZSBSVUxFUkVMTkFN RSB0byBnZXQgdGhlIHJld3JpdGUKKyAqIHJ1bGUgb2YgdGhlIHZpZXcgYXMgb3Bwb3NlZCB0byBx dWVyeWluZyBwZ19yZXdyaXRlIGFzIGluIHBnX2dldF92aWV3ZGVmX3dvcmtlcigpLAorICogd2hp Y2ggd2lsbCByZXR1cm4gZW1wdHkgcmVzdWx0LgorICovCitjaGFyICoKK3BnX2dldF92aWV3ZGVm X3N0cmluZyhPaWQgdmlld29pZCkKK3sKKwlTdHJpbmdJbmZvRGF0YSBidWY7CisJUmVsYXRpb24J cGdfcmV3cml0ZTsKKwlIZWFwVHVwbGUJcnVsZXR1cDsKKwlUdXBsZURlc2MJcnVsZXR0YzsKKwor CWluaXRTdHJpbmdJbmZvKCZidWYpOworCXBnX3Jld3JpdGUgPSB0YWJsZV9vcGVuKFJld3JpdGVS ZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcnVsZXR1cCA9IFNlYXJjaFN5c0NhY2hl MihSVUxFUkVMTkFNRSwKKwkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0odmlld29pZCksCisJCQkJ CQkJICBQb2ludGVyR2V0RGF0dW0oVmlld1NlbGVjdFJ1bGVOYW1lKSk7CisJaWYgKCFIZWFwVHVw bGVJc1ZhbGlkKHJ1bGV0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3IgcmV3cml0ZSBydWxlIGZvciB2aWV3IHdpdGggT0lEICV1Iiwgdmlld29pZCk7CisKKwlydWxl dHRjID0gcGdfcmV3cml0ZS0+cmRfYXR0OworCW1ha2Vfdmlld2RlZigmYnVmLCBydWxldHVwLCBy dWxldHRjLCAwLCBXUkFQX0NPTFVNTl9ERUZBVUxUKTsKKwlSZWxlYXNlU3lzQ2FjaGUocnVsZXR1 cCk7CisJdGFibGVfY2xvc2UocGdfcmV3cml0ZSwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVy biBidWYuZGF0YTsKK30KIAogc3RhdGljIGNoYXIgKgogcGdfZ2V0X3J1bGVkZWZfd29ya2VyKE9p ZCBydWxlb2lkLCBpbnQgcHJldHR5RmxhZ3MpCkBAIC0xMDI1LDY1ICsxMTAxLDEyIEBAIHBnX2dl dF90cmlnZ2VyZGVmX3dvcmtlcihPaWQgdHJpZ2lkLCBib29sIHByZXR0eSkKIAlpZiAoIWlzbnVs bCkKIAl7CiAJCU5vZGUJICAgKnF1YWw7Ci0JCWNoYXIJCXJlbGtpbmQ7Ci0JCWRlcGFyc2VfY29u dGV4dCBjb250ZXh0OwotCQlkZXBhcnNlX25hbWVzcGFjZSBkcG5zOwotCQlSYW5nZVRibEVudHJ5 ICpvbGRydGU7Ci0JCVJhbmdlVGJsRW50cnkgKm5ld3J0ZTsKLQotCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKCZidWYsICJXSEVOICgiKTsKKwkJY2hhcgkgICAqcXVhbHN0cjsKIAogCQlxdWFsID0g c3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcodmFsdWUpKTsKKwkJcXVhbHN0ciA9IHBn X2dldF90cmlnZ2VyX3doZW5jbGF1c2UodHJpZ3JlYywgcXVhbCwgcHJldHR5KTsKIAotCQlyZWxr aW5kID0gZ2V0X3JlbF9yZWxraW5kKHRyaWdyZWMtPnRncmVsaWQpOwotCi0JCS8qIEJ1aWxkIG1p bmltYWwgT0xEIGFuZCBORVcgUlRFcyBmb3IgdGhlIHJlbCAqLwotCQlvbGRydGUgPSBtYWtlTm9k ZShSYW5nZVRibEVudHJ5KTsKLQkJb2xkcnRlLT5ydGVraW5kID0gUlRFX1JFTEFUSU9OOwotCQlv bGRydGUtPnJlbGlkID0gdHJpZ3JlYy0+dGdyZWxpZDsKLQkJb2xkcnRlLT5yZWxraW5kID0gcmVs a2luZDsKLQkJb2xkcnRlLT5yZWxsb2NrbW9kZSA9IEFjY2Vzc1NoYXJlTG9jazsKLQkJb2xkcnRl LT5hbGlhcyA9IG1ha2VBbGlhcygib2xkIiwgTklMKTsKLQkJb2xkcnRlLT5lcmVmID0gb2xkcnRl LT5hbGlhczsKLQkJb2xkcnRlLT5sYXRlcmFsID0gZmFsc2U7Ci0JCW9sZHJ0ZS0+aW5oID0gZmFs c2U7Ci0JCW9sZHJ0ZS0+aW5Gcm9tQ2wgPSB0cnVlOwotCi0JCW5ld3J0ZSA9IG1ha2VOb2RlKFJh bmdlVGJsRW50cnkpOwotCQluZXdydGUtPnJ0ZWtpbmQgPSBSVEVfUkVMQVRJT047Ci0JCW5ld3J0 ZS0+cmVsaWQgPSB0cmlncmVjLT50Z3JlbGlkOwotCQluZXdydGUtPnJlbGtpbmQgPSByZWxraW5k OwotCQluZXdydGUtPnJlbGxvY2ttb2RlID0gQWNjZXNzU2hhcmVMb2NrOwotCQluZXdydGUtPmFs aWFzID0gbWFrZUFsaWFzKCJuZXciLCBOSUwpOwotCQluZXdydGUtPmVyZWYgPSBuZXdydGUtPmFs aWFzOwotCQluZXdydGUtPmxhdGVyYWwgPSBmYWxzZTsKLQkJbmV3cnRlLT5pbmggPSBmYWxzZTsK LQkJbmV3cnRlLT5pbkZyb21DbCA9IHRydWU7Ci0KLQkJLyogQnVpbGQgdHdvLWVsZW1lbnQgcnRh YmxlICovCi0JCW1lbXNldCgmZHBucywgMCwgc2l6ZW9mKGRwbnMpKTsKLQkJZHBucy5ydGFibGUg PSBsaXN0X21ha2UyKG9sZHJ0ZSwgbmV3cnRlKTsKLQkJZHBucy5zdWJwbGFucyA9IE5JTDsKLQkJ ZHBucy5jdGVzID0gTklMOwotCQlkcG5zLmFwcGVuZHJlbHMgPSBOVUxMOwotCQlzZXRfcnRhYmxl X25hbWVzKCZkcG5zLCBOSUwsIE5VTEwpOwotCQlzZXRfc2ltcGxlX2NvbHVtbl9uYW1lcygmZHBu cyk7Ci0KLQkJLyogU2V0IHVwIGNvbnRleHQgd2l0aCBvbmUtZGVlcCBuYW1lc3BhY2Ugc3RhY2sg Ki8KLQkJY29udGV4dC5idWYgPSAmYnVmOwotCQljb250ZXh0Lm5hbWVzcGFjZXMgPSBsaXN0X21h a2UxKCZkcG5zKTsKLQkJY29udGV4dC53aW5kb3dDbGF1c2UgPSBOSUw7Ci0JCWNvbnRleHQud2lu ZG93VExpc3QgPSBOSUw7Ci0JCWNvbnRleHQudmFycHJlZml4ID0gdHJ1ZTsKLQkJY29udGV4dC5w cmV0dHlGbGFncyA9IEdFVF9QUkVUVFlfRkxBR1MocHJldHR5KTsKLQkJY29udGV4dC53cmFwQ29s dW1uID0gV1JBUF9DT0xVTU5fREVGQVVMVDsKLQkJY29udGV4dC5pbmRlbnRMZXZlbCA9IFBSRVRU WUlOREVOVF9TVEQ7Ci0JCWNvbnRleHQuc3BlY2lhbF9leHBya2luZCA9IEVYUFJfS0lORF9OT05F OwotCQljb250ZXh0LmFwcGVuZHBhcmVudHMgPSBOVUxMOwotCi0JCWdldF9ydWxlX2V4cHIocXVh bCwgJmNvbnRleHQsIGZhbHNlKTsKLQotCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsICIp ICIpOworCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICJXSEVOICglcykgIiwgcXVhbHN0cik7CiAJ fQogCiAJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiRVhFQ1VURSBGVU5DVElPTiAlcygiLApAQCAt MTEyNCw2ICsxMTQ3LDc0IEBAIHBnX2dldF90cmlnZ2VyZGVmX3dvcmtlcihPaWQgdHJpZ2lkLCBi b29sIHByZXR0eSkKIAlyZXR1cm4gYnVmLmRhdGE7CiB9CiAKKy8qCisgKiBQYXNzIGJhY2sgdGhl IFRyaWdnZXJXaGVuIGNsYXVzZSBvZiBhIHRyaWdnZXIgZ2l2ZW4gdGhlIHBnX3RyaWdnZXIgcmVj b3JkIGFuZAorICogdGhlIGV4cHJlc3Npb24gdHJlZSAoaW4gbm9kZVRvU3RyaW5nKCkgcmVwcmVz ZW50YXRpb24pIGZyb20gcGdfdHJpZ2dlci50Z3F1YWwKKyAqIGZvciB0aGUgdHJpZ2dlcidzIFdI RU4gY29uZGl0aW9uLgorICovCitjaGFyICoKK3BnX2dldF90cmlnZ2VyX3doZW5jbGF1c2UoRm9y bV9wZ190cmlnZ2VyIHRyaWdyZWMsIE5vZGUgKndoZW5DbGF1c2UsIGJvb2wgcHJldHR5KQorewor CVN0cmluZ0luZm9EYXRhIGJ1ZjsKKwljaGFyCQlyZWxraW5kOworCWRlcGFyc2VfY29udGV4dCBj b250ZXh0OworCWRlcGFyc2VfbmFtZXNwYWNlIGRwbnM7CisJUmFuZ2VUYmxFbnRyeSAqb2xkcnRl OworCVJhbmdlVGJsRW50cnkgKm5ld3J0ZTsKKworCWluaXRTdHJpbmdJbmZvKCZidWYpOworCisJ cmVsa2luZCA9IGdldF9yZWxfcmVsa2luZCh0cmlncmVjLT50Z3JlbGlkKTsKKworCS8qIEJ1aWxk IG1pbmltYWwgT0xEIGFuZCBORVcgUlRFcyBmb3IgdGhlIHJlbCAqLworCW9sZHJ0ZSA9IG1ha2VO b2RlKFJhbmdlVGJsRW50cnkpOworCW9sZHJ0ZS0+cnRla2luZCA9IFJURV9SRUxBVElPTjsKKwlv bGRydGUtPnJlbGlkID0gdHJpZ3JlYy0+dGdyZWxpZDsKKwlvbGRydGUtPnJlbGtpbmQgPSByZWxr aW5kOworCW9sZHJ0ZS0+cmVsbG9ja21vZGUgPSBBY2Nlc3NTaGFyZUxvY2s7CisJb2xkcnRlLT5h bGlhcyA9IG1ha2VBbGlhcygib2xkIiwgTklMKTsKKwlvbGRydGUtPmVyZWYgPSBvbGRydGUtPmFs aWFzOworCW9sZHJ0ZS0+bGF0ZXJhbCA9IGZhbHNlOworCW9sZHJ0ZS0+aW5oID0gZmFsc2U7CisJ b2xkcnRlLT5pbkZyb21DbCA9IHRydWU7CisKKwluZXdydGUgPSBtYWtlTm9kZShSYW5nZVRibEVu dHJ5KTsKKwluZXdydGUtPnJ0ZWtpbmQgPSBSVEVfUkVMQVRJT047CisJbmV3cnRlLT5yZWxpZCA9 IHRyaWdyZWMtPnRncmVsaWQ7CisJbmV3cnRlLT5yZWxraW5kID0gcmVsa2luZDsKKwluZXdydGUt PnJlbGxvY2ttb2RlID0gQWNjZXNzU2hhcmVMb2NrOworCW5ld3J0ZS0+YWxpYXMgPSBtYWtlQWxp YXMoIm5ldyIsIE5JTCk7CisJbmV3cnRlLT5lcmVmID0gbmV3cnRlLT5hbGlhczsKKwluZXdydGUt PmxhdGVyYWwgPSBmYWxzZTsKKwluZXdydGUtPmluaCA9IGZhbHNlOworCW5ld3J0ZS0+aW5Gcm9t Q2wgPSB0cnVlOworCisJLyogQnVpbGQgdHdvLWVsZW1lbnQgcnRhYmxlICovCisJbWVtc2V0KCZk cG5zLCAwLCBzaXplb2YoZHBucykpOworCWRwbnMucnRhYmxlID0gbGlzdF9tYWtlMihvbGRydGUs IG5ld3J0ZSk7CisJZHBucy5zdWJwbGFucyA9IE5JTDsKKwlkcG5zLmN0ZXMgPSBOSUw7CisJZHBu cy5hcHBlbmRyZWxzID0gTlVMTDsKKwlzZXRfcnRhYmxlX25hbWVzKCZkcG5zLCBOSUwsIE5VTEwp OworCXNldF9zaW1wbGVfY29sdW1uX25hbWVzKCZkcG5zKTsKKworCS8qIFNldCB1cCBjb250ZXh0 IHdpdGggb25lLWRlZXAgbmFtZXNwYWNlIHN0YWNrICovCisJY29udGV4dC5idWYgPSAmYnVmOwor CWNvbnRleHQubmFtZXNwYWNlcyA9IGxpc3RfbWFrZTEoJmRwbnMpOworCWNvbnRleHQud2luZG93 Q2xhdXNlID0gTklMOworCWNvbnRleHQud2luZG93VExpc3QgPSBOSUw7CisJY29udGV4dC52YXJw cmVmaXggPSB0cnVlOworCWNvbnRleHQucHJldHR5RmxhZ3MgPSBHRVRfUFJFVFRZX0ZMQUdTKHBy ZXR0eSk7CisJY29udGV4dC53cmFwQ29sdW1uID0gV1JBUF9DT0xVTU5fREVGQVVMVDsKKwljb250 ZXh0LmluZGVudExldmVsID0gUFJFVFRZSU5ERU5UX1NURDsKKwljb250ZXh0LnNwZWNpYWxfZXhw cmtpbmQgPSBFWFBSX0tJTkRfTk9ORTsKKwljb250ZXh0LmFwcGVuZHBhcmVudHMgPSBOVUxMOwor CisJZ2V0X3J1bGVfZXhwcih3aGVuQ2xhdXNlLCAmY29udGV4dCwgZmFsc2UpOworCisJcmV0dXJu IGJ1Zi5kYXRhOworfQorCiAvKiAtLS0tLS0tLS0tCiAgKiBwZ19nZXRfaW5kZXhkZWYJCQktIEdl dCB0aGUgZGVmaW5pdGlvbiBvZiBhbiBpbmRleAogICoKQEAgLTM0ODYsNyArMzU3NywxMiBAQCBw Z19nZXRfZnVuY3Rpb25fYXJnX2RlZmF1bHQoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5f VEVYVF9QKHN0cmluZ190b190ZXh0KHN0cikpOwogfQogCi1zdGF0aWMgdm9pZAorLyoKKyAqIFBy b2R1Y2UgdGhlIGZvcm1hdHRlZCBTUUwgYm9keSAobm90IHRoZSB3aG9sZSBmdW5jdGlvbiBkZWZp bml0aW9uKQorICogb2YgYSBmdW5jdGlvbiBnaXZlbiB0aGUgcGdfcHJvYyB0dXBsZS4gU2F2ZSB0 aGUgZm9ybWF0dGVkIFNRTCBpbiB0aGUKKyAqIGdpdmVuIFN0cmluZ0luZm8uCisgKi8KK3ZvaWQK IHByaW50X2Z1bmN0aW9uX3NxbGJvZHkoU3RyaW5nSW5mbyBidWYsIEhlYXBUdXBsZSBwcm9jdHVw KQogewogCWludAkJCW51bWFyZ3M7CkBAIC01MjMxLDQ4ICs1MzI3LDE4IEBAIG1ha2VfcnVsZWRl ZihTdHJpbmdJbmZvIGJ1ZiwgSGVhcFR1cGxlIHJ1bGV0dXAsIFR1cGxlRGVzYyBydWxldHRjLAog CS8qIElmIHRoZSBydWxlIGhhcyBhbiBldmVudCBxdWFsaWZpY2F0aW9uLCBhZGQgaXQgKi8KIAlp ZiAoc3RyY21wKGV2X3F1YWwsICI8PiIpICE9IDApCiAJewotCQlOb2RlCSAgICpxdWFsOwotCQlR dWVyeQkgICAqcXVlcnk7Ci0JCWRlcGFyc2VfY29udGV4dCBjb250ZXh0OwotCQlkZXBhcnNlX25h bWVzcGFjZSBkcG5zOwotCi0JCWlmIChwcmV0dHlGbGFncyAmIFBSRVRUWUZMQUdfSU5ERU5UKQot CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJcbiAgIik7Ci0JCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCAiIFdIRVJFICIpOwotCi0JCXF1YWwgPSBzdHJpbmdUb05vZGUoZXZfcXVh bCk7Ci0KIAkJLyoKIAkJICogV2UgbmVlZCB0byBtYWtlIGEgY29udGV4dCBmb3IgcmVjb2duaXpp bmcgYW55IFZhcnMgaW4gdGhlIHF1YWwKIAkJICogKHdoaWNoIGNhbiBvbmx5IGJlIHJlZmVyZW5j ZXMgdG8gT0xEIGFuZCBORVcpLiAgVXNlIHRoZSBydGFibGUgb2YKIAkJICogdGhlIGZpcnN0IHF1 ZXJ5IGluIHRoZSBhY3Rpb24gbGlzdCBmb3IgdGhpcyBwdXJwb3NlLgogCQkgKi8KLQkJcXVlcnkg PSAoUXVlcnkgKikgbGluaXRpYWwoYWN0aW9ucyk7Ci0KLQkJLyoKLQkJICogSWYgdGhlIGFjdGlv biBpcyBJTlNFUlQuLi5TRUxFQ1QsIE9MRC9ORVcgaGF2ZSBiZWVuIHB1c2hlZCBkb3duCi0JCSAq IGludG8gdGhlIFNFTEVDVCwgYW5kIHRoYXQncyB3aGF0IHdlIG5lZWQgdG8gbG9vayBhdC4gKFVn bHkga2x1Z2UKLQkJICogLi4uIHRyeSB0byBmaXggdGhpcyB3aGVuIHdlIHJlZGVzaWduIHF1ZXJ5 dHJlZXMuKQotCQkgKi8KLQkJcXVlcnkgPSBnZXRJbnNlcnRTZWxlY3RRdWVyeShxdWVyeSwgTlVM TCk7Ci0KLQkJLyogTXVzdCBhY3F1aXJlIGxvY2tzIHJpZ2h0IGF3YXk7IHNlZSBub3RlcyBpbiBn ZXRfcXVlcnlfZGVmKCkgKi8KLQkJQWNxdWlyZVJld3JpdGVMb2NrcyhxdWVyeSwgZmFsc2UsIGZh bHNlKTsKLQotCQljb250ZXh0LmJ1ZiA9IGJ1ZjsKLQkJY29udGV4dC5uYW1lc3BhY2VzID0gbGlz dF9tYWtlMSgmZHBucyk7Ci0JCWNvbnRleHQud2luZG93Q2xhdXNlID0gTklMOwotCQljb250ZXh0 LndpbmRvd1RMaXN0ID0gTklMOwotCQljb250ZXh0LnZhcnByZWZpeCA9IChsaXN0X2xlbmd0aChx dWVyeS0+cnRhYmxlKSAhPSAxKTsKLQkJY29udGV4dC5wcmV0dHlGbGFncyA9IHByZXR0eUZsYWdz OwotCQljb250ZXh0LndyYXBDb2x1bW4gPSBXUkFQX0NPTFVNTl9ERUZBVUxUOwotCQljb250ZXh0 LmluZGVudExldmVsID0gUFJFVFRZSU5ERU5UX1NURDsKLQkJY29udGV4dC5zcGVjaWFsX2V4cHJr aW5kID0gRVhQUl9LSU5EX05PTkU7Ci0JCWNvbnRleHQuYXBwZW5kcGFyZW50cyA9IE5VTEw7CisJ CVF1ZXJ5CSAgICpxdWVyeSA9IChRdWVyeSAqKSBsaW5pdGlhbChhY3Rpb25zKTsKIAotCQlzZXRf ZGVwYXJzZV9mb3JfcXVlcnkoJmRwbnMsIHF1ZXJ5LCBOSUwpOworCQlpZiAocHJldHR5RmxhZ3Mg JiBQUkVUVFlGTEFHX0lOREVOVCkKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiXG4g ICIpOworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiBXSEVSRSAiKTsKIAotCQlnZXRf cnVsZV9leHByKHF1YWwsICZjb250ZXh0LCBmYWxzZSk7CisJCXBnX2dldF9ydWxlX3doZXJlY2xh dXNlKGV2X3F1YWwsIHF1ZXJ5LCBidWYsIHByZXR0eUZsYWdzKTsKIAl9CiAKIAlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKGJ1ZiwgIiBETyAiKTsKQEAgLTUzMTMsNiArNTM3OSw0NyBAQCBtYWtlX3J1 bGVkZWYoU3RyaW5nSW5mbyBidWYsIEhlYXBUdXBsZSBydWxldHVwLCBUdXBsZURlc2MgcnVsZXR0 YywKIAl0YWJsZV9jbG9zZShldl9yZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsKIH0KIAorLyoK KyAqIEdpdmVuIGEgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gYSBydWxlJ3MgcGdfcmV3cml0ZS5l dl9xdWFsIGFuZCBhIHF1ZXJ5CisgKiBwYXJzZXRyZWUsIGFwcGVuZCBldl9xdWFsJ3MgdGV4dCBy ZXByZXNlbnRhdGlvbiBpbnRvIHRoZSBvdXRwdXQgYnVmLgorICoKKyAqIFRyaWVzIHRvIHByZXR0 eSB1cCB0aGUgb3V0cHV0IGFjY29yZGluZyB0byBwcmV0dHlGbGFncy4KKyAqLworc3RhdGljIHZv aWQKK3BnX2dldF9ydWxlX3doZXJlY2xhdXNlKGNoYXIgKnF1YWxzdHIsIFF1ZXJ5ICpxdWVyeSwg U3RyaW5nSW5mbyBidWYsCisJCQkJCQlpbnQgcHJldHR5RmxhZ3MpCit7CisJTm9kZQkgICAqcXVh bDsKKwlkZXBhcnNlX2NvbnRleHQgY29udGV4dDsKKwlkZXBhcnNlX25hbWVzcGFjZSBkcG5zOwor CisJcXVhbCA9IHN0cmluZ1RvTm9kZShxdWFsc3RyKTsKKworCS8qCisJICogSWYgdGhlIGFjdGlv biBpcyBJTlNFUlQuLi5TRUxFQ1QsIE9MRC9ORVcgaGF2ZSBiZWVuIHB1c2hlZCBkb3duCisJICog aW50byB0aGUgU0VMRUNULCBhbmQgdGhhdCdzIHdoYXQgd2UgbmVlZCB0byBsb29rIGF0LiAoVWds eSBrbHVnZQorCSAqIC4uLiB0cnkgdG8gZml4IHRoaXMgd2hlbiB3ZSByZWRlc2lnbiBxdWVyeXRy ZWVzLikKKwkgKi8KKwlxdWVyeSA9IGdldEluc2VydFNlbGVjdFF1ZXJ5KHF1ZXJ5LCBOVUxMKTsK KworCS8qIE11c3QgYWNxdWlyZSBsb2NrcyByaWdodCBhd2F5OyBzZWUgbm90ZXMgaW4gZ2V0X3F1 ZXJ5X2RlZigpICovCisJQWNxdWlyZVJld3JpdGVMb2NrcyhxdWVyeSwgZmFsc2UsIGZhbHNlKTsK KworCWNvbnRleHQuYnVmID0gYnVmOworCWNvbnRleHQubmFtZXNwYWNlcyA9IGxpc3RfbWFrZTEo JmRwbnMpOworCWNvbnRleHQud2luZG93Q2xhdXNlID0gTklMOworCWNvbnRleHQud2luZG93VExp c3QgPSBOSUw7CisJY29udGV4dC52YXJwcmVmaXggPSAobGlzdF9sZW5ndGgocXVlcnktPnJ0YWJs ZSkgIT0gMSk7CisJY29udGV4dC5wcmV0dHlGbGFncyA9IHByZXR0eUZsYWdzOworCWNvbnRleHQu d3JhcENvbHVtbiA9IFdSQVBfQ09MVU1OX0RFRkFVTFQ7CisJY29udGV4dC5pbmRlbnRMZXZlbCA9 IFBSRVRUWUlOREVOVF9TVEQ7CisJY29udGV4dC5zcGVjaWFsX2V4cHJraW5kID0gRVhQUl9LSU5E X05PTkU7CisJY29udGV4dC5hcHBlbmRwYXJlbnRzID0gTlVMTDsKKworCXNldF9kZXBhcnNlX2Zv cl9xdWVyeSgmZHBucywgcXVlcnksIE5JTCk7CisKKwlnZXRfcnVsZV9leHByKHF1YWwsICZjb250 ZXh0LCBmYWxzZSk7Cit9CiAKIC8qIC0tLS0tLS0tLS0KICAqIG1ha2Vfdmlld2RlZgkJCS0gcmVj b25zdHJ1Y3QgdGhlIFNFTEVDVCBwYXJ0IG9mIGEKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j CmluZGV4IDEyMjU5YzlkZDguLmNlNWY5YjQxMTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2Fj aGUuYwpAQCAtNTcyMiw2ICs1NzIyLDcgQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhS ZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCQlwdWJkZXNjLT5w dWJhY3Rpb25zLnB1YnRydW5jYXRlIHw9IHB1YmZvcm0tPnB1YnRydW5jYXRlOwogCQlwdWJkZXNj LT5wdWJhY3Rpb25zLnB1YmRkbF90YWJsZSB8PSBwdWJmb3JtLT5wdWJkZGxfdGFibGU7CiAJCXB1 YmRlc2MtPnB1YmFjdGlvbnMucHViZGRsX2luZGV4IHw9IHB1YmZvcm0tPnB1YmRkbF9pbmRleDsK KwkJcHViZGVzYy0+cHViYWN0aW9ucy5wdWJkZGxfYWxsIHw9IHB1YmZvcm0tPnB1YmRkbF9hbGw7 CiAKIAkJLyoKIAkJICogQ2hlY2sgaWYgYWxsIGNvbHVtbnMgcmVmZXJlbmNlZCBpbiB0aGUgZmls dGVyIGV4cHJlc3Npb24gYXJlIHBhcnQKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDVkOTNiYjk0OTAuLmY2NTJi NDc2MDYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDA2Niw2ICs0MDY2LDcgQEAgZ2V0UHVibGljYXRpb25z KEFyY2hpdmUgKmZvdXQsIGludCAqbnVtUHVibGljYXRpb25zKQogCWludAkJCWlfcHVidHJ1bmNh dGU7CiAJaW50CQkJaV9wdWJkZGxfdGFibGU7CiAJaW50CQkJaV9wdWJkZGxfaW5kZXg7CisJaW50 CQkJaV9wdWJkZGxfYWxsOwogCWludAkJCWlfcHVidmlhcm9vdDsKIAlpbnQJCQlpLAogCQkJCW50 dXBzOwpAQCAtNDA4NSwyNSArNDA4NiwyNSBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91 dCwgaW50ICpudW1QdWJsaWNhdGlvbnMpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAog CQkJCQkJCSAiU0VMRUNUIHAudGFibGVvaWQsIHAub2lkLCBwLnB1Ym5hbWUsICIKIAkJCQkJCQkg InAucHVib3duZXIsICIKLQkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5w dWJ1cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBwLnB1YmRkbF90YWJsZSwgcC5w dWJkZGxfaW5kZXgsIHAucHVidmlhcm9vdCAiCisJCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5w dWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgcC5wdWJk ZGxfdGFibGUsIHAucHViZGRsX2luZGV4LCBwLnB1YmRkbF9hbGwsIHAucHVidmlhcm9vdCAiCiAJ CQkJCQkJICJGUk9NIHBnX3B1YmxpY2F0aW9uIHAiKTsKIAllbHNlIGlmIChmb3V0LT5yZW1vdGVW ZXJzaW9uID49IDEzMDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJ ICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAucHVibmFtZSwgIgogCQkJCQkJCSAicC5wdWJv d25lciwgIgotCQkJCQkJCSAicC5wdWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0 ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIGZhbHNlIGFzIHAucHViZGRsX3RhYmxlLCBm YWxzZSBhcyBwLnB1YmRkbF9pbmRleCwgcC5wdWJ2aWFyb290ICIKKwkJCQkJCQkgInAucHViYWxs dGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5j YXRlLCBmYWxzZSBhcyBwLnB1YmRkbF90YWJsZSwgZmFsc2UgYXMgcC5wdWJkZGxfaW5kZXgsIGZh bHNlIGFzIHAucHViZGRsX2FsbCwgcC5wdWJ2aWFyb290ICIKIAkJCQkJCQkgIkZST00gcGdfcHVi bGljYXRpb24gcCIpOwogCWVsc2UgaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTEwMDAwKQog CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVDVCBwLnRhYmxlb2lk LCBwLm9pZCwgcC5wdWJuYW1lLCAiCiAJCQkJCQkJICJwLnB1Ym93bmVyLCAiCi0JCQkJCQkJICJw LnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgcC5w dWJ0cnVuY2F0ZSwgZmFsc2UgYXMgcC5wdWJkZGxfdGFibGUsIGZhbHNlIGFzIHAucHViZGRsX2lu ZGV4LCBmYWxzZSBBUyBwdWJ2aWFyb290ICIKKwkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1 Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBmYWxzZSBh cyBwLnB1YmRkbF90YWJsZSwgZmFsc2UgYXMgcC5wdWJkZGxfaW5kZXgsIGZhbHNlIGFzIHAucHVi ZGRsX2FsbCwgZmFsc2UgQVMgcHVidmlhcm9vdCAiCiAJCQkJCQkJICJGUk9NIHBnX3B1YmxpY2F0 aW9uIHAiKTsKIAllbHNlCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAi U0VMRUNUIHAudGFibGVvaWQsIHAub2lkLCBwLnB1Ym5hbWUsICIKIAkJCQkJCQkgInAucHVib3du ZXIsICIKLQkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUs IHAucHViZGVsZXRlLCBmYWxzZSBBUyBwdWJ0cnVuY2F0ZSwgZmFsc2UgYXMgcC5wdWJkZGxfdGFi bGUsIGZhbHNlIGFzIHAucHViZGRsX2luZGV4LCBmYWxzZSBBUyBwdWJ2aWFyb290ICIKKwkJCQkJ CQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRl LCBmYWxzZSBBUyBwdWJ0cnVuY2F0ZSwgZmFsc2UgYXMgcC5wdWJkZGxfdGFibGUsIGZhbHNlIGFz IHAucHViZGRsX2luZGV4LCBmYWxzZSBhcyBwLnB1YmRkbF9hbGwsIGZhbHNlIEFTIHB1YnZpYXJv b3QgIgogCQkJCQkJCSAiRlJPTSBwZ19wdWJsaWNhdGlvbiBwIik7CiAKIAlyZXMgPSBFeGVjdXRl U3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CkBAIC00MTIxLDYg KzQxMjIsNyBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1QdWJsaWNh dGlvbnMpCiAJaV9wdWJ0cnVuY2F0ZSA9IFBRZm51bWJlcihyZXMsICJwdWJ0cnVuY2F0ZSIpOwog CWlfcHViZGRsX3RhYmxlID0gUFFmbnVtYmVyKHJlcywgInB1YmRkbF90YWJsZSIpOwogCWlfcHVi ZGRsX2luZGV4ID0gUFFmbnVtYmVyKHJlcywgInB1YmRkbF9pbmRleCIpOworCWlfcHViZGRsX2Fs bCA9IFBRZm51bWJlcihyZXMsICJwdWJkZGxfYWxsIik7CiAJaV9wdWJ2aWFyb290ID0gUFFmbnVt YmVyKHJlcywgInB1YnZpYXJvb3QiKTsKIAogCXB1YmluZm8gPSBwZ19tYWxsb2MobnR1cHMgKiBz aXplb2YoUHVibGljYXRpb25JbmZvKSk7CkBAIC00MTQ4LDYgKzQxNTAsOCBAQCBnZXRQdWJsaWNh dGlvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1QdWJsaWNhdGlvbnMpCiAJCQkoc3RyY21wKFBR Z2V0dmFsdWUocmVzLCBpLCBpX3B1YmRkbF90YWJsZSksICJ0IikgPT0gMCk7CiAJCXB1YmluZm9b aV0ucHViZGRsX2luZGV4ID0KIAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHViZGRs X2luZGV4KSwgInQiKSA9PSAwKTsKKwkJcHViaW5mb1tpXS5wdWJkZGxfYWxsID0KKwkJCShzdHJj bXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHViZGRsX2FsbCksICJ0IikgPT0gMCk7CiAJCXB1Ymlu Zm9baV0ucHVidmlhcm9vdCA9CiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YnZp YXJvb3QpLCAidCIpID09IDApOwogCkBAIC00MjQ3LDYgKzQyNTEsMTUgQEAgZHVtcFB1YmxpY2F0 aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uSW5mbyAqcHViaW5mbykKIAkJZmly c3QgPSBmYWxzZTsKIAl9CiAKKwlpZiAocHViaW5mby0+cHViZGRsX2FsbCkKKwl7CisJCWlmICgh Zmlyc3QpCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgIik7CisKKwkJYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksICJhbGwiKTsKKwkJZmlyc3QgPSBmYWxzZTsKKwl9CisKIAlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiciKTsKIAogCWlmIChwdWJpbmZvLT5wdWJ2aWFy b290KQpAQCAtODAzNiw3ICs4MDQ5LDcgQEAgZ2V0UHVibGljYXRpb25FdmVudFRyaWdnZXJzKEFy Y2hpdmUgKmZvdXQsIFNpbXBsZVN0cmluZ0xpc3QgKnNraXBUcmlnZ2VycykKIAogCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJICJTRUxFQ1Qgb2lkIEZST00gcGdfcHVibGljYXRp b24gIgotCQkJCQkJICJXSEVSRSBwdWJkZGxfdGFibGUiKTsKKwkJCQkJCSAiV0hFUkUgcHViZGRs X2FsbCBPUiBwdWJkZGxfdGFibGUiKTsKIAogCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBx dWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKIAludHVwcyA9IFBRbnR1cGxlcyhyZXMpOwpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmgKaW5kZXggZWZkNjM0NzdhOC4uNzA2ZjIwNmM4YiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC02 MjIsNiArNjIyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1B1YmxpY2F0aW9uSW5mbwogCWJvb2wJCXB1 YnRydW5jYXRlOwogCWJvb2wJCXB1YmRkbF90YWJsZTsKIAlib29sCQlwdWJkZGxfaW5kZXg7CisJ Ym9vbAkJcHViZGRsX2FsbDsKIAlib29sCQlwdWJ2aWFyb290OwogfSBQdWJsaWNhdGlvbkluZm87 CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMKaW5kZXggZGVmMDY4NjhiYi4uZTMyZGU5ZTE1YyAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTYyMDgs OSArNjIwOCwxMSBAQCBsaXN0UHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJewog CQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiLFxuICBwdWJkZGxfdGFibGUgQVMg XCIlc1wiLFxuIgotCQkJCQkJICAiICBwdWJkZGxfaW5kZXggQVMgXCIlc1wiXG4iLAorCQkJCQkJ ICAiICBwdWJkZGxfaW5kZXggQVMgXCIlc1wiLFxuIgorCQkJCQkJICAiICBwdWJkZGxfYWxsIEFT IFwiJXNcIlxuIiwKIAkJCQkJCSAgZ2V0dGV4dF9ub29wKCJUYWJsZSBERExzIiksCi0JCQkJCQkg IGdldHRleHRfbm9vcCgiSW5kZXggRERMcyIpKTsKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJJbmRl eCBERExzIiksCisJCQkJCQkgIGdldHRleHRfbm9vcCgiQWxsIERETHMiKSk7CiAJfQogCWFwcGVu ZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCSAgIixcbiAgcHViaW5zZXJ0IEFTIFwiJXNcIixcbiIK QEAgLTYzNDMsNyArNjM0NSw3IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBh dHRlcm4pCiAJCQkJCSAgIiAgcHViYWxsdGFibGVzIik7CiAJaWYgKGhhc19wdWJkZGwpCiAJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCi0JCQkJCQkJICIsIHB1YmRkbF90YWJsZSwgcHViZGRs X2luZGV4Iik7CisJCQkJCQkJICIsIHB1YmRkbF90YWJsZSwgcHViZGRsX2luZGV4LCBwdWJkZGxf YWxsIik7CiAKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAogCQkJCQkJICIsICBwdWJpbnNl cnQsIHB1YnVwZGF0ZSwgcHViZGVsZXRlIik7CkBAIC02NDA1LDcgKzY0MDcsNyBAQCBkZXNjcmli ZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQlpZiAoaGFzX3B1YnZpYXJvb3Qp CiAJCQluY29scysrOwogCQlpZiAoaGFzX3B1YmRkbCkKLQkJCW5jb2xzKys7CisJCQluY29scyAr PSAzOwogCiAJCWluaXRQUUV4cEJ1ZmZlcigmdGl0bGUpOwogCQlwcmludGZQUUV4cEJ1ZmZlcigm dGl0bGUsIF8oIlB1YmxpY2F0aW9uICVzIiksIHB1Ym5hbWUpOwpAQCAtNjQxNCw3ICs2NDE2LDEx IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCXByaW50VGFi bGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiT3duZXIiKSwgdHJ1ZSwgYWxpZ24pOwog CQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIkFsbCB0YWJsZXMiKSwg dHJ1ZSwgYWxpZ24pOwogCQlpZiAoaGFzX3B1YmRkbCkKKwkJewogCQkJcHJpbnRUYWJsZUFkZEhl YWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJUYWJsZSBERExzIiksIHRydWUsIGFsaWduKTsKKwkJ CXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiSW5kZXggRERMcyIpLCB0 cnVlLCBhbGlnbik7CisJCQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3Ao IkFsbCBERExzIiksIHRydWUsIGFsaWduKTsKKwkJfQogCQlwcmludFRhYmxlQWRkSGVhZGVyKCZj b250LCBnZXR0ZXh0X25vb3AoIkluc2VydHMiKSwgdHJ1ZSwgYWxpZ24pOwogCQlwcmludFRhYmxl QWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIlVwZGF0ZXMiKSwgdHJ1ZSwgYWxpZ24pOwog CQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIkRlbGV0ZXMiKSwgdHJ1 ZSwgYWxpZ24pOwpAQCAtNjQzMyw3ICs2NDM5LDExIEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNv bnN0IGNoYXIgKnBhdHRlcm4pCiAJCWlmIChoYXNfcHVidmlhcm9vdCkKIAkJCXByaW50VGFibGVB ZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgOCksIGZhbHNlLCBmYWxzZSk7CiAJCWlm IChoYXNfcHViZGRsKQorCQl7CiAJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1 ZShyZXMsIGksIDkpLCBmYWxzZSwgZmFsc2UpOworCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQs IFBRZ2V0dmFsdWUocmVzLCBpLCAxMCksIGZhbHNlLCBmYWxzZSk7CisJCQlwcmludFRhYmxlQWRk Q2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDExKSwgZmFsc2UsIGZhbHNlKTsKKwkJfQog CiAJCWlmICghcHViYWxsdGFibGVzKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmgKaW5kZXggNDY3NzMxYzYxYS4uMzViM2VhMjVlNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uaApAQCAtNjksNiArNjksOSBAQCBDQVRBTE9HKHBnX3B1YmxpY2F0aW9uLDYxMDQs UHVibGljYXRpb25SZWxhdGlvbklkKQogCiAJLyogdHJ1ZSBpZiBpbmRleCBkZGxzIGFyZSBwdWJs aXNoZWQgKi8KIAlib29sCQlwdWJkZGxfaW5kZXg7CisKKwkvKiB0cnVlIGlmIGFsbCBzdXBwb3J0 ZWQgZGRscyBhcmUgcHVibGlzaGVkICovCisJYm9vbAkJcHViZGRsX2FsbDsKIH0gRm9ybURhdGFf cGdfcHVibGljYXRpb247CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTg5LDYgKzkyLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25BY3Rpb25zCiAJYm9vbAkJcHVidHJ1bmNhdGU7CiAJ Ym9vbAkJcHViZGRsX3RhYmxlOwogCWJvb2wJCXB1YmRkbF9pbmRleDsKKwlib29sCQlwdWJkZGxf YWxsOwogfSBQdWJsaWNhdGlvbkFjdGlvbnM7CiAKIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9u RGVzYwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29sbGF0aW9uY21kcy5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvY29sbGF0aW9uY21kcy5oCmluZGV4IGI3NmM3YjNkYzMuLjUz YzRhMWE4YzIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMu aAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmgKQEAgLTE4LDcgKzE4 LDggQEAKICNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKICNpbmNsdWRlICJwYXJz ZXIvcGFyc2Vfbm9kZS5oIgogCi1leHRlcm4gT2JqZWN0QWRkcmVzcyBEZWZpbmVDb2xsYXRpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpuYW1lcywgTGlzdCAqcGFyYW1ldGVycywgYm9vbCBp Zl9ub3RfZXhpc3RzKTsKK2V4dGVybiBPYmplY3RBZGRyZXNzIERlZmluZUNvbGxhdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIExpc3QgKm5hbWVzLCBMaXN0ICpwYXJhbWV0ZXJzLAorCQkJCQkJCQkJ ICBib29sIGlmX25vdF9leGlzdHMsIE9iamVjdEFkZHJlc3MgKmZyb21fY29sbGlkKTsKIGV4dGVy biB2b2lkIElzVGhlcmVDb2xsYXRpb25Jbk5hbWVzcGFjZShjb25zdCBjaGFyICpjb2xsbmFtZSwg T2lkIG5zcE9pZCk7CiBleHRlcm4gT2JqZWN0QWRkcmVzcyBBbHRlckNvbGxhdGlvbihBbHRlckNv bGxhdGlvblN0bXQgKnN0bXQpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9l dmVudF90cmlnZ2VyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmgKaW5k ZXggY2JhNGU3MjQ1NS4uMzM5NTUzZDQ1NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvZXZlbnRfdHJpZ2dlci5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V2ZW50X3RyaWdn ZXIuaApAQCAtMTMyLDUgKzEzMiw3IEBAIGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dlckNvbGxlY3RD cmVhdGVPcENsYXNzKENyZWF0ZU9wQ2xhc3NTdG10ICpzdG10LAogZXh0ZXJuIHZvaWQgRXZlbnRU cmlnZ2VyQ29sbGVjdEFsdGVyVFNDb25maWcoQWx0ZXJUU0NvbmZpZ3VyYXRpb25TdG10ICpzdG10 LAogCQkJCQkJCQkJCQkgT2lkIGNmZ0lkLCBPaWQgKmRpY3RJZHMsIGludCBuZGljdHMpOwogZXh0 ZXJuIHZvaWQgRXZlbnRUcmlnZ2VyQ29sbGVjdEFsdGVyRGVmUHJpdnMoQWx0ZXJEZWZhdWx0UHJp dmlsZWdlc1N0bXQgKnN0bXQpOworZXh0ZXJuIHZvaWQgRXZlbnRUcmlnZ2VyQ29sbGVjdFNlY0xh YmVsKE9iamVjdEFkZHJlc3MgYWRkcmVzcywgY2hhciAqcHJvdmlkZXIsCisJCQkJCQkJCQkJU2Vj TGFiZWxTdG10ICpzdG10KTsKIAogI2VuZGlmCQkJCQkJCS8qIEVWRU5UX1RSSUdHRVJfSCAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWcuaCBiL3NyYy9pbmNsdWRlL3Rjb3Av Y21kdGFnLmgKaW5kZXggMDc2YzI3ZTY0Mi4uMDI1OWE0YjRmNiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvdGNvcC9jbWR0YWcuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZy5oCkBAIC01 Myw3ICs1Myw3IEBAIENvcHlRdWVyeUNvbXBsZXRpb24oUXVlcnlDb21wbGV0aW9uICpkc3QsIGNv bnN0IFF1ZXJ5Q29tcGxldGlvbiAqc3JjKQogZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZVF1ZXJ5Q29t cGxldGlvbihRdWVyeUNvbXBsZXRpb24gKnFjKTsKIGV4dGVybiBjb25zdCBjaGFyICpHZXRDb21t YW5kVGFnTmFtZShDb21tYW5kVGFnIGNvbW1hbmRUYWcpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKkdl dENvbW1hbmRUYWdOYW1lQW5kTGVuKENvbW1hbmRUYWcgY29tbWFuZFRhZywgU2l6ZSAqbGVuKTsK LWV4dGVybiBDb21tYW5kVGFnICpHZXRDb21tYW5kVGFnc0ZvckRETFJlcGwoaW50ICpuY29tbWFu ZHMpOworZXh0ZXJuIExpc3QgKkdldENvbW1hbmRUYWdzRm9yRERMUmVwbCh2b2lkKTsKIGV4dGVy biBib29sIGNvbW1hbmRfdGFnX2Rpc3BsYXlfcm93Y291bnQoQ29tbWFuZFRhZyBjb21tYW5kVGFn KTsKIGV4dGVybiBib29sIGNvbW1hbmRfdGFnX2V2ZW50X3RyaWdnZXJfb2soQ29tbWFuZFRhZyBj b21tYW5kVGFnKTsKIGV4dGVybiBib29sIGNvbW1hbmRfdGFnX3RhYmxlX3Jld3JpdGVfb2soQ29t bWFuZFRhZyBjb21tYW5kVGFnKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvZGRsX2Rl cGFyc2UuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvZGRsX2RlcGFyc2UuaAppbmRleCAyYjc3NTRiZmFj Li41ODFhNDcwYzA5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29wL2RkbF9kZXBhcnNlLmgK KysrIGIvc3JjL2luY2x1ZGUvdGNvcC9kZGxfZGVwYXJzZS5oCkBAIC0xMiwxMSArMTIsMTMgQEAK ICNpZm5kZWYgRERMX0RFUEFSU0VfSAogI2RlZmluZSBERExfREVQQVJTRV9ICiAKKyNpbmNsdWRl ICJjb21tYW5kcy9ldmVudF90cmlnZ2VyLmgiCiAjaW5jbHVkZSAidGNvcC9kZXBhcnNlX3V0aWxp dHkuaCIKIAogZXh0ZXJuIGNoYXIgKmRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKENvbGxlY3RlZENv bW1hbmQgKmNtZCwgYm9vbCBpbmNsdWRlX293bmVyLCBib29sIHZlcmJvc2VfbW9kZSk7CiBleHRl cm4gY2hhciAqZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcoY2hhciAqanNvbmIsIGNoYXIqKiBv d25lcik7CiBleHRlcm4gY2hhciAqZGVwYXJzZV9kcm9wX2NvbW1hbmQoY29uc3QgY2hhciAqb2Jq aWRlbnRpdHksIGNvbnN0IGNoYXIgKm9iamVjdHR5cGUsCiAJCQkJCQkJCSAgRHJvcEJlaGF2aW9y IGJlaGF2aW9yKTsKK2V4dGVybiBjaGFyICogZGVwYXJzZV9BbHRlclB1YmxpY2F0aW9uRHJvcFN0 bXQoU1FMRHJvcE9iamVjdCAqb2JqKTsKIAogI2VuZGlmCQkJCQkJCS8qIERETF9ERVBBUlNFX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5LmggYi9zcmMv aW5jbHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oCmluZGV4IDg3YTc2MWJiM2UuLmNjZTNjMDdm YzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5LmgKKysrIGIv c3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaApAQCAtMzAsNiArMzAsNyBAQCB0eXBl ZGVmIGVudW0gQ29sbGVjdGVkQ29tbWFuZFR5cGUKIAlTQ1RfQWx0ZXJEZWZhdWx0UHJpdmlsZWdl cywKIAlTQ1RfQ3JlYXRlT3BDbGFzcywKIAlTQ1RfQWx0ZXJUU0NvbmZpZywKKwlTQ1RfU2VjdXJp dHlMYWJlbCwKIAlTQ1RfQ3JlYXRlVGFibGVBcwogfSBDb2xsZWN0ZWRDb21tYW5kVHlwZTsKIApA QCAtMTA1LDYgKzEwNiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBDb2xsZWN0ZWRDb21tYW5kCiAJCQlP YmplY3RUeXBlCW9ianR5cGU7CiAJCX0JCQlkZWZwcml2czsKIAorCQkvKiBTRUNVUklUWSBMQUJF TCAqLworCQlzdHJ1Y3QKKwkJeworCQkJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOworCQkJY2hhcgkJ ICpwcm92aWRlcjsKKwkJfQkJCXNlY2xhYmVsOworCiAJCS8qIENSRUFURSBUQUJMRSBBUyAqLwog CQlzdHJ1Y3QKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvYWNsLmggYi9zcmMv aW5jbHVkZS91dGlscy9hY2wuaAppbmRleCBmOGUxMjM4ZmEyLi5mMDU1NzhkMzIyIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy9hY2wuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9hY2wu aApAQCAtMjA5LDYgKzIwOSw4IEBAIGV4dGVybiBBY2xNb2RlIGFjbG1hc2soY29uc3QgQWNsICph Y2wsIE9pZCByb2xlaWQsIE9pZCBvd25lcklkLAogCQkJCQkgICBBY2xNb2RlIG1hc2ssIEFjbE1h c2tIb3cgaG93KTsKIGV4dGVybiBpbnQJYWNsbWVtYmVycyhjb25zdCBBY2wgKmFjbCwgT2lkICoq cm9sZWlkcyk7CiAKK2V4dGVybiBjb25zdCBjaGFyICpwcml2aWxlZ2VfdG9fc3RyaW5nKEFjbE1v ZGUgcHJpdmlsZWdlKTsKKwogZXh0ZXJuIGJvb2wgaGFzX3ByaXZzX29mX3JvbGUoT2lkIG1lbWJl ciwgT2lkIHJvbGUpOwogZXh0ZXJuIGJvb2wgbWVtYmVyX2Nhbl9zZXRfcm9sZShPaWQgbWVtYmVy LCBPaWQgcm9sZSk7CiBleHRlcm4gdm9pZCBjaGVja19jYW5fc2V0X3JvbGUoT2lkIG1lbWJlciwg T2lkIHJvbGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvYWNsY2hrX2ludGVybmFs LmggYi9zcmMvaW5jbHVkZS91dGlscy9hY2xjaGtfaW50ZXJuYWwuaAppbmRleCA1NWFmNjI0ZmIz Li45NDY1NDVmNTNmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9hY2xjaGtfaW50ZXJu YWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9hY2xjaGtfaW50ZXJuYWwuaApAQCAtMzksNiAr MzksNyBAQCB0eXBlZGVmIHN0cnVjdAogCUxpc3QJICAgKmdyYW50ZWVzOwogCWJvb2wJCWdyYW50 X29wdGlvbjsKIAlEcm9wQmVoYXZpb3IgYmVoYXZpb3I7CisJT2lkCQkJZ3JhbnRvcl91aWQ7CiB9 IEludGVybmFsR3JhbnQ7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRp bnMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5zLmgKaW5kZXggYzkwYzMyYmZmMS4uNDhi OGJmZDc5YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaAorKysgYi9z cmMvaW5jbHVkZS91dGlscy9idWlsdGlucy5oCkBAIC0xMjMsNiArMTIzLDcgQEAgZXh0ZXJuIERh dHVtIG51bWVyaWNfZmxvYXQ4X25vX292ZXJmbG93KFBHX0ZVTkNUSU9OX0FSR1MpOwogI2RlZmlu ZSBGT1JNQVRfVFlQRV9GT1JDRV9RVUFMSUZZCTB4MDQJLyogZm9yY2UgcXVhbGlmaWNhdGlvbiBv ZiB0eXBlICovCiAjZGVmaW5lIEZPUk1BVF9UWVBFX0lOVkFMSURfQVNfTlVMTAkweDA4CS8qIE5V TEwgaWYgdW5kZWZpbmVkICovCiBleHRlcm4gY2hhciAqZm9ybWF0X3R5cGVfZXh0ZW5kZWQoT2lk IHR5cGVfb2lkLCBpbnQzMiB0eXBlbW9kLCBiaXRzMTYgZmxhZ3MpOworZXh0ZXJuIGNoYXIgKmZv cm1hdF9wcm9jZWR1cmVfYXJncyhPaWQgcHJvY2VkdXJlX29pZCwgYm9vbCBmb3JjZV9xdWFsaWZ5 KTsKIAogZXh0ZXJuIGNoYXIgKmZvcm1hdF90eXBlX2JlKE9pZCB0eXBlX29pZCk7CiBleHRlcm4g Y2hhciAqZm9ybWF0X3R5cGVfYmVfcXVhbGlmaWVkKE9pZCB0eXBlX29pZCk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1 dGlscy5oCmluZGV4IDlhZGM1ODkxNzMuLmI2ZTIwZTdlZTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL3J1bGV1dGlscy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5o CkBAIC0xMyw5ICsxMywxMiBAQAogI2lmbmRlZiBSVUxFVVRJTFNfSAogI2RlZmluZSBSVUxFVVRJ TFNfSAogCisjaW5jbHVkZSAiYWNjZXNzL2h0dXAuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Ry aWdnZXIuaCIKICNpbmNsdWRlICJub2Rlcy9ub2Rlcy5oIgogI2luY2x1ZGUgIm5vZGVzL3BhcnNl bm9kZXMuaCIKICNpbmNsdWRlICJub2Rlcy9wZ19saXN0LmgiCisjaW5jbHVkZSAicGFyc2VyL3Bh cnNlX25vZGUuaCIKIAogc3RydWN0IFBsYW47CQkJCQkvKiBhdm9pZCBpbmNsdWRpbmcgcGxhbm5v ZGVzLmggaGVyZSAqLwogc3RydWN0IFBsYW5uZWRTdG10OwpAQCAtMjMsNyArMjYsMTAgQEAgc3Ry dWN0IFBsYW5uZWRTdG10OwogCiBleHRlcm4gY2hhciAqcGdfZ2V0X2luZGV4ZGVmX3N0cmluZyhP aWQgaW5kZXhyZWxpZCk7CiBleHRlcm4gY2hhciAqcGdfZ2V0X2luZGV4ZGVmX2NvbHVtbnMoT2lk IGluZGV4cmVsaWQsIGJvb2wgcHJldHR5KTsKK2V4dGVybiBjaGFyICpwZ19nZXRfdHJpZ2dlcl93 aGVuY2xhdXNlKEZvcm1fcGdfdHJpZ2dlciB0cmlncmVjLAorCQkJCQkJCQkJICAgTm9kZSAqd2hl bkNsYXVzZSwgYm9vbCBwcmV0dHkpOwogZXh0ZXJuIGNoYXIgKnBnX2dldF9xdWVyeWRlZihRdWVy eSAqcXVlcnksIGJvb2wgcHJldHR5KTsKK2V4dGVybiBjaGFyICpwZ19nZXRfdmlld2RlZl9zdHJp bmcoT2lkIHZpZXdvaWQpOwogCiBleHRlcm4gY2hhciAqcGdfZ2V0X3BhcnRrZXlkZWZfY29sdW1u cyhPaWQgcmVsaWQsIGJvb2wgcHJldHR5KTsKIGV4dGVybiBjaGFyICpwZ19nZXRfcGFydGtleWRl Zl9zdHJpbmcoT2lkIHJlbGlkKTsKQEAgLTMxLDYgKzM3LDkgQEAgZXh0ZXJuIGNoYXIgKnBnX2dl dF9wYXJ0Y29uc3RyZGVmX3N0cmluZyhPaWQgcGFydGl0aW9uSWQsIGNoYXIgKmFsaWFzbmFtZSk7 CiAKIGV4dGVybiBjaGFyICpwZ19nZXRfY29uc3RyYWludGRlZl9jb21tYW5kKE9pZCBjb25zdHJh aW50SWQpOwogZXh0ZXJuIGNoYXIgKnBnX2dldF9jb25zdHJhaW50ZGVmX3N0cmluZyhPaWQgY29u c3RyYWludElkKTsKK2V4dGVybiB2b2lkIHBnX2dldF9ydWxlZGVmX2RldGFpbGVkKERhdHVtIGV2 X3F1YWwsIERhdHVtIGV2X2FjdGlvbiwKKwkJCQkJCQkJCWNoYXIgKip3aGVyZUNsYXVzZSwgTGlz dCAqKmFjdGlvbnMpOworCiBleHRlcm4gY2hhciAqZGVwYXJzZV9leHByZXNzaW9uKE5vZGUgKmV4 cHIsIExpc3QgKmRwY29udGV4dCwKIAkJCQkJCQkJYm9vbCBmb3JjZXByZWZpeCwgYm9vbCBzaG93 aW1wbGljaXQpOwogZXh0ZXJuIExpc3QgKmRlcGFyc2VfY29udGV4dF9mb3IoY29uc3QgY2hhciAq YWxpYXNuYW1lLCBPaWQgcmVsaWQpOwpAQCAtNTIsNSArNjEsNiBAQCBleHRlcm4gdm9pZCBnZXRf b3BjbGFzc19uYW1lKE9pZCBvcGNsYXNzLCBPaWQgYWN0dWFsX2RhdGF0eXBlLAogZXh0ZXJuIGNo YXIgKmZsYXR0ZW5fcmVsb3B0aW9ucyhPaWQgcmVsaWQpOwogCiBleHRlcm4gY2hhciAqcGdfZ2V0 X3N0YXRpc3RpY3NvYmpkZWZfc3RyaW5nKE9pZCBzdGF0ZXh0aWQpOworZXh0ZXJuIHZvaWQgcHJp bnRfZnVuY3Rpb25fc3FsYm9keShTdHJpbmdJbmZvIGJ1ZiwgSGVhcFR1cGxlIHByb2N0dXApOwog CiAjZW5kaWYJCQkJCQkJLyogUlVMRVVUSUxTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwu b3V0CmluZGV4IDNlNmQyNzkxYzguLjQ0NzRjM2I3MzAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w c3FsLm91dApAQCAtNjIyMyw5ICs2MjIzLDkgQEAgTGlzdCBvZiBzY2hlbWFzCiAoMCByb3dzKQog CiBcZFJwICJuby5zdWNoLnB1YmxpY2F0aW9uIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gTmFtZSB8IE93bmVyIHwgQWxs IHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucworIE5hbWUgfCBPd25lciB8IEFs bCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0rLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KICgwIHJvd3Mp CiAKIFxkUnMgIm5vLnN1Y2guc3Vic2NyaXB0aW9uIgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3B1YmxpY2F0aW9uLm91dAppbmRleCA2NjYwZjQxNjc0Li5jNTRjZTUzZTdiIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtMzAsMjAgKzMwLDIwIEBAIEVS Uk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMKIExJTkUgMTogLi4udWJfeHh4 IFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gJ3RydWUnLCBwdWJsaXNoX3ZpLi4u CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgogXGRScAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucwotICAgICAgICBOYW1lICAgICAg ICB8ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwg SW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHRlc3RwaWJfaW5zX3RydW5jdCB8 IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKLSB0 ZXN0cHViX2RlZmF1bHQgICAgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IGYgICAgICAg fCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgICAgICAgIE5h bWUgICAgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxl IERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAg ICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorIHRlc3RwdWJfZGVmYXVsdCAg ICB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAg ICAgICAgIHwgZgogKDIgcm93cykKIAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9kZWZhdWx0 IFNFVCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlJyk7CiBcZFJwCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2YgcHVibGljYXRpb25zCi0gICAgICAgIE5hbWUgICAgICAgIHwgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gdGVzdHBpYl9pbnNfdHJ1bmN0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgotIHRlc3RwdWJfZGVmYXVsdCAgICB8IHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKKyAgICAgICAgTmFtZSAgICAgICAgfCAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBB bGwgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdGVzdHBpYl9pbnNf dHJ1bmN0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAg ICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAg fCBmICAgICAgICAgfCBmCisgdGVzdHB1Yl9kZWZhdWx0ICAgIHwgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCiAoMiByb3dzKQog CiAtLS0gYWRkaW5nIHRhYmxlcwpAQCAtODcsMTAgKzg3LDEwIEBAIFJFU0VUIGNsaWVudF9taW5f bWVzc2FnZXM7CiAtLSBzaG91bGQgYmUgYWJsZSB0byBhZGQgc2NoZW1hIHRvICdGT1IgVEFCTEUn IHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEFERCBUQUJM RVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogXGRScCsgdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxl Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBE RExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJs aWMudGVzdHB1Yl90YmwxIgogVGFibGVzIGZyb20gc2NoZW1hczoKQEAgLTk5LDIwICs5OSwyMCBA QCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gc2hvdWxkIGJlIGFibGUgdG8gZHJvcCBzY2hlbWEg ZnJvbSAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3J0YWJsZSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBcZFJwKyB0ZXN0cHViX2Zv cnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfZm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFi bGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwg ZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBU YWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCiAKIC0tIHNob3VsZCBiZSBhYmxlIHRv IHNldCBzY2hlbWEgdG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9ydGFibGUgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBcZFJwKyB0 ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWJfZm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAg ICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdCIKIApAQCAtMTIzLDEw ICsxMjMsMTAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIEZPUiBUQUJM RVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yX3Ri bF9zY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QsIFRBQkxFIHB1Yl90ZXN0LnRl c3RwdWJfbm9wazsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViX2Zv cl90Ymxfc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfZm9yX3RibF9zY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKIFRhYmxlcyBm cm9tIHNjaGVtYXM6CkBAIC0xMzUsMTAgKzEzNSwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgog LS0gc2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgdGFibGUgb2YgdGhlIHNhbWUgc2NoZW1hIHRvIHRo ZSBzY2hlbWEgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1h IEFERCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGs7CiBcZFJwKyB0ZXN0cHViX2ZvcnNjaGVt YQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBU YWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9m b3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUg RERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJs ZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBA IC0xNDcsMTAgKzE0NywxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gc2hvdWxkIGJlIGFi bGUgdG8gZHJvcCB0aGUgdGFibGUKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1h IERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9ub3BrOwogXGRScCsgdGVzdHB1Yl9mb3JzY2hl bWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg VGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBm ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf Zm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxl IERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFi bGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QiCiAKQEAgLTE2MSwxMCArMTYxLDEwIEBA IEVSUk9SOiAgcmVsYXRpb24gInRlc3RwdWJfbm9wayIgaXMgbm90IHBhcnQgb2YgdGhlIHB1Ymxp Y2F0aW9uCiAtLSBzaG91bGQgYmUgYWJsZSB0byBzZXQgdGFibGUgdG8gc2NoZW1hIHB1YmxpY2F0 aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgVEFCTEUgcHViX3Rl c3QudGVzdHB1Yl9ub3BrOwogXGRScCsgdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKLSAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hCisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExz IHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJfdGVz dC50ZXN0cHViX25vcGsiCiAKQEAgLTE4NiwxMCArMTg2LDEwIEBAIFB1YmxpY2F0aW9uczoKICAg ICAidGVzdHB1Yl9mb3JhbGx0YWJsZXMiCiAKIFxkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2Zv cmFsbHRhYmxlcwotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJs ZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxs dGFibGVzCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERE THMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgogKDEgcm93 KQogCiBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsMjsKQEAgLTIwMSwxOSArMjAxLDE5IEBAIENSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1Yl90YmwzOwogQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJMRSBPTkxZIHRlc3RwdWJfdGJsMzsKIFJFU0VUIGNs aWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViMwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjMKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMworICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBERExzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsMyIKICAg ICAicHVibGljLnRlc3RwdWJfdGJsM2EiCiAKIFxkUnArIHRlc3RwdWI0Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNAotICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0CisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERE THMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl90 YmwzIgogCkBAIC0yMzQsMTAgKzIzNCwxMCBAQCBVUERBVEUgdGVzdHB1Yl9wYXJ0ZWQxIFNFVCBh ID0gMTsKIC0tIG9ubHkgcGFyZW50IGlzIGxpc3RlZCBhcyBiZWluZyBpbiBwdWJsaWNhdGlvbiwg bm90IHRoZSBwYXJ0aXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ycGFydGVkIEFE RCBUQUJMRSB0ZXN0cHViX3BhcnRlZDsKIFxkUnArIHRlc3RwdWJfZm9ycGFydGVkCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ycGFy dGVkCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnBhcnRlZAor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5k ZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAi cHVibGljLnRlc3RwdWJfcGFydGVkIgogCkBAIC0yNTIsMTAgKzI1MiwxMCBAQCBBTFRFUiBUQUJM RSB0ZXN0cHViX3BhcnRlZCBERVRBQ0ggUEFSVElUSU9OIHRlc3RwdWJfcGFydGVkMTsKIFVQREFU RSB0ZXN0cHViX3BhcnRlZDEgU0VUIGEgPSAxOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3JwYXJ0ZWQgU0VUIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUpOwogXGRScCsg dGVzdHB1Yl9mb3JwYXJ0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9mb3JwYXJ0ZWQKLSAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgdAogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9wYXJ0ZWQiCiAKQEAgLTI4 NCwxMCArMjg0LDEwIEBAIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViNSBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxLCB0ZXN0cHVi X3JmX3RibDIgV0hFUkUgKGMgPD4gJ3Rlc3QnIEFORCBkIDwgNSkgV0lUSCAocHVibGlzaCA9ICdp bnNlcnQnKTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViNQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAg ICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERM cyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAg fCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGlj LnRlc3RwdWJfcmZfdGJsMSIKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMiIgV0hFUkUgKChj IDw+ICd0ZXN0Jzo6dGV4dCkgQU5EIChkIDwgNSkpCkBAIC0zMDAsMTAgKzMwMCwxMCBAQCBUYWJs ZXM6CiAKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEFERCBUQUJMRSB0ZXN0cHViX3JmX3Ri bDMgV0hFUkUgKGUgPiAxMDAwIEFORCBlIDwgMjAwMCk7CiBcZFJwKyB0ZXN0cHViNQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUK LSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAg ICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQorICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8 IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCBm ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRl c3RwdWJfcmZfdGJsMSIKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMiIgV0hFUkUgKChjIDw+ ICd0ZXN0Jzo6dGV4dCkgQU5EIChkIDwgNSkpCkBAIC0zMTksMTAgKzMxOSwxMCBAQCBQdWJsaWNh dGlvbnM6CiAKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IERST1AgVEFCTEUgdGVzdHB1Yl9y Zl90YmwyOwogXGRScCsgdGVzdHB1YjUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1Ci0gICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCBmICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwg ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAg ICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAg ICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDEiCiAgICAgInB1Ymxp Yy50ZXN0cHViX3JmX3RibDMiIFdIRVJFICgoZSA+IDEwMDApIEFORCAoZSA8IDIwMDApKQpAQCAt MzMwLDEwICszMzAsMTAgQEAgVGFibGVzOgogLS0gcmVtb3ZlIHRlc3RwdWJfcmZfdGJsMSBhbmQg YWRkIHRlc3RwdWJfcmZfdGJsMyBhZ2FpbiAoYW5vdGhlciBXSEVSRSBleHByZXNzaW9uKQogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1YjUgU0VUIFRBQkxFIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAo ZSA+IDMwMCBBTkQgZSA8IDUwMCk7CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IGYgICAgICAg fCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQorICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBERExzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAg ICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJs MyIgV0hFUkUgKChlID4gMzAwKSBBTkQgKGUgPCA1MDApKQogCkBAIC0zNjYsMTAgKzM2NiwxMCBA QCBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1Yl9zeW50YXgxIEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEsIE9OTFkgdGVzdHB1Yl9y Zl90YmwzIFdIRVJFIChlIDwgOTk5KSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCcpOwogUkVTRVQg Y2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfc3ludGF4MQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9zeW50YXgxCi0g ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAg fCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9zeW50YXgxCisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExz IHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMu dGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwzIiBXSEVSRSAoZSA8 IDk5OSkKQEAgLTM3OSwxMCArMzc5LDEwIEBAIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VS Uk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3N5bnRheDIgRk9SIFRBQkxFIHRlc3Rw dWJfcmZfdGJsMSwgdGVzdHB1Yl9yZl9zY2hlbWExLnRlc3RwdWJfcmZfdGJsNSBXSEVSRSAoaCA8 IDk5OSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQnKTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXM7CiBcZFJwKyB0ZXN0cHViX3N5bnRheDIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc3ludGF4MgotICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAg ICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc3ludGF4MgorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBERExzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAg ICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMSIK ICAgICAidGVzdHB1Yl9yZl9zY2hlbWExLnRlc3RwdWJfcmZfdGJsNSIgV0hFUkUgKGggPCA5OTkp CkBAIC00OTcsMTAgKzQ5NywxMCBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjYgRk9SIFRB QkxFUyBJTiBTQ0hFTUEgdGVzdHB1Yl9yZl9zY2hlbWEyOwogQUxURVIgUFVCTElDQVRJT04gdGVz dHB1YjYgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgdGVzdHB1Yl9yZl9zY2hlbWEyLCBUQUJMRSB0ZXN0 cHViX3JmX3NjaGVtYTIudGVzdHB1Yl9yZl90Ymw2IFdIRVJFIChpIDwgOTkpOwogUkVTRVQgY2xp ZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWI2Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNgotICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI2CisgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAg ICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJ0ZXN0cHViX3JmX3NjaGVtYTIudGVzdHB1 Yl9yZl90Ymw2IiBXSEVSRSAoaSA8IDk5KQogVGFibGVzIGZyb20gc2NoZW1hczoKQEAgLTcxNCwx MCArNzE0LDEwIEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3RhYmxlX2lucyBXSVRIIChw dWJsaXNoID0gJ2luc2VydCwgdHJ1bmNhdGUnKTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3RhYmxlX2lucyBBREQgVEFCTEUgdGVzdHB1Yl90 Ymw1IChhKTsJCS0tIG9rCiBcZFJwKyB0ZXN0cHViX3RhYmxlX2lucwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3RhYmxlX2lucwotICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwg ZiAgICAgICB8IGYgICAgICAgICB8IHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl90YWJsZV9pbnMKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMg fCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwg ZiAgICAgICB8IGYgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50 ZXN0cHViX3RibDUiIChhKQogCkBAIC04OTEsMTAgKzg5MSwxMCBAQCBDUkVBVEUgVEFCTEUgdGVz dHB1Yl90YmxfYm90aF9maWx0ZXJzIChhIGludCwgYiBpbnQsIGMgaW50LCBQUklNQVJZIEtFWSAo YSxjKSk7CiBBTFRFUiBUQUJMRSB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMgUkVQTElDQSBJREVO VElUWSBVU0lORyBJTkRFWCB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnNfcGtleTsKIEFMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfYm90aF9maWx0ZXJzIEFERCBUQUJMRSB0ZXN0cHViX3RibF9ib3Ro X2ZpbHRlcnMgKGEsYykgV0hFUkUgKGMgIT0gMSk7CiBcZFJwKyB0ZXN0cHViX2JvdGhfZmlsdGVy cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9ib3RoX2ZpbHRlcnMKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg VGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBm ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2Jv dGhfZmlsdGVycworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJs ZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBm ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRh YmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsX2JvdGhfZmlsdGVycyIgKGEsIGMpIFdIRVJF IChjIDw+IDEpCiAKQEAgLTEwOTksMTAgKzEwOTksMTAgQEAgRVJST1I6ICByZWxhdGlvbiAidGVz dHB1Yl90YmwxIiBpcyBhbHJlYWR5IG1lbWJlciBvZiBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3J0 YmwKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRibCBGT1IgVEFCTEUgdGVzdHB1Yl90 YmwxOwogRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3J0YmwiIGFscmVhZHkgZXhpc3Rz CiBcZFJwKyB0ZXN0cHViX2ZvcnRibAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YmwKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRibAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QudGVzdHB1Yl9ub3BrIgogICAgICJw dWJsaWMudGVzdHB1Yl90YmwxIgpAQCAtMTE0MCwxMCArMTE0MCwxMCBAQCBQdWJsaWNhdGlvbnM6 CiAgICAgInRlc3RwdWJfZm9ydGJsIgogCiBcZFJwKyB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVs dAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVsdAorICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXgg RERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVi X3Rlc3QudGVzdHB1Yl9ub3BrIgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgpAQCAtMTIyMSwx MCArMTIyMSwxMCBAQCBSRVZPS0UgQ1JFQVRFIE9OIERBVEFCQVNFIHJlZ3Jlc3Npb24gRlJPTSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOwogRFJPUCBUQUJMRSB0ZXN0cHViX3BhcnRlZDsKIERS T1AgVEFCTEUgdGVzdHB1Yl90YmwxOwogXGRScCsgdGVzdHB1Yl9kZWZhdWx0Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQK LSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERE THMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCiAoMSByb3cpCiAKIC0tIGZhaWwg LSBtdXN0IGJlIG93bmVyIG9mIHB1YmxpY2F0aW9uCkBAIC0xMjM0LDIwICsxMjM0LDIwIEBAIEVS Uk9SOiAgbXVzdCBiZSBvd25lciBvZiBwdWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKIFJFU0VU IFJPTEU7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2RlZmF1bHQgUkVOQU1FIFRPIHRlc3Rw dWJfZm9vOwogXGRScCB0ZXN0cHViX2ZvbwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucwotICAgIE5hbWUg ICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMg fCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSB0ZXN0cHViX2ZvbyB8IHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1 YmxpY2F0aW9ucworICAgIE5hbWUgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCisgdGVzdHB1Yl9mb28gfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKICgxIHJvdykKIAogLS0gcmVu YW1lIGJhY2sgdG8ga2VlcCB0aGUgcmVzdCBzaW1wbGUKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9vIFJFTkFNRSBUTyB0ZXN0cHViX2RlZmF1bHQ7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2RlZmF1bHQgT1dORVIgVE8gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKIFxkUnAgdGVz dHB1Yl9kZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRl eCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHRlc3RwdWJfZGVmYXVsdCB8IHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlcjIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz dCBvZiBwdWJsaWNhdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ZXN0cHViX2RlZmF1bHQgfCByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAg ICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAg fCBmCiAoMSByb3cpCiAKIC0tIGFkZGluZyBzY2hlbWFzIGFuZCB0YWJsZXMKQEAgLTEyNjMsMTkg KzEyNjMsMTkgQEAgQ1JFQVRFIFRBQkxFICJDVVJSRU5UX1NDSEVNQSIuIkNVUlJFTlRfU0NIRU1B IihpZCBpbnQpOwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dDE7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rl c3QxIgogCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjJfZm9yc2NoZW1hIEZPUiBUQUJMRVMg SU4gU0NIRU1BIHB1Yl90ZXN0MSwgcHViX3Rlc3QyLCBwdWJfdGVzdDM7CiBcZFJwKyB0ZXN0cHVi Ml9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IGYgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVz dDIiCkBAIC0xMjg5LDQ0ICsxMjg5LDQ0IEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNl9m b3JzY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgIkNVUlJFTlRfU0NIRU1BIiwgQ1VSCiBDUkVB VEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBGT1IgVEFCTEUgIkNVUlJFTlRfU0NIRU1B Ii4iQ1VSUkVOVF9TQ0hFTUEiOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRl c3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJsaWMiCiAKIFxkUnArIHRl c3RwdWI0X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWI0X2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViNF9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJDVVJSRU5UX1NDSEVNQSIKIAog XGRScCsgdGVzdHB1YjVfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjVfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWI1X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBERExzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgIkNVUlJFTlRfU0NI RU1BIgogICAgICJwdWJsaWMiCiAKIFxkUnArIHRlc3RwdWI2X2ZvcnNjaGVtYQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI2X2ZvcnNjaGVt YQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNl9mb3JzY2hlbWEKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4 IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hl bWFzOgogICAgICJDVVJSRU5UX1NDSEVNQSIKICAgICAicHVibGljIgogCiBcZFJwKyB0ZXN0cHVi X2ZvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAg ICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWJfZm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg VGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAg IHwgZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBm CiBUYWJsZXM6CiAgICAgIkNVUlJFTlRfU0NIRU1BLkNVUlJFTlRfU0NIRU1BIgogCkBAIC0xMzYw LDEwICsxMzYwLDEwIEBAIEVSUk9SOiAgc2NoZW1hICJ0ZXN0cHViX3ZpZXciIGRvZXMgbm90IGV4 aXN0CiAtLSBkcm9wcGluZyB0aGUgc2NoZW1hIHNob3VsZCByZWZsZWN0IHRoZSBjaGFuZ2UgaW4g cHVibGljYXRpb24KIERST1AgU0NIRU1BIHB1Yl90ZXN0MzsKIFxkUnArIHRlc3RwdWIyX2ZvcnNj aGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IGYgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi Ml9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFi bGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwg ZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBU YWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAg LTEzNzEsMjAgKzEzNzEsMjAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIHJlbmFtaW5nIHRo ZSBzY2hlbWEgc2hvdWxkIHJlZmxlY3QgdGhlIGNoYW5nZSBpbiBwdWJsaWNhdGlvbgogQUxURVIg U0NIRU1BIHB1Yl90ZXN0MSBSRU5BTUUgdG8gcHViX3Rlc3QxX3JlbmFtZWQ7CiBcZFJwKyB0ZXN0 cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxX3JlbmFtZWQiCiAg ICAgInB1Yl90ZXN0MiIKIAogQUxURVIgU0NIRU1BIHB1Yl90ZXN0MV9yZW5hbWVkIFJFTkFNRSB0 byBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwg QWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAg ICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xMzkyLDEwICsxMzkyLDEwIEBAIFRh YmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBhbHRlciBwdWJsaWNhdGlvbiBhZGQgc2NoZW1hCiBBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHVi X3Rlc3QyOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBE RExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1 Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTQwNCwxMCArMTQwNCwxMCBAQCBUYWJsZXMg ZnJvbSBzY2hlbWFzOgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIEFERCBU QUJMRVMgSU4gU0NIRU1BIG5vbl9leGlzdGVudF9zY2hlbWE7CiBFUlJPUjogIHNjaGVtYSAibm9u X2V4aXN0ZW50X3NjaGVtYSIgZG9lcyBub3QgZXhpc3QKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVt YQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBU YWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9m b3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUg RERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE0 MTYsMTAgKzE0MTYsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWIxX2ZvcnNjaGVtYSBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBFUlJP UjogIHNjaGVtYSAicHViX3Rlc3QxIiBpcyBhbHJlYWR5IG1lbWJlciBvZiBwdWJsaWNhdGlvbiAi dGVzdHB1YjFfZm9yc2NoZW1hIgogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1h Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXgg RERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVt YXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTQyNywxMCArMTQyNywx MCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gYWx0ZXIgcHVibGljYXRpb24gZHJvcCBzY2hl bWEKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBEUk9QIFRBQkxFUyBJTiBT Q0hFTUEgcHViX3Rlc3QyOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0g ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERM cyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6 CiAgICAgInB1Yl90ZXN0MSIKIApAQCAtMTQzOCwxMCArMTQzOCwxMCBAQCBUYWJsZXMgZnJvbSBz Y2hlbWFzOgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1AgVEFCTEVT IElOIFNDSEVNQSBwdWJfdGVzdDI7CiBFUlJPUjogIHRhYmxlcyBmcm9tIHNjaGVtYSAicHViX3Rl c3QyIiBhcmUgbm90IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uCiBcZFJwKyB0ZXN0cHViMV9mb3Jz Y2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRh YmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IGYgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgog VGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCkBAIC0xNDQ5LDI5ICsxNDQ5 LDI5IEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9m b3JzY2hlbWEgRFJPUCBUQUJMRVMgSU4gU0NIRU1BIG5vbl9leGlzdGVudF9zY2hlbWE7CiBFUlJP UjogIHNjaGVtYSAibm9uX2V4aXN0ZW50X3NjaGVtYSIgZG9lcyBub3QgZXhpc3QKIFxkUnArIHRl c3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKIC0tIGRy b3AgYWxsIHNjaGVtYXMKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBEUk9Q IFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFf Zm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxl IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNj aGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExz IHwgSW5kZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKICgxIHJvdykK IAogLS0gYWx0ZXIgcHVibGljYXRpb24gc2V0IG11bHRpcGxlIHNjaGVtYQogQUxURVIgUFVCTElD QVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MSwg cHViX3Rlc3QyOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEFs bCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAg InB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTQ4MCwxMCArMTQ4MCwxMCBAQCBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIFNF VCBUQUJMRVMgSU4gU0NIRU1BIG5vbl9leGlzdGVudF9zY2hlbWE7CiBFUlJPUjogIHNjaGVtYSAi bm9uX2V4aXN0ZW50X3NjaGVtYSIgZG9lcyBub3QgZXhpc3QKIFxkUnArIHRlc3RwdWIxX2ZvcnNj aGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IGYgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi MV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFi bGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwg ZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBU YWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAg LTE0OTIsMTAgKzE0OTIsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIHJlbW92aW5nIHRo ZSBkdXBsaWNhdGUgc2NoZW1hcwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1h IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MSwgcHViX3Rlc3QxOwogXGRScCsgdGVzdHB1 YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAg ICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIApAQCAtMTU3NCwx OCArMTU3NCwxOCBAQCBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1YjNfZm9yc2NoZW1hOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdl czsKIFxkUnArIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCiAoMSByb3cpCiAKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWIzX2ZvcnNjaGVtYSBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0 cHViM19mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjNfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCkBAIC0xNTk1 LDIwICsxNTk1LDIwIEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYV9mb3J0 YWJsZSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDEsIFRBCiBDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3J0YWJsZV9mb3JzY2hlbWEgRk9SIFRBQkxFIHB1Yl90ZXN0Mi50YmwxLCBU QUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBc ZFJwKyB0ZXN0cHViX2ZvcnNjaGVtYV9mb3J0YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWFfZm9ydGFibGUKLSAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYV9mb3J0YWJsZQorICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8 IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3Qy LnRibDEiCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKIFxkUnArIHRl c3RwdWJfZm9ydGFibGVfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGVfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERE THMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJfdGVzdDIudGJsMSIK IFRhYmxlcyBmcm9tIHNjaGVtYXM6Ci0tIAoyLjMwLjAud2luZG93cy4yCgo= --_007_OS0PR01MB571614EE7EEDBF7049DA4EAE94939OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0001-Deparser-for-Table-DDL-commands-and-exten-2023_04_04.patch" Content-Description: 0001-Deparser-for-Table-DDL-commands-and-exten-2023_04_04.patch Content-Disposition: attachment; filename="0001-Deparser-for-Table-DDL-commands-and-exten-2023_04_04.patch"; size=161848; creation-date="Tue, 04 Apr 2023 03:07:06 GMT"; modification-date="Tue, 04 Apr 2023 03:13:05 GMT" Content-Transfer-Encoding: base64 RnJvbSBlNzcwM2U5OWU1YzNhODRlNWQyMTQ5NWE2NzQzYTI3MTI5YWI1YTc2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXYW5nIFdlaSA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0 ZTogVGh1LCAzMCBNYXIgMjAyMyAxMzo1MDoyMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggMS82XSBE ZXBhcnNlciBmb3IgVGFibGUgRERMIGNvbW1hbmRzIGFuZCBleHRlbmRpbmcgZXZlbnQKIHRyaWdn ZXJzCgpUaGlzIHBhdGNoIGNvbnN0cnVjdHMgSlNPTiBibG9icyByZXByZXNlbnRpbmcgRERMIGNv bW1hbmRzLCB3aGljaCBjYW4KbGF0ZXIgYmUgcmUtcHJvY2Vzc2VkIGludG8gcGxhaW4gc3RyaW5n cyBieSB3ZWxsLWRlZmluZWQgc3ByaW50Zi1saWtlCmV4cGFuc2lvbi4gVGhlc2UgSlNPTiBvYmpl Y3RzIGFyZSBpbnRlbmRlZCB0byBhbGxvdyBmb3IgbWFjaGluZS1lZGl0aW5nIG9mCnRoZSBjb21t YW5kcywgYnkgcmVwbGFjaW5nIGNlcnRhaW4gbm9kZXMgd2l0aGluIHRoZSBvYmplY3RzLgoKTXVj aCBvZiB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIG91dHB1dCBibG9iIGFjdHVhbGx5IGNvbWVzIGZy b20gc3lzdGVtCmNhdGFsb2dzLCBub3QgZnJvbSB0aGUgY29tbWFuZCBwYXJzZSBub2RlLCBhcyBp dCBpcyBpbXBvc3NpYmxlIHRvIHJlbGlhYmx5CmNvbnN0cnVjdCBhIGZ1bGx5LXNwZWNpZmllZCBj b21tYW5kIChpLmUuIG9uZSBub3QgZGVwZW5kZW50IG9uIHNlYXJjaF9wYXRoCmV0YykgbG9va2lu ZyBvbmx5IGF0IHRoZSBwYXJzZSBub2RlLgoKVGhpcyBwcm92aWRlcyBhIGJhc2UgZm9yIGxvZ2lj YWwgcmVwbGljYXRpb24gb2YgRERMIHN0YXRlbWVudHMuIEN1cnJlbnRseSwKdGhlIHBhdGNoIGhh cyBzdXBwb3J0IGZvcjoKCkNSRUFURS9BTFRFUi9EUk9QIFRBQkxFIC0tIE5vdGUgIzEsIE5vdGUg IzIKCk5vdGU6IEZvciBBVFRBQ0gvREVUQUNIIFBBUlRJVElPTiwgd2UgaGF2ZW4ndCBhZGRlZCBl eHRyYSBsb2dpYyBvbgp0aGUgc3Vic2NyaWJlciB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhl IHRhYmxlIG9uIHRoZSBwdWJsaXNoZXIgaXMgYSBQQVJUSVRJT05FRApUQUJMRSB3aGlsZSB0aGUg dGFyZ2V0IHRhYmxlIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUgaXMgYSBOT1JNQUwgdGFibGUuIFdl IHdpbGwKcmVzZWFyY2ggdGhpcyBtb3JlIGFuZCBpbXByb3ZlIGl0IGxhdGVyLgotLS0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlICAgICAgICB8ICAgIDIgKwogc3JjL2JhY2tlbmQvY29t bWFuZHMvY3JlYXRlYXMuYyAgICAgIHwgICAxMCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kZGxf ZGVwYXJzZS5jICAgfCAzMzkxICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9kZGxfanNvbi5jICAgICAgfCAgNzgwICsrKysrKwogc3JjL2JhY2tlbmQvY29t bWFuZHMvZXZlbnRfdHJpZ2dlci5jIHwgIDM1MCArKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21l c29uLmJ1aWxkICAgICB8ICAgIDIgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyAg ICAgIHwgICA0MyArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgfCAgIDEw ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgfCAgICAxICsKIHNyYy9i YWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAgICAgICB8ICAxMDkgKwogc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2Zvcm1hdF90eXBlLmMgIHwgICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jICAgIHwgICAzMSArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0Y2FjaGUu YyAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgfCAgICA3 ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCB8ICAgNTAgKy0KIHNyYy9p bmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggICAgICB8ICAgIDkgKwogc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS90Y29wL2RkbF9kZXBh cnNlLmggICAgICAgfCAgIDIyICsKIHNyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5Lmgg ICB8ICAgMTIgKy0KIHNyYy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5oICAgICAgICAgICB8ICAgIDIg Kwogc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaCAgICAgICAgIHwgICAgMSArCiBzcmMvaW5j bHVkZS91dGlscy9ldnRjYWNoZS5oICAgICAgICAgfCAgICAzICstCiBzcmMvaW5jbHVkZS91dGls cy9ydWxldXRpbHMuaCAgICAgICAgfCAgICA5ICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0ICAgICB8ICAgIDQgKwogMjQgZmlsZXMgY2hhbmdlZCwgNDc5MSBpbnNlcnRpb25zKCsp LCA2NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9jb21tYW5k cy9kZGxfZGVwYXJzZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvY29tbWFuZHMv ZGRsX2pzb24uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL3Rjb3AvZGRsX2RlcGFy c2UuaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKaW5kZXggNDhmNzM0OGY5MS4uMTcxZGZiMjgwMCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvTWFrZWZpbGUKQEAgLTI5LDYgKzI5LDggQEAgT0JKUyA9IFwKIAljb3B5dG8ubyBc CiAJY3JlYXRlYXMubyBcCiAJZGJjb21tYW5kcy5vIFwKKwlkZGxfZGVwYXJzZS5vIFwKKwlkZGxf anNvbi5vIFwKIAlkZWZpbmUubyBcCiAJZGlzY2FyZC5vIFwKIAlkcm9wY21kcy5vIFwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jcmVhdGVhcy5jCmluZGV4IGU5MTkyMGNhMTQuLmE3YjIyY2I1ZGIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY3JlYXRlYXMuYwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNw YWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy90b2FzdGluZy5oIgogI2luY2x1ZGUgImNvbW1hbmRz L2NyZWF0ZWFzLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL21hdHZpZXcuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCkBAIC0xNDMsNiArMTQ0LDE1IEBAIGNyZWF0 ZV9jdGFzX2ludGVybmFsKExpc3QgKmF0dHJMaXN0LCBJbnRvQ2xhdXNlICppbnRvKQogCQlTdG9y ZVZpZXdRdWVyeShpbnRvUmVsYXRpb25BZGRyLm9iamVjdElkLCBxdWVyeSwgZmFsc2UpOwogCQlD b21tYW5kQ291bnRlckluY3JlbWVudCgpOwogCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBGaXJl IHRoZSB0cmlnZ2VyIGZvciB0YWJsZV9pbml0X3dyaXRlIGFmdGVyIGNyZWF0aW5nIHRoZSB0YWJs ZSBzbworCQkgKiB0aGF0IHdlIGNhbiBhY2Nlc3MgdGhlIGNhdGFsb2cgaW5mbyBhYm91dCB0aGUg bmV3bHkgY3JlYXRlZCB0YWJsZQorCQkgKiBpbiB0aGUgdHJpZ2dlciBmdW5jdGlvbi4KKwkJICov CisJCUV2ZW50VHJpZ2dlclRhYmxlSW5pdFdyaXRlKChOb2RlICopIGNyZWF0ZSwgaW50b1JlbGF0 aW9uQWRkcik7CisJfQogCiAJcmV0dXJuIGludG9SZWxhdGlvbkFkZHI7CiB9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfZGVwYXJzZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZGRsX2RlcGFyc2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42 ZWZlODQ0OThmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsX2Rl cGFyc2UuYwpAQCAtMCwwICsxLDMzOTEgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGRk bF9kZXBhcnNlLmMKKyAqCSAgRnVuY3Rpb25zIHRvIGNvbnZlcnQgdXRpbGl0eSBjb21tYW5kcyB0 byBtYWNoaW5lLXBhcnNlYWJsZQorICoJICByZXByZXNlbnRhdGlvbgorICoKKyAqIFBvcnRpb25z IENvcHlyaWdodCAoYykgMTk5Ni0yMDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2 ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBOT1RFUworICoKKyAqIFRoaXMgaXMgaW50ZW5k ZWQgdG8gcHJvdmlkZSBKU09OIGJsb2JzIHJlcHJlc2VudGluZyBEREwgY29tbWFuZHMsIHdoaWNo IGNhbgorICogbGF0ZXIgYmUgcmUtcHJvY2Vzc2VkIGludG8gcGxhaW4gc3RyaW5ncyBieSB3ZWxs LWRlZmluZWQgc3ByaW50Zi1saWtlCisgKiBleHBhbnNpb24uICBUaGVzZSBKU09OIG9iamVjdHMg YXJlIGludGVuZGVkIHRvIGFsbG93IGZvciBtYWNoaW5lLWVkaXRpbmcgb2YKKyAqIHRoZSBjb21t YW5kcywgYnkgcmVwbGFjaW5nIGNlcnRhaW4gbm9kZXMgd2l0aGluIHRoZSBvYmplY3RzLgorICoK KyAqIE11Y2ggb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBvdXRwdXQgYmxvYiBhY3R1YWxseSBj b21lcyBmcm9tIHN5c3RlbQorICogY2F0YWxvZ3MsIG5vdCBmcm9tIHRoZSBjb21tYW5kIHBhcnNl IG5vZGUsIGFzIGl0IGlzIGltcG9zc2libGUgdG8gcmVsaWFibHkKKyAqIGNvbnN0cnVjdCBhIGZ1 bGx5LXNwZWNpZmllZCBjb21tYW5kIChpLmUuIG9uZSBub3QgZGVwZW5kZW50IG9uIHNlYXJjaF9w YXRoCisgKiBldGMpIGxvb2tpbmcgb25seSBhdCB0aGUgcGFyc2Ugbm9kZS4KKyAqCisgKiBEZXBh cnNlIG9iamVjdCB0cmVlIGlzIGNyZWF0ZWQgYnkgdXNpbmc6CisgKiAJYSkgbmV3X29ianRyZWUo Imtub3cgY29udGVudHMiKSB3aGVyZSB0aGUgY29tcGxldGUgdHJlZSBjb250ZW50IGlzIGtub3du IG9yCisgKiAgICAgdGhlIGluaXRpYWwgdHJlZSBjb250ZW50IGlzIGtub3duLgorICogCWIpIG5l d19vYmp0cmVlKCIiKSBmb3IgdGhlIHN5bnRheCB3aGVyZSB0aGUgb2JqZWN0IHRyZWUgd2lsbCBi ZSBkZXJpdmVkCisgKiAgICAgYmFzZWQgb24gc29tZSBjb25kaXRpb25hbCBjaGVja3MuCisgKiAJ YykgbmV3X29ianRyZWVfVkEgd2hlcmUgdGhlIGNvbXBsZXRlIHRyZWUgY2FuIGJlIGRlcml2ZWQg dXNpbmcgc29tZSBmaXhlZAorICogICAgIGNvbnRlbnQgb3IgYnkgdXNpbmcgdGhlIGluaXRpYWwg dHJlZSBjb250ZW50IGFsb25nIHdpdGggc29tZSB2YXJpYWJsZQorICogICAgIGFyZ3VtZW50cy4K KyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfZGVw YXJzZS5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5o IgorCisjaW5jbHVkZSAiYWNjZXNzL2FtYXBpLmgiCisjaW5jbHVkZSAiYWNjZXNzL3JlbGF0aW9u LmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3Bh Y2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19h Z2dyZWdhdGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2F1dGhpZC5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGdfY2FzdC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb252 ZXJzaW9uLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19kZXBlbmQuaCIKKyNpbmNsdWRlICJjYXRh bG9nL3BnX2V4dGVuc2lvbi5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfZm9yZWlnbl9kYXRhX3dy YXBwZXIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2ZvcmVpZ25fc2VydmVyLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9wZ19pbmhlcml0cy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfbGFuZ3VhZ2Uu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2xhcmdlb2JqZWN0LmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ19uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWls eS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcG9saWN5LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z19wcm9jLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19yYW5nZS5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfcmV3cml0ZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfc2VxdWVuY2UuaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpY19leHQuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Ry YW5zZm9ybS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfY29uZmlnLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ190c19kaWN0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190c19wYXJzZXIuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3RlbXBsYXRlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ191c2VyX21hcHBpbmcuaCIKKyNpbmNsdWRl ICJjb21tYW5kcy9kZWZyZW0uaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgorI2lu Y2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKKyNpbmNsdWRlICJmb3JlaWduL2ZvcmVpZ24u aCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKKyNpbmNs dWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCisj aW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV90 eXBlLmgiCisjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgorI2luY2x1ZGUgInRj b3AvZGRsX2RlcGFyc2UuaCIKKyNpbmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKKyNpbmNsdWRlICJ1 dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAi dXRpbHMvZ3VjLmgiCisjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKKyNpbmNsdWRlICJ1dGlscy9s c3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9ydWxl dXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCisvKiBFc3RpbWF0ZWQgbGVu Z3RoIG9mIHRoZSBnZW5lcmF0ZWQganNvbmIgc3RyaW5nICovCisjZGVmaW5lIEpTT05CX0VTVElN QVRFRF9MRU4gMTI4CisKKy8qCisgKiBCZWZvcmUgdGhleSBhcmUgdHVybmVkIGludG8gSlNPTkIg cmVwcmVzZW50YXRpb24sIGVhY2ggY29tbWFuZCBpcworICogcmVwcmVzZW50ZWQgYXMgYW4gb2Jq ZWN0IHRyZWUsIHVzaW5nIHRoZSBzdHJ1Y3RzIGJlbG93LgorICovCit0eXBlZGVmIGVudW0KK3sK KwlPYmpUeXBlTnVsbCwKKwlPYmpUeXBlQm9vbCwKKwlPYmpUeXBlU3RyaW5nLAorCU9ialR5cGVB cnJheSwKKwlPYmpUeXBlSW50ZWdlciwKKwlPYmpUeXBlRmxvYXQsCisJT2JqVHlwZU9iamVjdAor fSBPYmpUeXBlOworCit0eXBlZGVmIGVudW0KK3sKKwlDb25zdHJPYmpUYWJsZSwKKwlDb25zdHJP YmpEb21haW4sCisJQ29uc3RyT2JqRm9yZWlnblRhYmxlCit9IENvbnN0cmFpbnRPYmpUeXBlOwor CisvKgorICogUmVwcmVzZW50IHRoZSBjb21tYW5kIGFzIGFuIG9iamVjdCB0cmVlLgorICovCit0 eXBlZGVmIHN0cnVjdCBPYmpUcmVlCit7CisJc2xpc3RfaGVhZAlwYXJhbXM7CQkJLyogT2JqZWN0 IHRyZWUgcGFyYW1ldGVycyAqLworCWludAkJCW51bVBhcmFtczsJCS8qIE51bWJlciBvZiBwYXJh bWV0ZXJzIGluIHRoZSBvYmplY3QgdHJlZSAqLworCVN0cmluZ0luZm8JZm10aW5mbzsJCS8qIEZv cm1hdCBzdHJpbmcgb2YgdGhlIE9ialRyZWUgKi8KKwlib29sCQlwcmVzZW50OwkJLyogSW5kaWNh dGVzIGlmIGJvb2xlYW4gdmFsdWUgc2hvdWxkIGJlIHN0b3JlZCAqLworfSBPYmpUcmVlOworCisv KgorICogQW4gZWxlbWVudCBvZiBhbiBvYmplY3QgdHJlZSAoT2JqVHJlZSkuCisgKi8KK3R5cGVk ZWYgc3RydWN0IE9iakVsZW0KK3sKKwljaGFyCSAgICpuYW1lOwkJCS8qIE5hbWUgb2Ygb2JqZWN0 IGVsZW1lbnQgKi8KKwlPYmpUeXBlCQlvYmp0eXBlOwkJLyogT2JqZWN0IHR5cGUgKi8KKworCXVu aW9uCisJeworCQlib29sCQlib29sZWFuOworCQljaGFyCSAgICpzdHJpbmc7CisJCWludDY0CQlp bnRlZ2VyOworCQlmbG9hdDgJCWZsdDsKKwkJT2JqVHJlZSAgICAqb2JqZWN0OworCQlMaXN0CSAg ICphcnJheTsKKwl9CQkJdmFsdWU7CQkJLyogU3RvcmUgdGhlIG9iamVjdCB2YWx1ZSBiYXNlZCBv biB0aGUgb2JqZWN0CisJCQkJCQkJCSAqIHR5cGUgKi8KKwlzbGlzdF9ub2RlCW5vZGU7CQkJLyog VXNlZCBpbiBjb252ZXJ0aW5nIGJhY2sgdG8gT2JqRWxlbQorCQkJCQkJCQkgKiBzdHJ1Y3R1cmUg Ki8KK30gT2JqRWxlbTsKKworLyoKKyAqIFJlZHVjZSBzb21lIHVubmVjZXNzYXJ5IHN0cmluZ3Mg ZnJvbSB0aGUgb3V0cHV0IGpzb24gd2hlbiB2ZXJib3NlCisgKiBhbmQgInByZXNlbnQiIG1lbWJl ciBpcyBmYWxzZS4gVGhpcyBtZWFucyB0aGVzZSBzdHJpbmdzIHdvbid0IGJlIG1lcmdlZCBpbnRv CisgKiB0aGUgbGFzdCBEREwgY29tbWFuZC4KKyAqLworYm9vbAkJdmVyYm9zZSA9IHRydWU7CisK K3N0YXRpYyB2b2lkIGFwcGVuZF9hcnJheV9vYmplY3QoT2JqVHJlZSAqdHJlZSwgY2hhciAqc3Vi X2ZtdCwgTGlzdCAqYXJyYXkpOworc3RhdGljIHZvaWQgYXBwZW5kX2Jvb2xfb2JqZWN0KE9ialRy ZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQsIGJvb2wgdmFsdWUpOworc3RhdGljIHZvaWQgYXBwZW5k X251bGxfb2JqZWN0KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQpOworc3RhdGljIHZvaWQg YXBwZW5kX29iamVjdF9vYmplY3QoT2JqVHJlZSAqdHJlZSwgY2hhciAqc3ViX2ZtdCwgT2JqVHJl ZSAqdmFsdWUpOworc3RhdGljIGNoYXIgKmFwcGVuZF9vYmplY3RfdG9fZm9ybWF0X3N0cmluZyhP YmpUcmVlICp0cmVlLCBjaGFyICpzdWJfZm10KTsKK3N0YXRpYyB2b2lkIGFwcGVuZF9wcmVtYWRl X29iamVjdChPYmpUcmVlICp0cmVlLCBPYmpFbGVtICplbGVtKTsKK3N0YXRpYyB2b2lkIGFwcGVu ZF9zdHJpbmdfb2JqZWN0KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQsIGNoYXIgKm5hbWUs CisJCQkJCQkJCSBjaGFyICp2YWx1ZSk7CitzdGF0aWMgdm9pZCBmb3JtYXRfdHlwZV9kZXRhaWxl ZChPaWQgdHlwZV9vaWQsIGludDMyIHR5cGVtb2QsCisJCQkJCQkJCSBPaWQgKm5zcGlkLCBjaGFy ICoqdHlwbmFtZSwgY2hhciAqKnR5cGVtb2RzdHIsCisJCQkJCQkJCSBib29sICp0eXBhcnJheSk7 CitzdGF0aWMgT2JqRWxlbSAqbmV3X29iamVjdChPYmpUeXBlIHR5cGUsIGNoYXIgKm5hbWUpOwor c3RhdGljIE9ialRyZWUgKm5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChPaWQgY2xhc3NJZCwg T2lkIG9iamVjdElkKTsKK3N0YXRpYyBPYmpFbGVtICpuZXdfb2JqZWN0X29iamVjdChPYmpUcmVl ICp2YWx1ZSk7CitzdGF0aWMgT2JqVHJlZSAqbmV3X29ianRyZWVfVkEoY2hhciAqZm10LCBpbnQg bnVtb2JqcywuLi4pOworc3RhdGljIEpzb25iVmFsdWUgKm9ianRyZWVfdG9fanNvbmJfcmVjKE9i alRyZWUgKnRyZWUsIEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUpOworc3RhdGljIGNoYXIgKlJlbGF0 aW9uR2V0Q29sdW1uRGVmYXVsdChSZWxhdGlvbiByZWwsIEF0dHJOdW1iZXIgYXR0bm8sCisJCQkJ CQkJCQkgIExpc3QgKmRwY29udGV4dCwgTGlzdCAqKmV4cHJzKTsKKworc3RhdGljIE9ialRyZWUg KmRlcGFyc2VfQ29sdW1uRGVmKFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICpkcGNvbnRleHQsIGJv b2wgY29tcG9zaXRlLAorCQkJCQkJCQkgIENvbHVtbkRlZiAqY29sZGVmLCBib29sIGlzX2FsdGVy LCBMaXN0ICoqZXhwcnMpOworc3RhdGljIE9ialRyZWUgKmRlcGFyc2VfQ29sdW1uSWRlbnRpdHko T2lkIHNlcXJlbGlkLCBjaGFyIGlkZW50aXR5LCBib29sIGFsdGVyX3RhYmxlKTsKK3N0YXRpYyBP YmpUcmVlICpkZXBhcnNlX0NvbHVtblNldE9wdGlvbnMoQWx0ZXJUYWJsZUNtZCAqc3ViY21kKTsK Kworc3RhdGljIE9ialRyZWUgKmRlcGFyc2VfRGVmRWxlbShEZWZFbGVtICplbGVtLCBib29sIGlz X3Jlc2V0KTsKK3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX09uQ29tbWl0Q2xhdXNlKE9uQ29tbWl0 QWN0aW9uIG9wdGlvbik7CitzdGF0aWMgT2JqVHJlZSAqZGVwYXJzZV9SZWxTZXRPcHRpb25zKEFs dGVyVGFibGVDbWQgKnN1YmNtZCk7CisKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9T ZXFfQ2FjaGUoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKTsKK3N0 YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFfQ3ljbGUoRm9ybV9wZ19zZXF1ZW5jZSBz ZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJz ZV9TZXFfSW5jcmVtZW50QnkoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3Rh YmxlKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFfTWludmFsdWUoRm9ybV9w Z19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKTsKK3N0YXRpYyBpbmxpbmUgT2Jq RWxlbSAqZGVwYXJzZV9TZXFfTWF4dmFsdWUoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29s IGFsdGVyX3RhYmxlKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFfUmVzdGFy dChpbnQ2NCBsYXN0X3ZhbHVlKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFf U3RhcnR3aXRoKEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSk7Citz dGF0aWMgaW5saW5lIE9iakVsZW0gKmRlcGFyc2VfU2VxX0FzKEZvcm1fcGdfc2VxdWVuY2Ugc2Vx ZGF0YSk7CitzdGF0aWMgaW5saW5lIE9iakVsZW0gKmRlcGFyc2VfVHlwZV9TdG9yYWdlKEZvcm1f cGdfdHlwZSB0eXBGb3JtKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9UeXBlX1Jl Y2VpdmUoRm9ybV9wZ190eXBlIHR5cEZvcm0pOworc3RhdGljIGlubGluZSBPYmpFbGVtICpkZXBh cnNlX1R5cGVfU2VuZChGb3JtX3BnX3R5cGUgdHlwRm9ybSk7CitzdGF0aWMgaW5saW5lIE9iakVs ZW0gKmRlcGFyc2VfVHlwZV9UeXBtb2RfSW4oRm9ybV9wZ190eXBlIHR5cEZvcm0pOworc3RhdGlj IGlubGluZSBPYmpFbGVtICpkZXBhcnNlX1R5cGVfVHlwbW9kX091dChGb3JtX3BnX3R5cGUgdHlw Rm9ybSk7CitzdGF0aWMgaW5saW5lIE9iakVsZW0gKmRlcGFyc2VfVHlwZV9BbmFseXplKEZvcm1f cGdfdHlwZSB0eXBGb3JtKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9UeXBlX1N1 YnNjcmlwdChGb3JtX3BnX3R5cGUgdHlwRm9ybSk7CisKK3N0YXRpYyBMaXN0ICpkZXBhcnNlX0lu aFJlbGF0aW9ucyhPaWQgb2JqZWN0SWQpOworc3RhdGljIExpc3QgKmRlcGFyc2VfVGFibGVFbGVt ZW50cyhSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqdGFibGVFbGVtZW50cywgTGlzdCAqZHBjb250 ZXh0LAorCQkJCQkJCQkgICBib29sIHR5cGVkLCBib29sIGNvbXBvc2l0ZSk7CisKKy8qCisgKiBB cHBlbmQgcHJlc2VudCBhcyBmYWxzZSB0byBhIHRyZWUuCisgKi8KK3N0YXRpYyB2b2lkCithcHBl bmRfbm90X3ByZXNlbnQoT2JqVHJlZSAqdHJlZSkKK3sKKwlhcHBlbmRfYm9vbF9vYmplY3QodHJl ZSwgInByZXNlbnQiLCBmYWxzZSk7Cit9CisKKy8qCisgKiBBcHBlbmQgYW4gYXJyYXkgcGFyYW1l dGVyIHRvIGEgdHJlZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGVuZF9hcnJheV9vYmplY3QoT2Jq VHJlZSAqdHJlZSwgY2hhciAqc3ViX2ZtdCwgTGlzdCAqYXJyYXkpCit7CisJT2JqRWxlbSAgICAq cGFyYW07CisJY2hhcgkgICAqb2JqZWN0X25hbWU7CisKKwlBc3NlcnQoc3ViX2ZtdCk7CisKKwlp ZiAobGlzdF9sZW5ndGgoYXJyYXkpID09IDApCisJCXJldHVybjsKKworCWlmICghdmVyYm9zZSkK Kwl7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8qIFJlbW92ZSBlbGVtZW50cyB3aGVyZSBwcmVz ZW50IGZsYWcgaXMgZmFsc2UgKi8KKwkJZm9yZWFjaChsYywgYXJyYXkpCisJCXsKKwkJCU9iakVs ZW0gICAgKmVsZW0gPSAoT2JqRWxlbSAqKSBsZmlyc3QobGMpOworCisJCQlBc3NlcnQoZWxlbS0+ b2JqdHlwZSA9PSBPYmpUeXBlT2JqZWN0IHx8CisJCQkJICAgZWxlbS0+b2JqdHlwZSA9PSBPYmpU eXBlU3RyaW5nKTsKKworCQkJaWYgKCFlbGVtLT52YWx1ZS5vYmplY3QtPnByZXNlbnQgJiYKKwkJ CQllbGVtLT5vYmp0eXBlID09IE9ialR5cGVPYmplY3QpCisJCQkJYXJyYXkgPSBmb3JlYWNoX2Rl bGV0ZV9jdXJyZW50KGFycmF5LCBsYyk7CisJCX0KKworCX0KKworCS8qIENoZWNrIGZvciBlbXB0 eSBsaXN0IGFmdGVyIHJlbW92aW5nIGVsZW1lbnRzICovCisJaWYgKGxpc3RfbGVuZ3RoKGFycmF5 KSA9PSAwKQorCQlyZXR1cm47CisKKwlvYmplY3RfbmFtZSA9IGFwcGVuZF9vYmplY3RfdG9fZm9y bWF0X3N0cmluZyh0cmVlLCBzdWJfZm10KTsKKworCXBhcmFtID0gbmV3X29iamVjdChPYmpUeXBl QXJyYXksIG9iamVjdF9uYW1lKTsKKwlwYXJhbS0+dmFsdWUuYXJyYXkgPSBhcnJheTsKKwlhcHBl bmRfcHJlbWFkZV9vYmplY3QodHJlZSwgcGFyYW0pOworfQorCisvKgorICogQXBwZW5kIGEgYm9v bGVhbiBwYXJhbWV0ZXIgdG8gYSB0cmVlLgorICovCitzdGF0aWMgdm9pZAorYXBwZW5kX2Jvb2xf b2JqZWN0KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQsIGJvb2wgdmFsdWUpCit7CisJT2Jq RWxlbSAgICAqcGFyYW07CisJY2hhcgkgICAqb2JqZWN0X25hbWUgPSBzdWJfZm10OworCWJvb2wJ CWlzX3ByZXNlbnRfZmxhZyA9IGZhbHNlOworCisJQXNzZXJ0KHN1Yl9mbXQpOworCisJLyoKKwkg KiBDaGVjayBpZiB0aGUgZm9ybWF0IHN0cmluZyBpcyAncHJlc2VudCcgYW5kIGlmIHllcywgc3Rv cmUgdGhlIGJvb2xlYW4KKwkgKiB2YWx1ZQorCSAqLworCWlmIChzdHJjbXAoc3ViX2ZtdCwgInBy ZXNlbnQiKSA9PSAwKQorCXsKKwkJaXNfcHJlc2VudF9mbGFnID0gdHJ1ZTsKKwkJdHJlZS0+cHJl c2VudCA9IHZhbHVlOworCX0KKworCWlmICghaXNfcHJlc2VudF9mbGFnKQorCQlvYmplY3RfbmFt ZSA9IGFwcGVuZF9vYmplY3RfdG9fZm9ybWF0X3N0cmluZyh0cmVlLCBzdWJfZm10KTsKKworCXBh cmFtID0gbmV3X29iamVjdChPYmpUeXBlQm9vbCwgb2JqZWN0X25hbWUpOworCXBhcmFtLT52YWx1 ZS5ib29sZWFuID0gdmFsdWU7CisJYXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIHBhcmFtKTsK K30KKworLyoKKyAqIEFwcGVuZCB0aGUgaW5wdXQgZm9ybWF0IHN0cmluZyB0byB0aGUgT2JqVHJl ZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGVuZF9mb3JtYXRfc3RyaW5nKE9ialRyZWUgKnRyZWUs IGNoYXIgKnN1Yl9mbXQpCit7CisJaW50CQkJbGVuOworCWNoYXIJICAgKmZtdDsKKworCWlmICh0 cmVlLT5mbXRpbmZvID09IE5VTEwpCisJCXJldHVybjsKKworCWZtdCA9IHRyZWUtPmZtdGluZm8t PmRhdGE7CisJbGVuID0gdHJlZS0+Zm10aW5mby0+bGVuOworCisJLyogQWRkIGEgc2VwYXJhdG9y IGlmIG5lY2Vzc2FyeSAqLworCWlmIChsZW4gPiAwICYmIGZtdFtsZW4gLSAxXSAhPSAnICcpCisJ CWFwcGVuZFN0cmluZ0luZm9TcGFjZXModHJlZS0+Zm10aW5mbywgMSk7CisKKwlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKHRyZWUtPmZtdGluZm8sIHN1Yl9mbXQpOworfQorCisvKgorICogQXBwZW5k IGEgTlVMTCBvYmplY3QgdG8gYSB0cmVlLgorICovCitzdGF0aWMgdm9pZAorYXBwZW5kX251bGxf b2JqZWN0KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQpCit7CisJY2hhcgkgICAqb2JqZWN0 X25hbWU7CisKKwlBc3NlcnQoc3ViX2ZtdCk7CisKKwlpZiAoIXZlcmJvc2UpCisJCXJldHVybjsK KworCW9iamVjdF9uYW1lID0gYXBwZW5kX29iamVjdF90b19mb3JtYXRfc3RyaW5nKHRyZWUsIHN1 Yl9mbXQpOworCisJYXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIG5ld19vYmplY3QoT2JqVHlw ZU51bGwsIG9iamVjdF9uYW1lKSk7Cit9CisKKy8qCisgKiBBcHBlbmQgYW4gb2JqZWN0IHBhcmFt ZXRlciB0byBhIHRyZWUuCisgKi8KK3N0YXRpYyB2b2lkCithcHBlbmRfb2JqZWN0X29iamVjdChP YmpUcmVlICp0cmVlLCBjaGFyICpzdWJfZm10LCBPYmpUcmVlICp2YWx1ZSkKK3sKKwlPYmpFbGVt ICAgICpwYXJhbTsKKwljaGFyCSAgICpvYmplY3RfbmFtZTsKKworCUFzc2VydChzdWJfZm10KTsK KworCWlmICghdmVyYm9zZSAmJiAhdmFsdWUtPnByZXNlbnQpCisJCXJldHVybjsKKworCW9iamVj dF9uYW1lID0gYXBwZW5kX29iamVjdF90b19mb3JtYXRfc3RyaW5nKHRyZWUsIHN1Yl9mbXQpOwor CisJcGFyYW0gPSBuZXdfb2JqZWN0KE9ialR5cGVPYmplY3QsIG9iamVjdF9uYW1lKTsKKwlwYXJh bS0+dmFsdWUub2JqZWN0ID0gdmFsdWU7CisJYXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIHBh cmFtKTsKK30KKworLyoKKyAqIFJldHVybiB0aGUgb2JqZWN0IG5hbWUgd2hpY2ggaXMgZXh0cmFj dGVkIGZyb20gdGhlIGlucHV0ICIqJXtuYW1lWzouXX0qIgorICogc3R5bGUgc3RyaW5nLiBBbmQg YXBwZW5kIHRoZSBpbnB1dCBmb3JtYXQgc3RyaW5nIHRvIHRoZSBPYmpUcmVlLgorICovCitzdGF0 aWMgY2hhciAqCithcHBlbmRfb2JqZWN0X3RvX2Zvcm1hdF9zdHJpbmcoT2JqVHJlZSAqdHJlZSwg Y2hhciAqc3ViX2ZtdCkKK3sKKwlTdHJpbmdJbmZvRGF0YSBvYmplY3RfbmFtZTsKKwljb25zdCBj aGFyICplbmRfcHRyLCAqc3RhcnRfcHRyOworCWludCAgICAgICAgIGxlbmd0aDsKKwljaGFyICAg ICAgICAqdG1wX3N0cjsKKworCWlmIChzdWJfZm10ID09IE5VTEwgfHwgdHJlZS0+Zm10aW5mbyA9 PSBOVUxMKQorCQlyZXR1cm4gc3ViX2ZtdDsKKworCWluaXRTdHJpbmdJbmZvKCZvYmplY3RfbmFt ZSk7CisKKwlzdGFydF9wdHIgPSBzdHJjaHIoc3ViX2ZtdCwgJ3snKTsKKwllbmRfcHRyID0gc3Ry Y2hyKHN1Yl9mbXQsICc6Jyk7CisJaWYgKGVuZF9wdHIgPT0gTlVMTCkKKwkJZW5kX3B0ciA9IHN0 cmNocihzdWJfZm10LCAnfScpOworCisJaWYgKHN0YXJ0X3B0ciAhPSBOVUxMICYmIGVuZF9wdHIg IT0gTlVMTCkKKwl7CisJCWxlbmd0aCA9IGVuZF9wdHIgLSBzdGFydF9wdHIgLSAxOworCQl0bXBf c3RyID0gKGNoYXIgKikgcGFsbG9jKGxlbmd0aCArIDEpOworCQlzdHJuY3B5KHRtcF9zdHIsIHN0 YXJ0X3B0ciArIDEsIGxlbmd0aCk7CisJCXRtcF9zdHJbbGVuZ3RoXSA9ICdcMCc7CisJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJm9iamVjdF9uYW1lLCB0bXBfc3RyKTsKKwkJcGZyZWUodG1wX3N0 cik7CisJfQorCisJaWYgKG9iamVjdF9uYW1lLmxlbiA9PSAwKQorCQllbG9nKEVSUk9SLCAib2Jq ZWN0IG5hbWUgbm90IGZvdW5kIik7CisKKwlhcHBlbmRfZm9ybWF0X3N0cmluZyh0cmVlLCBzdWJf Zm10KTsKKworCXJldHVybiBvYmplY3RfbmFtZS5kYXRhOworCit9CisKKy8qCisgKiBBcHBlbmQg YSBwcmVhbGxvY2F0ZWQgcGFyYW1ldGVyIHRvIGEgdHJlZS4KKyAqLworc3RhdGljIGlubGluZSB2 b2lkCithcHBlbmRfcHJlbWFkZV9vYmplY3QoT2JqVHJlZSAqdHJlZSwgT2JqRWxlbSAqZWxlbSkK K3sKKwlzbGlzdF9wdXNoX2hlYWQoJnRyZWUtPnBhcmFtcywgJmVsZW0tPm5vZGUpOworCXRyZWUt Pm51bVBhcmFtcysrOworfQorCisvKgorICogQXBwZW5kIGEgc3RyaW5nIHBhcmFtZXRlciB0byBh IHRyZWUuCisgKi8KK3N0YXRpYyB2b2lkCithcHBlbmRfc3RyaW5nX29iamVjdChPYmpUcmVlICp0 cmVlLCBjaGFyICpzdWJfZm10LCBjaGFyICogb2JqZWN0X25hbWUsCisJCQkJCSBjaGFyICp2YWx1 ZSkKK3sKKwlPYmpFbGVtICAgICpwYXJhbTsKKworCUFzc2VydChzdWJfZm10KTsKKworCWlmICgh dmVyYm9zZSAmJiAodmFsdWUgPT0gTlVMTCB8fCB2YWx1ZVswXSA9PSAnXDAnKSkKKwkJcmV0dXJu OworCisJYXBwZW5kX2Zvcm1hdF9zdHJpbmcodHJlZSwgc3ViX2ZtdCk7CisJcGFyYW0gPSBuZXdf b2JqZWN0KE9ialR5cGVTdHJpbmcsIG9iamVjdF9uYW1lKTsKKwlwYXJhbS0+dmFsdWUuc3RyaW5n ID0gdmFsdWU7CisJYXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIHBhcmFtKTsKK30KKworLyoK KyAqIFNpbWlsYXIgdG8gZm9ybWF0X3R5cGVfZXh0ZW5kZWQsIGV4Y2VwdCB3ZSByZXR1cm4gZWFj aCBiaXQgb2YgaW5mb3JtYXRpb24KKyAqIHNlcGFyYXRlbHk6CisgKgorICogLSBuc3BpZCBpcyB0 aGUgc2NoZW1hIE9JRC4gIEZvciBjZXJ0YWluIFNRTC1zdGFuZGFyZCB0eXBlcyB3aGljaCBoYXZl IHdlaXJkCisgKiAgIHR5cG1vZCBydWxlcywgd2UgcmV0dXJuIEludmFsaWRPaWQ7IHRoZSBjYWxs ZXIgaXMgZXhwZWN0ZWQgdG8gbm90IHNjaGVtYS0KKyAqICAgcXVhbGlmeSB0aGUgbmFtZSBub3Ig YWRkIHF1b3RlcyB0byB0aGUgdHlwZSBuYW1lIGluIHRoaXMgY2FzZS4KKyAqCisgKiAtIHR5cG5h bWUgaXMgc2V0IHRvIHRoZSB0eXBlIG5hbWUsIHdpdGhvdXQgcXVvdGVzCisgKgorICogLSB0eXBl bW9kc3RyIGlzIHNldCB0byB0aGUgdHlwZW1vZCwgaWYgYW55LCBhcyBhIHN0cmluZyB3aXRoIHBh cmVudGhlc2VzCisgKgorICogLSB0eXBhcnJheSBpbmRpY2F0ZXMgd2hldGhlciBbXXMgbXVzdCBi ZSBhZGRlZAorICoKKyAqIFdlIGRvbid0IHRyeSB0byBkZWNvZGUgdHlwZSBuYW1lcyB0byB0aGVp ciBzdGFuZGFyZC1tYW5kYXRlZCBuYW1lcywgZXhjZXB0CisgKiBpbiB0aGUgY2FzZXMgb2YgdHlw ZXMgd2l0aCB1bnVzdWFsIHR5cG1vZCBydWxlcy4KKyAqLworc3RhdGljIHZvaWQKK2Zvcm1hdF90 eXBlX2RldGFpbGVkKE9pZCB0eXBlX29pZCwgaW50MzIgdHlwZW1vZCwKKwkJCQkJIE9pZCAqbnNw aWQsIGNoYXIgKip0eXBlbmFtZSwgY2hhciAqKnR5cGVtb2RzdHIsCisJCQkJCSBib29sICp0eXBl YXJyYXkpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCUZvcm1fcGdfdHlwZSB0eXBlZm9ybTsKKwlP aWQJCQlhcnJheV9iYXNlX3R5cGU7CisKKwl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShUWVBFT0lE LCBPYmplY3RJZEdldERhdHVtKHR5cGVfb2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1 cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHR5cGUgd2l0aCBP SUQgJXUiLCB0eXBlX29pZCk7CisKKwl0eXBlZm9ybSA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVD VCh0dXBsZSk7CisKKwkvKgorCSAqIENoZWNrIGlmIGl0J3MgYSByZWd1bGFyICh2YXJpYWJsZSBs ZW5ndGgpIGFycmF5IHR5cGUuICBBcyBhYm92ZSwKKwkgKiBmaXhlZC1sZW5ndGggYXJyYXkgdHlw ZXMgc3VjaCBhcyAibmFtZSIgc2hvdWxkbid0IGdldCBkZWNvbnN0cnVjdGVkLgorCSAqLworCWFy cmF5X2Jhc2VfdHlwZSA9IHR5cGVmb3JtLT50eXBlbGVtOworCisJKnR5cGVhcnJheSA9IChJc1Ry dWVBcnJheVR5cGUodHlwZWZvcm0pICYmIHR5cGVmb3JtLT50eXBzdG9yYWdlICE9IFRZUFNUT1JB R0VfUExBSU4pOworCisJaWYgKCp0eXBlYXJyYXkpCisJeworCQkvKiBTd2l0Y2ggb3VyIGF0dGVu dGlvbiB0byB0aGUgYXJyYXkgZWxlbWVudCB0eXBlICovCisJCVJlbGVhc2VTeXNDYWNoZSh0dXBs ZSk7CisJCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsIE9iamVjdElkR2V0RGF0dW0o YXJyYXlfYmFzZV90eXBlKSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCQll bG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdHlwZSB3aXRoIE9JRCAldSIsIHR5 cGVfb2lkKTsKKworCQl0eXBlZm9ybSA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVDVCh0dXBsZSk7 CisJCXR5cGVfb2lkID0gYXJyYXlfYmFzZV90eXBlOworCX0KKworCS8qCisJICogU3BlY2lhbC1j YXNlIGNyb2NrIGZvciB0eXBlcyB3aXRoIHN0cmFuZ2UgdHlwbW9kIHJ1bGVzIHdoZXJlIHdlIHB1 dAorCSAqIHR5cGVtb2QgYXQgdGhlIG1pZGRsZSBvZiBuYW1lIChlLmcuIFRJTUUoNikgd2l0aCB0 aW1lIHpvbmUpLiBXZSBjYW5ub3QKKwkgKiBzY2hlbWEtcXVhbGlmeSBub3IgYWRkIHF1b3RlcyB0 byB0aGUgdHlwZSBuYW1lIGluIHRoZXNlIGNhc2VzLgorCSAqLworCSpuc3BpZCA9IEludmFsaWRP aWQ7CisKKwlzd2l0Y2ggKHR5cGVfb2lkKQorCXsKKwkJY2FzZSBJTlRFUlZBTE9JRDoKKwkJCSp0 eXBlbmFtZSA9IHBzdHJkdXAoIklOVEVSVkFMIik7CisJCQlicmVhazsKKwkJY2FzZSBUSU1FU1RB TVBUWk9JRDoKKwkJCWlmICh0eXBlbW9kIDwgMCkKKwkJCQkqdHlwZW5hbWUgPSBwc3RyZHVwKCJU SU1FU1RBTVAgV0lUSCBUSU1FIFpPTkUiKTsKKwkJCWVsc2UKKwkJCQkvKiBvdGhlcndpc2UsIFdJ VEggVFogaXMgYWRkZWQgYnkgdHlwbW9kLiAqLworCQkJCSp0eXBlbmFtZSA9IHBzdHJkdXAoIlRJ TUVTVEFNUCIpOworCQkJYnJlYWs7CisJCWNhc2UgVElNRVNUQU1QT0lEOgorCQkJKnR5cGVuYW1l ID0gcHN0cmR1cCgiVElNRVNUQU1QIik7CisJCQlicmVhazsKKwkJY2FzZSBUSU1FVFpPSUQ6CisJ CQlpZiAodHlwZW1vZCA8IDApCisJCQkJKnR5cGVuYW1lID0gcHN0cmR1cCgiVElNRSBXSVRIIFRJ TUUgWk9ORSIpOworCQkJZWxzZQorCQkJCS8qIG90aGVyd2lzZSwgV0lUSCBUWiBpcyBhZGRlZCBi eSB0eXBtb2QuICovCisJCQkJKnR5cGVuYW1lID0gcHN0cmR1cCgiVElNRSIpOworCQkJYnJlYWs7 CisJCWNhc2UgVElNRU9JRDoKKwkJCSp0eXBlbmFtZSA9IHBzdHJkdXAoIlRJTUUiKTsKKwkJCWJy ZWFrOworCQlkZWZhdWx0OgorCisJCQkvKgorCQkJICogTm8gYWRkaXRpb25hbCBwcm9jZXNzaW5n IGlzIHJlcXVpcmVkIGZvciBvdGhlciB0eXBlcywgc28gZ2V0CisJCQkgKiB0aGUgdHlwZSBuYW1l IGFuZCBzY2hlbWEgZGlyZWN0bHkgZnJvbSB0aGUgY2F0YWxvZy4KKwkJCSAqLworCQkJKm5zcGlk ID0gdHlwZWZvcm0tPnR5cG5hbWVzcGFjZTsKKwkJCSp0eXBlbmFtZSA9IHBzdHJkdXAoTmFtZVN0 cih0eXBlZm9ybS0+dHlwbmFtZSkpOworCX0KKworCWlmICh0eXBlbW9kID49IDApCisJCSp0eXBl bW9kc3RyID0gcHJpbnRUeXBtb2QoIiIsIHR5cGVtb2QsIHR5cGVmb3JtLT50eXBtb2RvdXQpOwor CWVsc2UKKwkJKnR5cGVtb2RzdHIgPSBwc3RyZHVwKCIiKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0 dXBsZSk7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0 aGUgZ2l2ZW4gUkVMUEVSU0lTVEVOQ0UgdmFsdWUuCisgKi8KK3N0YXRpYyBjaGFyICoKK2dldF9w ZXJzaXN0ZW5jZV9zdHIoY2hhciBwZXJzaXN0ZW5jZSkKK3sKKwlzd2l0Y2ggKHBlcnNpc3RlbmNl KQorCXsKKwkJY2FzZSBSRUxQRVJTSVNURU5DRV9URU1QOgorCQkJcmV0dXJuICJURU1QT1JBUlki OworCQljYXNlIFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VEOgorCQkJcmV0dXJuICJVTkxPR0dFRCI7 CisJCWNhc2UgUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UOgorCQkJcmV0dXJuICIiOworCQlkZWZh dWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgcGVyc2lzdGVuY2UgbWFya2luZyAlYyIs IHBlcnNpc3RlbmNlKTsKKwkJCXJldHVybiAiIjsJCQkvKiBtYWtlIGNvbXBpbGVyIGhhcHB5ICov CisJfQorfQorCisvKgorICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhl IGdpdmVuIHN0b3JhZ2V0eXBlIHZhbHVlLgorICovCitzdGF0aWMgaW5saW5lIGNoYXIgKgorZ2V0 X3R5cGVfc3RvcmFnZShjaGFyIHN0b3JhZ2V0eXBlKQoreworCXN3aXRjaCAoc3RvcmFnZXR5cGUp CisJeworCQljYXNlICdwJzoKKwkJCXJldHVybiAicGxhaW4iOworCQljYXNlICdlJzoKKwkJCXJl dHVybiAiZXh0ZXJuYWwiOworCQljYXNlICd4JzoKKwkJCXJldHVybiAiZXh0ZW5kZWQiOworCQlj YXNlICdtJzoKKwkJCXJldHVybiAibWFpbiI7CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAi aW52YWxpZCBzdG9yYWdlIHNwZWNpZmllciAlYyIsIHN0b3JhZ2V0eXBlKTsKKwl9Cit9CisKKy8q CisgKiBBbGxvY2F0ZSBhIG5ldyBwYXJhbWV0ZXIuCisgKi8KK3N0YXRpYyBPYmpFbGVtICoKK25l d19vYmplY3QoT2JqVHlwZSB0eXBlLCBjaGFyICpuYW1lKQoreworCU9iakVsZW0gICAgKnBhcmFt OworCisJcGFyYW0gPSBwYWxsb2MwKHNpemVvZihPYmpFbGVtKSk7CisJcGFyYW0tPm5hbWUgPSBu YW1lOworCXBhcmFtLT5vYmp0eXBlID0gdHlwZTsKKworCXJldHVybiBwYXJhbTsKK30KKworLyoK KyAqIEFsbG9jYXRlIGEgbmV3IG9iamVjdCBwYXJhbWV0ZXIuCisgKi8KK3N0YXRpYyBPYmpFbGVt ICoKK25ld19vYmplY3Rfb2JqZWN0KE9ialRyZWUgKnZhbHVlKQoreworCU9iakVsZW0gICAgKnBh cmFtOworCisJcGFyYW0gPSBuZXdfb2JqZWN0KE9ialR5cGVPYmplY3QsIE5VTEwpOworCXBhcmFt LT52YWx1ZS5vYmplY3QgPSB2YWx1ZTsKKworCXJldHVybiBwYXJhbTsKK30KKworLyoKKyAqIEFs bG9jYXRlIGEgbmV3IG9iamVjdCB0cmVlIHRvIHN0b3JlIHBhcmFtZXRlciB2YWx1ZXMuCisgKi8K K3N0YXRpYyBPYmpUcmVlICoKK25ld19vYmp0cmVlKGNoYXIgKmZtdCkKK3sKKwlPYmpUcmVlICAg ICpwYXJhbXM7CisKKwlwYXJhbXMgPSBwYWxsb2MwKHNpemVvZihPYmpUcmVlKSk7CisJcGFyYW1z LT5wcmVzZW50ID0gdHJ1ZTsKKwlzbGlzdF9pbml0KCZwYXJhbXMtPnBhcmFtcyk7CisKKwlpZiAo Zm10KQorCXsKKwkJcGFyYW1zLT5mbXRpbmZvID0gbWFrZVN0cmluZ0luZm8oKTsKKwkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZyhwYXJhbXMtPmZtdGluZm8sIGZtdCk7CisJfQorCisJcmV0dXJuIHBh cmFtczsKK30KKworLyoKKyAqIEEgaGVscGVyIHJvdXRpbmUgdG8gc2V0IHVwICV7fUQgYW5kICV7 fU8gZWxlbWVudHMuCisgKgorICogRWxlbWVudHMgInNjaGVtYV9uYW1lIiBhbmQgIm9ial9uYW1l IiBhcmUgc2V0LiAgSWYgdGhlIG5hbWVzcGFjZSBPSUQKKyAqIGNvcnJlc3BvbmRzIHRvIGEgdGVt cCBzY2hlbWEsIHRoYXQncyBzZXQgdG8gInBnX3RlbXAiLgorICoKKyAqIFRoZSBkaWZmZXJlbmNl IGJldHdlZW4gdGhvc2UgdHdvIGVsZW1lbnQgdHlwZXMgaXMgd2hldGhlciB0aGUgb2JqX25hbWUg d2lsbAorICogYmUgcXVvdGVkIGFzIGFuIGlkZW50aWZpZXIgb3Igbm90LCB3aGljaCBpcyBub3Qg c29tZXRoaW5nIHRoYXQgdGhpcyByb3V0aW5lCisgKiBjb25jZXJucyBpdHNlbGYgd2l0aDsgdGhh dCB3aWxsIGJlIHVwIHRvIHRoZSBleHBhbmQgZnVuY3Rpb24uCisgKi8KK3N0YXRpYyBPYmpUcmVl ICoKK25ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShPaWQgbnNwaWQsIGNoYXIgKm5hbWUpCit7CisJ T2JqVHJlZSAgICAqcXVhbGlmaWVkOworCWNoYXIJICAgKm5hbWVzcGFjZTsKKworCWlmIChpc0Fu eVRlbXBOYW1lc3BhY2UobnNwaWQpKQorCQluYW1lc3BhY2UgPSBwc3RyZHVwKCJwZ190ZW1wIik7 CisJZWxzZQorCQluYW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25hbWUobnNwaWQpOworCisJcXVh bGlmaWVkID0gbmV3X29ianRyZWVfVkEoTlVMTCwgMiwKKwkJCQkJCQkgICAic2NoZW1hbmFtZSIs IE9ialR5cGVTdHJpbmcsIG5hbWVzcGFjZSwKKwkJCQkJCQkgICAib2JqbmFtZSIsIE9ialR5cGVT dHJpbmcsIHBzdHJkdXAobmFtZSkpOworCisJcmV0dXJuIHF1YWxpZmllZDsKK30KKworLyoKKyAq IEEgaGVscGVyIHJvdXRpbmUgdG8gc2V0IHVwICV7fUQgYW5kICV7fU8gZWxlbWVudHMsIHdpdGgg dGhlIG9iamVjdCBzcGVjaWZpZWQKKyAqIGJ5IGNsYXNzSWQvb2JqSWQuCisgKi8KK3N0YXRpYyBP YmpUcmVlICoKK25ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChPaWQgY2xhc3NJZCwgT2lkIG9i amVjdElkKQoreworCU9ialRyZWUgICAgKnF1YWxpZmllZDsKKwlSZWxhdGlvbgljYXRhbG9nOwor CUhlYXBUdXBsZQljYXRvYmo7CisJRGF0dW0JCW9ial9uc3A7CisJRGF0dW0JCW9ial9uYW1lOwor CUF0dHJOdW1iZXIJQW51bV9uYW1lOworCUF0dHJOdW1iZXIJQW51bV9uYW1lc3BhY2U7CisJQXR0 ck51bWJlcglBbnVtX29pZCA9IGdldF9vYmplY3RfYXR0bnVtX29pZChjbGFzc0lkKTsKKwlib29s CQlpc251bGw7CisKKwljYXRhbG9nID0gdGFibGVfb3BlbihjbGFzc0lkLCBBY2Nlc3NTaGFyZUxv Y2spOworCisJY2F0b2JqID0gZ2V0X2NhdGFsb2dfb2JqZWN0X2J5X29pZChjYXRhbG9nLCBBbnVt X29pZCwgb2JqZWN0SWQpOworCWlmICghY2F0b2JqKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3Igb2JqZWN0IHdpdGggT0lEICV1IG9mIGNhdGFsb2cgXCIlc1wiIiwKKwkJ CSBvYmplY3RJZCwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoY2F0YWxvZykpOworCUFudW1fbmFt ZSA9IGdldF9vYmplY3RfYXR0bnVtX25hbWUoY2xhc3NJZCk7CisJQW51bV9uYW1lc3BhY2UgPSBn ZXRfb2JqZWN0X2F0dG51bV9uYW1lc3BhY2UoY2xhc3NJZCk7CisKKwlvYmpfbnNwID0gaGVhcF9n ZXRhdHRyKGNhdG9iaiwgQW51bV9uYW1lc3BhY2UsIFJlbGF0aW9uR2V0RGVzY3IoY2F0YWxvZyks CisJCQkJCQkgICZpc251bGwpOworCWlmIChpc251bGwpCisJCWVsb2coRVJST1IsICJudWxsIG5h bWVzcGFjZSBmb3Igb2JqZWN0ICV1Iiwgb2JqZWN0SWQpOworCisJb2JqX25hbWUgPSBoZWFwX2dl dGF0dHIoY2F0b2JqLCBBbnVtX25hbWUsIFJlbGF0aW9uR2V0RGVzY3IoY2F0YWxvZyksCisJCQkJ CQkgICAmaXNudWxsKTsKKwlpZiAoaXNudWxsKQorCQllbG9nKEVSUk9SLCAibnVsbCBhdHRyaWJ1 dGUgbmFtZSBmb3Igb2JqZWN0ICV1Iiwgb2JqZWN0SWQpOworCisJcXVhbGlmaWVkID0gbmV3X29i anRyZWVfZm9yX3F1YWxuYW1lKERhdHVtR2V0T2JqZWN0SWQob2JqX25zcCksCisJCQkJCQkJCQkJ IE5hbWVTdHIoKkRhdHVtR2V0TmFtZShvYmpfbmFtZSkpKTsKKwl0YWJsZV9jbG9zZShjYXRhbG9n LCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHF1YWxpZmllZDsKK30KKworLyoKKyAqIEEg aGVscGVyIHJvdXRpbmUgdG8gc2V0dXAgJXt9VCBlbGVtZW50cy4KKyAqLworc3RhdGljIE9ialRy ZWUgKgorbmV3X29ianRyZWVfZm9yX3R5cGUoT2lkIHR5cGVJZCwgaW50MzIgdHlwbW9kKQorewor CU9pZAkJCXR5cG5zcGlkOworCWNoYXIJICAgKnR5cGVfbnNwOworCWNoYXIJICAgKnR5cGVfbmFt ZSA9IE5VTEw7CisJY2hhcgkgICAqdHlwbW9kc3RyOworCWJvb2wJCXR5cGVfYXJyYXk7CisKKwlm b3JtYXRfdHlwZV9kZXRhaWxlZCh0eXBlSWQsIHR5cG1vZCwKKwkJCQkJCSAmdHlwbnNwaWQsICZ0 eXBlX25hbWUsICZ0eXBtb2RzdHIsICZ0eXBlX2FycmF5KTsKKworCWlmIChPaWRJc1ZhbGlkKHR5 cG5zcGlkKSkKKwkJdHlwZV9uc3AgPSBnZXRfbmFtZXNwYWNlX25hbWVfb3JfdGVtcCh0eXBuc3Bp ZCk7CisJZWxzZQorCQl0eXBlX25zcCA9IHBzdHJkdXAoIiIpOworCisJcmV0dXJuIG5ld19vYmp0 cmVlX1ZBKE5VTEwsIDQsCisJCQkJCQkgICJzY2hlbWFuYW1lIiwgT2JqVHlwZVN0cmluZywgdHlw ZV9uc3AsCisJCQkJCQkgICJ0eXBlbmFtZSIsIE9ialR5cGVTdHJpbmcsIHR5cGVfbmFtZSwKKwkJ CQkJCSAgInR5cG1vZCIsIE9ialR5cGVTdHJpbmcsIHR5cG1vZHN0ciwKKwkJCQkJCSAgInR5cGFy cmF5IiwgT2JqVHlwZUJvb2wsIHR5cGVfYXJyYXkpOworfQorCisvKgorICogQWxsb2NhdGUgYSBu ZXcgb2JqZWN0IHRyZWUgdG8gc3RvcmUgcGFyYW1ldGVyIHZhbHVlcyAtLSB2YXJhcmdzIHZlcnNp b24uCisgKgorICogVGhlICJmbXQiIGFyZ3VtZW50IGlzIHVzZWQgdG8gYXBwZW5kIGFzIGEgImZt dCIgZWxlbWVudCBpbiB0aGUgb3V0cHV0IGJsb2IuCisgKiBudW1vYmpzIGluZGljYXRlcyB0aGUg bnVtYmVyIG9mIGV4dHJhIGVsZW1lbnRzIHRvIGFwcGVuZDsgZm9yIGVhY2ggb25lLCBhCisgKiBu YW1lIChzdHJpbmcpLCB0eXBlIChmcm9tIHRoZSBPYmpUeXBlIGVudW0pIGFuZCB2YWx1ZSBtdXN0 IGJlIHN1cHBsaWVkLiAgVGhlCisgKiB2YWx1ZSBtdXN0IG1hdGNoIHRoZSB0eXBlIGdpdmVuOyBm b3IgaW5zdGFuY2UsIE9ialR5cGVJbnRlZ2VyIHJlcXVpcmVzIGFuCisgKiBpbnQ2NCwgT2JqVHlw ZVN0cmluZyByZXF1aXJlcyBhIGNoYXIgKiwgT2JqVHlwZUFycmF5IHJlcXVpcmVzIGEgbGlzdCAo b2YKKyAqIE9iakVsZW0pLCBPYmpUeXBlT2JqZWN0IHJlcXVpcmVzIGFuIE9ialRyZWUsIGFuZCBz byBvbi4gIEVhY2ggZWxlbWVudCB0eXBlICoKKyAqIG11c3QgbWF0Y2ggdGhlIGNvbnZlcnNpb24g c3BlY2lmaWVyIGdpdmVuIGluIHRoZSBmb3JtYXQgc3RyaW5nLCBhcyBkZXNjcmliZWQKKyAqIGlu IGRkbF9kZXBhcnNlX2V4cGFuZF9jb21tYW5kLCBxLnYuCisgKgorICogTm90ZSB3ZSBkb24ndCBo YXZlIHRoZSBsdXh1cnkgb2Ygc3ByaW50Zi1saWtlIGNvbXBpbGVyIHdhcm5pbmdzIGZvcgorICog bWFsZm9ybWVkIGFyZ3VtZW50IGxpc3RzLgorICovCitzdGF0aWMgT2JqVHJlZSAqCituZXdfb2Jq dHJlZV9WQShjaGFyICpmbXQsIGludCBudW1vYmpzLC4uLikKK3sKKwlPYmpUcmVlICAgICp0cmVl OworCXZhX2xpc3QJCWFyZ3M7CisJaW50CQkJaTsKKworCS8qIFNldCB1cCB0aGUgdG9wbGV2ZWwg b2JqZWN0IGFuZCBpdHMgImZtdCIgKi8KKwl0cmVlID0gbmV3X29ianRyZWUoZm10KTsKKworCS8q IEFuZCBwcm9jZXNzIHRoZSBnaXZlbiB2YXJhcmdzICovCisJdmFfc3RhcnQoYXJncywgbnVtb2Jq cyk7CisJZm9yIChpID0gMDsgaSA8IG51bW9ianM7IGkrKykKKwl7CisJCWNoYXIJICAgKm5hbWU7 CisJCU9ialR5cGUJCXR5cGU7CisJCU9iakVsZW0gICAgKmVsZW07CisKKwkJbmFtZSA9IHZhX2Fy ZyhhcmdzLCBjaGFyICopOworCQl0eXBlID0gdmFfYXJnKGFyZ3MsIE9ialR5cGUpOworCQllbGVt ID0gbmV3X29iamVjdCh0eXBlLCBOVUxMKTsKKworCQkvKgorCQkgKiBGb3IgYWxsIHBhcmFtIHR5 cGVzIG90aGVyIHRoYW4gT2JqVHlwZU51bGwsIHRoZXJlIG11c3QgYmUgYSB2YWx1ZSBpbgorCQkg KiB0aGUgdmFyYXJncy4gRmV0Y2ggaXQgYW5kIGFkZCB0aGUgZnVsbHkgZm9ybWVkIHN1Ym9iamVj dCBpbnRvIHRoZQorCQkgKiBtYWluIG9iamVjdC4KKwkJICovCisJCXN3aXRjaCAodHlwZSkKKwkJ eworCQkJY2FzZSBPYmpUeXBlTnVsbDoKKwkJCQkvKiBOdWxsIHBhcmFtcyBkb24ndCBoYXZlIGEg dmFsdWUgKG9idmlvdXNseSkgKi8KKwkJCQlicmVhazsKKwkJCWNhc2UgT2JqVHlwZUJvb2w6CisJ CQkJZWxlbS0+dmFsdWUuYm9vbGVhbiA9IHZhX2FyZyhhcmdzLCBpbnQpOworCQkJCWJyZWFrOwor CQkJY2FzZSBPYmpUeXBlU3RyaW5nOgorCQkJCWVsZW0tPnZhbHVlLnN0cmluZyA9IHZhX2FyZyhh cmdzLCBjaGFyICopOworCQkJCWJyZWFrOworCQkJY2FzZSBPYmpUeXBlQXJyYXk6CisJCQkJZWxl bS0+dmFsdWUuYXJyYXkgPSB2YV9hcmcoYXJncywgTGlzdCAqKTsKKwkJCQlicmVhazsKKwkJCWNh c2UgT2JqVHlwZUludGVnZXI6CisJCQkJZWxlbS0+dmFsdWUuaW50ZWdlciA9IHZhX2FyZyhhcmdz LCBpbnQpOworCQkJCWJyZWFrOworCQkJY2FzZSBPYmpUeXBlRmxvYXQ6CisJCQkJZWxlbS0+dmFs dWUuZmx0ID0gdmFfYXJnKGFyZ3MsIGRvdWJsZSk7CisJCQkJYnJlYWs7CisJCQljYXNlIE9ialR5 cGVPYmplY3Q6CisJCQkJZWxlbS0+dmFsdWUub2JqZWN0ID0gdmFfYXJnKGFyZ3MsIE9ialRyZWUg Kik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIE9i alRyZWUgZWxlbWVudCB0eXBlICVkIiwgdHlwZSk7CisJCX0KKworCQllbGVtLT5uYW1lID0gbmFt ZTsKKwkJYXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIGVsZW0pOworCX0KKworCXZhX2VuZChh cmdzKTsKKwlyZXR1cm4gdHJlZTsKK30KKworLyoKKyAqIFByb2Nlc3MgdGhlIHByZS1idWlsdCBm b3JtYXQgc3RyaW5nIGZyb20gdGhlIE9ialRyZWUgaW50byB0aGUgb3V0cHV0IHBhcnNlCisgKiBz dGF0ZS4KKyAqLworc3RhdGljIHZvaWQKK29ianRyZWVfZm10X3RvX2pzb25iX2VsZW1lbnQoSnNv bmJQYXJzZVN0YXRlICpzdGF0ZSwgT2JqVHJlZSAqdHJlZSkKK3sKKwlKc29uYlZhbHVlCWtleTsK KwlKc29uYlZhbHVlCXZhbDsKKworCWlmICh0cmVlLT5mbXRpbmZvID09IE5VTEwpCisJCXJldHVy bjsKKworCS8qIFB1c2ggdGhlIGtleSBmaXJzdCAqLworCWtleS50eXBlID0gamJ2U3RyaW5nOwor CWtleS52YWwuc3RyaW5nLnZhbCA9ICJmbXQiOworCWtleS52YWwuc3RyaW5nLmxlbiA9IHN0cmxl bihrZXkudmFsLnN0cmluZy52YWwpOworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0tFWSwg JmtleSk7CisKKwkvKiBUaGVuIHByb2Nlc3MgdGhlIHByZS1idWlsdCBmb3JtYXQgc3RyaW5nICov CisJdmFsLnR5cGUgPSBqYnZTdHJpbmc7CisJdmFsLnZhbC5zdHJpbmcubGVuID0gdHJlZS0+Zm10 aW5mby0+bGVuOworCXZhbC52YWwuc3RyaW5nLnZhbCA9IHRyZWUtPmZtdGluZm8tPmRhdGE7CisJ cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfVkFMVUUsICZ2YWwpOworfQorCisvKgorICogQ3Jl YXRlIGEgSlNPTkIgcmVwcmVzZW50YXRpb24gZnJvbSBhbiBPYmpUcmVlLgorICovCitzdGF0aWMg SnNvbmIgKgorb2JqdHJlZV90b19qc29uYihPYmpUcmVlICp0cmVlKQoreworCUpzb25iVmFsdWUg KnZhbHVlOworCisJdmFsdWUgPSBvYmp0cmVlX3RvX2pzb25iX3JlYyh0cmVlLCBOVUxMKTsKKwly ZXR1cm4gSnNvbmJWYWx1ZVRvSnNvbmIodmFsdWUpOworfQorCisvKgorICogSGVscGVyIGZvciBv Ymp0cmVlX3RvX2pzb25iOiBwcm9jZXNzIGFuIGluZGl2aWR1YWwgZWxlbWVudCBmcm9tIGFuIG9i amVjdCBvcgorICogYW4gYXJyYXkgaW50byB0aGUgb3V0cHV0IHBhcnNlIHN0YXRlLgorICovCitz dGF0aWMgdm9pZAorb2JqdHJlZV90b19qc29uYl9lbGVtZW50KEpzb25iUGFyc2VTdGF0ZSAqc3Rh dGUsIE9iakVsZW0gKm9iamVjdCwKKwkJCQkJCSBKc29uYkl0ZXJhdG9yVG9rZW4gZWxlbV90b2tl bikKK3sKKwlKc29uYlZhbHVlCXZhbDsKKworCXN3aXRjaCAob2JqZWN0LT5vYmp0eXBlKQorCXsK KwkJY2FzZSBPYmpUeXBlTnVsbDoKKwkJCXZhbC50eXBlID0gamJ2TnVsbDsKKwkJCXB1c2hKc29u YlZhbHVlKCZzdGF0ZSwgZWxlbV90b2tlbiwgJnZhbCk7CisJCQlicmVhazsKKworCQljYXNlIE9i alR5cGVTdHJpbmc6CisJCQl2YWwudHlwZSA9IGpidlN0cmluZzsKKwkJCXZhbC52YWwuc3RyaW5n LmxlbiA9IHN0cmxlbihvYmplY3QtPnZhbHVlLnN0cmluZyk7CisJCQl2YWwudmFsLnN0cmluZy52 YWwgPSBvYmplY3QtPnZhbHVlLnN0cmluZzsKKwkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgZWxl bV90b2tlbiwgJnZhbCk7CisJCQlicmVhazsKKworCQljYXNlIE9ialR5cGVJbnRlZ2VyOgorCQkJ dmFsLnR5cGUgPSBqYnZOdW1lcmljOworCQkJdmFsLnZhbC5udW1lcmljID0gKE51bWVyaWMpCisJ CQkJRGF0dW1HZXROdW1lcmljKERpcmVjdEZ1bmN0aW9uQ2FsbDEoaW50OF9udW1lcmljLAorCQkJ CQkJCQkJCQkJCW9iamVjdC0+dmFsdWUuaW50ZWdlcikpOworCQkJcHVzaEpzb25iVmFsdWUoJnN0 YXRlLCBlbGVtX3Rva2VuLCAmdmFsKTsKKwkJCWJyZWFrOworCisJCWNhc2UgT2JqVHlwZUZsb2F0 OgorCQkJdmFsLnR5cGUgPSBqYnZOdW1lcmljOworCQkJdmFsLnZhbC5udW1lcmljID0gKE51bWVy aWMpCisJCQkJRGF0dW1HZXROdW1lcmljKERpcmVjdEZ1bmN0aW9uQ2FsbDEoZmxvYXQ4X251bWVy aWMsCisJCQkJCQkJCQkJCQkJb2JqZWN0LT52YWx1ZS5pbnRlZ2VyKSk7CisJCQlwdXNoSnNvbmJW YWx1ZSgmc3RhdGUsIGVsZW1fdG9rZW4sICZ2YWwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBPYmpU eXBlQm9vbDoKKwkJCXZhbC50eXBlID0gamJ2Qm9vbDsKKwkJCXZhbC52YWwuYm9vbGVhbiA9IG9i amVjdC0+dmFsdWUuYm9vbGVhbjsKKwkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgZWxlbV90b2tl biwgJnZhbCk7CisJCQlicmVhazsKKworCQljYXNlIE9ialR5cGVPYmplY3Q6CisJCQkvKiBSZWN1 cnNpdmVseSBhZGQgdGhlIG9iamVjdCBpbnRvIHRoZSBleGlzdGluZyBwYXJzZSBzdGF0ZSAqLwor CQkJb2JqdHJlZV90b19qc29uYl9yZWMob2JqZWN0LT52YWx1ZS5vYmplY3QsIHN0YXRlKTsKKwkJ CWJyZWFrOworCisJCWNhc2UgT2JqVHlwZUFycmF5OgorCQkJeworCQkJCUxpc3RDZWxsICAgKmNl bGw7CisKKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9BUlJBWSwgTlVMTCk7 CisJCQkJZm9yZWFjaChjZWxsLCBvYmplY3QtPnZhbHVlLmFycmF5KQorCQkJCXsKKwkJCQkJT2Jq RWxlbSAgICAqZWxlbSA9IGxmaXJzdChjZWxsKTsKKworCQkJCQlvYmp0cmVlX3RvX2pzb25iX2Vs ZW1lbnQoc3RhdGUsIGVsZW0sIFdKQl9FTEVNKTsKKwkJCQl9CisJCQkJcHVzaEpzb25iVmFsdWUo JnN0YXRlLCBXSkJfRU5EX0FSUkFZLCBOVUxMKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWRlZmF1 bHQ6CisJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9iamVjdCB0eXBlICVkIiwgb2JqZWN0 LT5vYmp0eXBlKTsKKwkJCWJyZWFrOworCX0KK30KKworLyoKKyAqIFJlY3Vyc2l2ZSBoZWxwZXIg Zm9yIG9ianRyZWVfdG9fanNvbmIuCisgKi8KK3N0YXRpYyBKc29uYlZhbHVlICoKK29ianRyZWVf dG9fanNvbmJfcmVjKE9ialRyZWUgKnRyZWUsIEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUpCit7CisJ c2xpc3RfaXRlcglpdGVyOworCisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JK RUNULCBOVUxMKTsKKworCW9ianRyZWVfZm10X3RvX2pzb25iX2VsZW1lbnQoc3RhdGUsIHRyZWUp OworCisJc2xpc3RfZm9yZWFjaChpdGVyLCAmdHJlZS0+cGFyYW1zKQorCXsKKwkJT2JqRWxlbSAg ICAqb2JqZWN0ID0gc2xpc3RfY29udGFpbmVyKE9iakVsZW0sIG5vZGUsIGl0ZXIuY3VyKTsKKwkJ SnNvbmJWYWx1ZQlrZXk7CisKKwkJLyogUHVzaCB0aGUga2V5IGZpcnN0ICovCisJCWtleS50eXBl ID0gamJ2U3RyaW5nOworCQlrZXkudmFsLnN0cmluZy5sZW4gPSBzdHJsZW4ob2JqZWN0LT5uYW1l KTsKKwkJa2V5LnZhbC5zdHJpbmcudmFsID0gb2JqZWN0LT5uYW1lOworCQlwdXNoSnNvbmJWYWx1 ZSgmc3RhdGUsIFdKQl9LRVksICZrZXkpOworCisJCS8qIFRoZW4gcHJvY2VzcyB0aGUgdmFsdWUg YWNjb3JkaW5nIHRvIGl0cyB0eXBlICovCisJCW9ianRyZWVfdG9fanNvbmJfZWxlbWVudChzdGF0 ZSwgb2JqZWN0LCBXSkJfVkFMVUUpOworCX0KKworCXJldHVybiBwdXNoSnNvbmJWYWx1ZSgmc3Rh dGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKK30KKworLyoKKyAqIFN1YnJvdXRpbmUgZm9yIENS RUFURSBUQUJMRS9DUkVBVEUgRE9NQUlOIGRlcGFyc2luZy4KKyAqCisgKiBHaXZlbiBhIHRhYmxl IE9JRCBvciBkb21haW4gT0lELCBvYnRhaW4gaXRzIGNvbnN0cmFpbnRzIGFuZCBhcHBlbmQgdGhl bSB0bworICogdGhlIGdpdmVuIGVsZW1lbnRzIGxpc3QuICBUaGUgdXBkYXRlZCBsaXN0IGlzIHJl dHVybmVkLgorICoKKyAqIFRoaXMgd29ya3MgZm9yIHR5cGVkIHRhYmxlcywgcmVndWxhciB0YWJs ZXMsIGFuZCBkb21haW5zLgorICoKKyAqIE5vdGUgdGhhdCBDT05TVFJBSU5UX0ZPUkVJR04gY29u c3RyYWludHMgYXJlIGFsd2F5cyBpZ25vcmVkLgorICovCitzdGF0aWMgTGlzdCAqCitvYnRhaW5D b25zdHJhaW50cyhMaXN0ICplbGVtZW50cywgT2lkIHJlbGF0aW9uSWQsIE9pZCBkb21haW5JZCwK KwkJCQkgIENvbnN0cmFpbnRPYmpUeXBlIG9ialR5cGUpCit7CisJUmVsYXRpb24JY29uUmVsOwor CVNjYW5LZXlEYXRhIGtleTsKKwlTeXNTY2FuRGVzYyBzY2FuOworCUhlYXBUdXBsZQl0dXBsZTsK KwlPYmpUcmVlICAgICpjb25zdHI7CisJT2lkCQkJcmVsaWQ7CisKKwkvKiBPbmx5IG9uZSBtYXkg YmUgdmFsaWQgKi8KKwlBc3NlcnQoT2lkSXNWYWxpZChyZWxhdGlvbklkKSBeIE9pZElzVmFsaWQo ZG9tYWluSWQpKTsKKworCXJlbGlkID0gT2lkSXNWYWxpZChyZWxhdGlvbklkKSA/IENvbnN0cmFp bnRSZWxpZFR5cGlkTmFtZUluZGV4SWQgOgorCQkJQ29uc3RyYWludFR5cGlkSW5kZXhJZDsKKwor CS8qCisJICogU2NhbiBwZ19jb25zdHJhaW50IHRvIGZldGNoIGFsbCBjb25zdHJhaW50cyBsaW5r ZWQgdG8gdGhlIGdpdmVuCisJICogcmVsYXRpb24uCisJICovCisJY29uUmVsID0gdGFibGVfb3Bl bihDb25zdHJhaW50UmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlTY2FuS2V5SW5pdCgm a2V5LCBBbnVtX3BnX2NvbnN0cmFpbnRfY29ucmVsaWQsIEJURXF1YWxTdHJhdGVneU51bWJlciwK KwkJCQlGX09JREVRLCBPYmplY3RJZEdldERhdHVtKHJlbGF0aW9uSWQpKTsKKwlzY2FuID0gc3lz dGFibGVfYmVnaW5zY2FuKGNvblJlbCwgcmVsaWQsIHRydWUsIE5VTEwsIDEsICZrZXkpOworCisJ LyoKKwkgKiBGb3IgZWFjaCBjb25zdHJhaW50LCBhZGQgYSBub2RlIHRvIHRoZSBsaXN0IG9mIHRh YmxlIGVsZW1lbnRzLiAgSW4KKwkgKiB0aGVzZSBub2RlcyB3ZSBpbmNsdWRlIG5vdCBvbmx5IHRo ZSBwcmludGFibGUgaW5mb3JtYXRpb24gKCJmbXQiKSwgYnV0CisJICogYWxzbyBzZXBhcmF0ZSBh dHRyaWJ1dGVzIHRvIGluZGljYXRlIHRoZSB0eXBlIG9mIGNvbnN0cmFpbnQsIGZvcgorCSAqIGF1 dG9tYXRpYyBwcm9jZXNzaW5nLgorCSAqLworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxl ID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlGb3JtX3BnX2NvbnN0cmFpbnQgY29u c3RyRm9ybTsKKwkJY2hhcgkgICAqY29udHlwZTsKKworCQljb25zdHJGb3JtID0gKEZvcm1fcGdf Y29uc3RyYWludCkgR0VUU1RSVUNUKHR1cGxlKTsKKworCQlzd2l0Y2ggKGNvbnN0ckZvcm0tPmNv bnR5cGUpCisJCXsKKwkJCWNhc2UgQ09OU1RSQUlOVF9DSEVDSzoKKwkJCQljb250eXBlID0gImNo ZWNrIjsKKwkJCQlicmVhazsKKwkJCWNhc2UgQ09OU1RSQUlOVF9GT1JFSUdOOgorCQkJCWNvbnRp bnVlOwkJLyogbm90IGhlcmUgKi8KKwkJCWNhc2UgQ09OU1RSQUlOVF9QUklNQVJZOgorCQkJCWNv bnR5cGUgPSAicHJpbWFyeSBrZXkiOworCQkJCWJyZWFrOworCQkJY2FzZSBDT05TVFJBSU5UX1VO SVFVRToKKwkJCQljb250eXBlID0gInVuaXF1ZSI7CisJCQkJYnJlYWs7CisJCQljYXNlIENPTlNU UkFJTlRfVFJJR0dFUjoKKwkJCQljb250eXBlID0gInRyaWdnZXIiOworCQkJCWJyZWFrOworCQkJ Y2FzZSBDT05TVFJBSU5UX0VYQ0xVU0lPTjoKKwkJCQljb250eXBlID0gImV4Y2x1c2lvbiI7CisJ CQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgY29u c3RyYWludCB0eXBlIik7CisJCX0KKworCQkvKgorCQkgKiAidHlwZSIgYW5kICJjb250eXBlIiBh cmUgbm90IHBhcnQgb2YgdGhlIHByaW50YWJsZSBvdXRwdXQsIGJ1dCBhcmUKKwkJICogdXNlZnVs IHRvIHByb2dyYW1tYXRpY2FsbHkgZGlzdGluZ3Vpc2ggdGhlc2UgZnJvbSBjb2x1bW5zIGFuZCBh bW9uZworCQkgKiBkaWZmZXJlbnQgY29uc3RyYWludCB0eXBlcy4KKwkJICoKKwkJICogWFhYIGl0 IG1pZ2h0IGJlIHVzZWZ1bCB0byBhbHNvIGxpc3QgdGhlIGNvbHVtbiBuYW1lcyBpbiBhIFBLLCBl dGMuCisJCSAqLworCQljb25zdHIgPSBuZXdfb2JqdHJlZV9WQSgiQ09OU1RSQUlOVCAle25hbWV9 SSAle2RlZmluaXRpb259cyIsIDQsCisJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImNv bnN0cmFpbnQiLAorCQkJCQkJCQkiY29udHlwZSIsIE9ialR5cGVTdHJpbmcsIGNvbnR5cGUsCisJ CQkJCQkJCSJuYW1lIiwgT2JqVHlwZVN0cmluZywgTmFtZVN0cihjb25zdHJGb3JtLT5jb25uYW1l KSwKKwkJCQkJCQkJImRlZmluaXRpb24iLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQlwZ19nZXRf Y29uc3RyYWludGRlZl9zdHJpbmcoY29uc3RyRm9ybS0+b2lkKSk7CisKKwkJaWYgKGNvbnN0ckZv cm0tPmNvbmluZGlkICYmCisJCQkoY29uc3RyRm9ybS0+Y29udHlwZSA9PSBDT05TVFJBSU5UX1BS SU1BUlkgfHwKKwkJCSBjb25zdHJGb3JtLT5jb250eXBlID09IENPTlNUUkFJTlRfVU5JUVVFIHx8 CisJCQkgY29uc3RyRm9ybS0+Y29udHlwZSA9PSBDT05TVFJBSU5UX0VYQ0xVU0lPTikpCisJCXsK KwkJCU9pZAkgIHRibHNwYyA9IGdldF9yZWxfdGFibGVzcGFjZShjb25zdHJGb3JtLT5jb25pbmRp ZCk7CisKKwkJCWlmIChPaWRJc1ZhbGlkKHRibHNwYykpCisJCQkJYXBwZW5kX3N0cmluZ19vYmpl Y3QoY29uc3RyLAorCQkJCQkJCQkJICJVU0lORyBJTkRFWCBUQUJMRVNQQUNFICV7dGJsc3BjfXMi LAorCQkJCQkJCQkJICJ0YmxzcGMiLAorCQkJCQkJCQkJIGdldF90YWJsZXNwYWNlX25hbWUodGJs c3BjKSk7CisJCX0KKworCQllbGVtZW50cyA9IGxhcHBlbmQoZWxlbWVudHMsIG5ld19vYmplY3Rf b2JqZWN0KGNvbnN0cikpOworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVf Y2xvc2UoY29uUmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIGVsZW1lbnRzOworfQor CisvKgorICogT2J0YWluIHRoZSBkZXBhcnNlZCBkZWZhdWx0IHZhbHVlIGZvciB0aGUgZ2l2ZW4g Y29sdW1uIG9mIHRoZSBnaXZlbiB0YWJsZS4KKyAqCisgKiBDYWxsZXIgbXVzdCBoYXZlIHNldCBh IGNvcnJlY3QgZGVwYXJzZSBjb250ZXh0LgorICovCitzdGF0aWMgY2hhciAqCitSZWxhdGlvbkdl dENvbHVtbkRlZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG5vLCBMaXN0ICpkcGNv bnRleHQsCisJCQkJCQkgTGlzdCAqKmV4cHJzKQoreworCU5vZGUJICAgKmRlZnZhbDsKKwljaGFy CSAgICpkZWZzdHI7CisKKwlkZWZ2YWwgPSBidWlsZF9jb2x1bW5fZGVmYXVsdChyZWwsIGF0dG5v KTsKKwlkZWZzdHIgPSBkZXBhcnNlX2V4cHJlc3Npb24oZGVmdmFsLCBkcGNvbnRleHQsIGZhbHNl LCBmYWxzZSk7CisKKwkvKiBDb2xsZWN0IHRoZSBleHByZXNzaW9uIGZvciBsYXRlciByZXBsaWNh dGlvbiBzYWZldHkgY2hlY2tzICovCisJaWYgKGV4cHJzKQorCQkqZXhwcnMgPSBsYXBwZW5kKCpl eHBycywgZGVmdmFsKTsKKworCXJldHVybiBkZWZzdHI7Cit9CisKKy8qCisgKiBPYnRhaW4gdGhl IGRlcGFyc2VkIHBhcnRpdGlvbiBib3VuZCBleHByZXNzaW9uIGZvciB0aGUgZ2l2ZW4gdGFibGUu CisgKi8KK3N0YXRpYyBjaGFyICoKK1JlbGF0aW9uR2V0UGFydGl0aW9uQm91bmQoT2lkIHJlbGlk KQoreworCURhdHVtCQlkZXBhcnNlZDsKKwlEYXR1bQkJYm91bmREYXR1bTsKKwlib29sCQlpc251 bGw7CisJSGVhcFR1cGxlCXR1cGxlOworCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lE LCByZWxpZCk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwg ImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0aW9uIHdpdGggT0lEICV1IiwgcmVsaWQpOwor CisJYm91bmREYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihSRUxPSUQsIHR1cGxlLAorCQkJCQkJCQkg QW51bV9wZ19jbGFzc19yZWxwYXJ0Ym91bmQsCisJCQkJCQkJCSAmaXNudWxsKTsKKworCWRlcGFy c2VkID0gRGlyZWN0RnVuY3Rpb25DYWxsMihwZ19nZXRfZXhwciwKKwkJCQkJCQkJICAgQ1N0cmlu Z0dldFRleHREYXR1bShUZXh0RGF0dW1HZXRDU3RyaW5nKGJvdW5kRGF0dW0pKSwKKwkJCQkJCQkJ ICAgcmVsaWQpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKKworCXJldHVybiBUZXh0RGF0 dW1HZXRDU3RyaW5nKGRlcGFyc2VkKTsKK30KKworLyoKKyAqIERlcGFyc2UgYSBDb2x1bW5EZWYg bm9kZSB3aXRoaW4gYSByZWd1bGFyIChub24tdHlwZWQpIHRhYmxlIGNyZWF0aW9uLgorICoKKyAq IE5PVCBOVUxMIGNvbnN0cmFpbnRzIGluIHRoZSBjb2x1bW4gZGVmaW5pdGlvbiBhcmUgZW1pdHRl ZCBkaXJlY3RseSBpbiB0aGUKKyAqIGNvbHVtbiBkZWZpbml0aW9uIGJ5IHRoaXMgcm91dGluZTsg b3RoZXIgY29uc3RyYWludHMgbXVzdCBiZSBlbWl0dGVkCisgKiBlbHNld2hlcmUgKHRoZSBpbmZv IGluIHRoZSBwYXJzZSBub2RlIGlzIGluY29tcGxldGUgYW55d2F5KS4KKyAqCisgKiBWZXJib3Nl IHN5bnRheAorICogJXtuYW1lfUkgJXtjb2x0eXBlfVQgJXtjb21wcmVzc2lvbn1zICV7ZGVmYXVs dH1zICV7bm90X251bGx9cyAle2NvbGxhdGlvbn1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2Rl cGFyc2VfQ29sdW1uRGVmKFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICpkcGNvbnRleHQsIGJvb2wg Y29tcG9zaXRlLAorCQkJCSAgQ29sdW1uRGVmICpjb2xkZWYsIGJvb2wgaXNfYWx0ZXIsIExpc3Qg KipleHBycykKK3sKKwlPYmpUcmVlICAgICpyZXQ7CisJT2JqVHJlZSAgICAqdG1wX29iajsKKwlP aWQJCQlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOworCUhlYXBUdXBsZQlhdHRy VHVwOworCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJGb3JtOworCU9pZAkJCXR5cGlkOworCWludDMy CQl0eXBtb2Q7CisJT2lkCQkJdHlwY29sbGF0aW9uOworCWJvb2wJCXNhd19ub3RudWxsOworCUxp c3RDZWxsICAgKmNlbGw7CisKKwkvKgorCSAqIEluaGVyaXRlZCBjb2x1bW5zIHdpdGhvdXQgbG9j YWwgZGVmaW5pdGlvbnMgbXVzdCBub3QgYmUgZW1pdHRlZC4KKwkgKgorCSAqIFhYWCBtYXliZSBp dCBpcyB1c2VmdWwgdG8gaGF2ZSB0aGVtIHdpdGggInByZXNlbnQgPSBmYWxzZSIgb3Igc29tZQor CSAqIHN1Y2g/CisJICovCisJaWYgKCFjb2xkZWYtPmlzX2xvY2FsKQorCQlyZXR1cm4gTlVMTDsK KworCWF0dHJUdXAgPSBTZWFyY2hTeXNDYWNoZUF0dE5hbWUocmVsaWQsIGNvbGRlZi0+Y29sbmFt ZSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGF0dHJUdXApKQorCQllbG9nKEVSUk9SLCAiY291 bGQgbm90IGZpbmQgY2FjaGUgZW50cnkgZm9yIGNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gJXUi LAorCQkJIGNvbGRlZi0+Y29sbmFtZSwgcmVsaWQpOworCWF0dHJGb3JtID0gKEZvcm1fcGdfYXR0 cmlidXRlKSBHRVRTVFJVQ1QoYXR0clR1cCk7CisKKwlnZXRfYXR0dHlwZXR5cG1vZGNvbGwocmVs aWQsIGF0dHJGb3JtLT5hdHRudW0sCisJCQkJCQkgICZ0eXBpZCwgJnR5cG1vZCwgJnR5cGNvbGxh dGlvbik7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiJXtuYW1lfUkgJXtjb2x0eXBlfVQiLCAz LAorCQkJCQkJICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImNvbHVtbiIsCisJCQkJCQkgIm5hbWUi LCBPYmpUeXBlU3RyaW5nLCBjb2xkZWYtPmNvbG5hbWUsCisJCQkJCQkgImNvbHR5cGUiLCBPYmpU eXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKHR5cGlkLCB0eXBtb2QpKTsK KworCWlmICghY29tcG9zaXRlKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICJTVE9SQUdF ICV7Y29sc3RvcmFnZX1zIiwgImNvbHN0b3JhZ2UiLAorCQkJCQkJCSBnZXRfdHlwZV9zdG9yYWdl KGF0dHJGb3JtLT5hdHRzdG9yYWdlKSk7CisKKwkvKiBVU0lORyBjbGF1c2UgKi8KKwl0bXBfb2Jq ID0gbmV3X29ianRyZWUoIkNPTVBSRVNTSU9OIik7CisJaWYgKGNvbGRlZi0+Y29tcHJlc3Npb24p CisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIle2NvbXByZXNzaW9uX21ldGhvZH1J IiwKKwkJCQkJCQkgImNvbXByZXNzaW9uX21ldGhvZCIsIGNvbGRlZi0+Y29tcHJlc3Npb24pOwor CWVsc2UKKwl7CisJCWFwcGVuZF9udWxsX29iamVjdCh0bXBfb2JqLCAiJXtjb21wcmVzc2lvbl9t ZXRob2R9SSIpOworCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisJfQorCWFwcGVuZF9v YmplY3Rfb2JqZWN0KHJldCwgIiV7Y29tcHJlc3Npb259cyIsIHRtcF9vYmopOworCisJdG1wX29i aiA9IG5ld19vYmp0cmVlKCJDT0xMQVRFIik7CisJaWYgKE9pZElzVmFsaWQodHlwY29sbGF0aW9u KSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7bmFtZX1EIiwKKwkJCQkJCQkg bmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKENvbGxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJ CQkJCQkJCSB0eXBjb2xsYXRpb24pKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXBf b2JqKTsKKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle2NvbGxhdGlvbn1zIiwgdG1wX29i aik7CisKKwlpZiAoIWNvbXBvc2l0ZSkKKwl7CisJCU9pZAkJCXNlcXJlbGlkID0gSW52YWxpZE9p ZDsKKworCQkvKgorCQkgKiBFbWl0IGEgTk9UIE5VTEwgZGVjbGFyYXRpb24gaWYgbmVjZXNzYXJ5 LiAgTm90ZSB0aGF0IHdlIGNhbm5vdAorCQkgKiB0cnVzdCBwZ19hdHRyaWJ1dGUuYXR0bm90bnVs bCBoZXJlLCBiZWNhdXNlIHRoYXQgYml0IGlzIGFsc28gc2V0CisJCSAqIHdoZW4gcHJpbWFyeSBr ZXlzIGFyZSBzcGVjaWZpZWQ7IHdlIG11c3Qgbm90IGVtaXQgYSBOT1QgTlVMTAorCQkgKiBjb25z dHJhaW50IGluIHRoYXQgY2FzZSwgdW5sZXNzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLiAgVGhlcmVm b3JlLAorCQkgKiB3ZSBzY2FuIHRoZSBsaXN0IG9mIGNvbnN0cmFpbnRzIGF0dGFjaGVkIHRvIHRo aXMgY29sdW1uIHRvCisJCSAqIGRldGVybWluZSB3aGV0aGVyIHdlIG5lZWQgdG8gZW1pdCBhbnl0 aGluZy4gKEZvcnR1bmF0ZWx5LCBOT1QgTlVMTAorCQkgKiBjb25zdHJhaW50cyBjYW5ub3QgYmUg dGFibGUgY29uc3RyYWludHMuKQorCQkgKgorCQkgKiBJbiB0aGUgQUxURVIgVEFCTEUgY2FzZXMs IHdlIGFsc28gYWRkIGEgTk9UIE5VTEwgaWYgdGhlIGNvbERlZiBpcworCQkgKiBtYXJrZWQgaXNf bm90X251bGwuCisJCSAqLworCQlzYXdfbm90bnVsbCA9IGZhbHNlOworCQlmb3JlYWNoKGNlbGws IGNvbGRlZi0+Y29uc3RyYWludHMpCisJCXsKKwkJCUNvbnN0cmFpbnQgKmNvbnN0ciA9IChDb25z dHJhaW50ICopIGxmaXJzdChjZWxsKTsKKworCQkJaWYgKGNvbnN0ci0+Y29udHlwZSA9PSBDT05T VFJfTk9UTlVMTCkKKwkJCXsKKwkJCQlzYXdfbm90bnVsbCA9IHRydWU7CisJCQkJYnJlYWs7CisJ CQl9CisJCX0KKworCQlpZiAoaXNfYWx0ZXIgJiYgY29sZGVmLT5pc19ub3RfbnVsbCkKKwkJCXNh d19ub3RudWxsID0gdHJ1ZTsKKworCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIle25vdF9u dWxsfXMiLCAibm90X251bGwiLAorCQkJCQkJCSBzYXdfbm90bnVsbCA/ICJOT1QgTlVMTCIgOiAi Iik7CisKKwkJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJERUZBVUxUIik7CisJCWlmIChhdHRyRm9y bS0+YXR0aGFzZGVmICYmCisJCQljb2xkZWYtPmdlbmVyYXRlZCAhPSBBVFRSSUJVVEVfR0VORVJB VEVEX1NUT1JFRCkKKwkJeworCQkJY2hhcgkgICAqZGVmc3RyOworCisJCQlkZWZzdHIgPSBSZWxh dGlvbkdldENvbHVtbkRlZmF1bHQocmVsYXRpb24sIGF0dHJGb3JtLT5hdHRudW0sCisJCQkJCQkJ CQkJCSAgZHBjb250ZXh0LCBleHBycyk7CisKKwkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9v YmosICIle2RlZmF1bHR9cyIsICJkZWZhdWx0IiwgZGVmc3RyKTsKKwkJfQorCQllbHNlCisJCQlh cHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwg IiV7ZGVmYXVsdH1zIiwgdG1wX29iaik7CisKKwkJLyogSURFTlRJVFkgQ09MVU1OICovCisJCWlm IChjb2xkZWYtPmlkZW50aXR5KQorCQl7CisJCQlPaWQJCQlhdHRubyA9IGdldF9hdHRudW0ocmVs aWQsIGNvbGRlZi0+Y29sbmFtZSk7CisKKwkJCXNlcXJlbGlkID0gZ2V0SWRlbnRpdHlTZXF1ZW5j ZShyZWxpZCwgYXR0bm8sIHRydWUpOworCQkJaWYgKE9pZElzVmFsaWQoc2VxcmVsaWQpICYmIGNv bGRlZi0+aWRlbnRpdHlTZXF1ZW5jZSkKKwkJCQlzZXFyZWxpZCA9IFJhbmdlVmFyR2V0UmVsaWQo Y29sZGVmLT5pZGVudGl0eVNlcXVlbmNlLCBOb0xvY2ssIGZhbHNlKTsKKwkJfQorCisJCWlmIChP aWRJc1ZhbGlkKHNlcXJlbGlkKSkKKwkJeworCQkJdG1wX29iaiA9IGRlcGFyc2VfQ29sdW1uSWRl bnRpdHkoc2VxcmVsaWQsIGNvbGRlZi0+aWRlbnRpdHksIGlzX2FsdGVyKTsKKwkJCWFwcGVuZF9v YmplY3Rfb2JqZWN0KHJldCwgIiV7aWRlbnRpdHlfY29sdW1ufXMiLCB0bXBfb2JqKTsKKwkJfQor CisJCS8qIEdFTkVSQVRFRCBDT0xVTU4gRVhQUkVTU0lPTiAqLworCQl0bXBfb2JqID0gbmV3X29i anRyZWUoIkdFTkVSQVRFRCBBTFdBWVMgQVMiKTsKKwkJaWYgKGNvbGRlZi0+Z2VuZXJhdGVkID09 IEFUVFJJQlVURV9HRU5FUkFURURfU1RPUkVEKQorCQl7CisJCQljaGFyCSAgICpkZWZzdHI7CisK KwkJCWRlZnN0ciA9IFJlbGF0aW9uR2V0Q29sdW1uRGVmYXVsdChyZWxhdGlvbiwgYXR0ckZvcm0t PmF0dG51bSwKKwkJCQkJCQkJCQkJICBkcGNvbnRleHQsIGV4cHJzKTsKKwkJCWFwcGVuZF9zdHJp bmdfb2JqZWN0KHRtcF9vYmosICIoJXtnZW5lcmF0aW9uX2V4cHJ9cykgU1RPUkVEIiwKKwkJCQkJ CQkJICJnZW5lcmF0aW9uX2V4cHIiLCBkZWZzdHIpOworCQl9CisJCWVsc2UKKwkJCWFwcGVuZF9u b3RfcHJlc2VudCh0bXBfb2JqKTsKKworCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle2dl bmVyYXRlZF9jb2x1bW59cyIsIHRtcF9vYmopOworCX0KKworCVJlbGVhc2VTeXNDYWNoZShhdHRy VHVwKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ29sdW1uRGVmIG5v ZGUgd2l0aGluIGEgdHlwZWQgdGFibGUgY3JlYXRpb24uCVRoaXMgaXMgc2ltcGxlcgorICogdGhh biB0aGUgcmVndWxhciBjYXNlLCBiZWNhdXNlIHdlIGRvbid0IGhhdmUgdG8gZW1pdCB0aGUgdHlw ZSBkZWNsYXJhdGlvbiwKKyAqIGNvbGxhdGlvbiwgb3IgZGVmYXVsdC4gIEhlcmUgd2Ugb25seSBy ZXR1cm4gc29tZXRoaW5nIGlmIHRoZSBjb2x1bW4gaXMgYmVpbmcKKyAqIGRlY2xhcmVkIE5PVCBO VUxMLgorICoKKyAqIEFzIGluIGRlcGFyc2VfQ29sdW1uRGVmLCBhbnkgb3RoZXIgY29uc3RyYWlu dCBpcyBwcm9jZXNzZWQgZWxzZXdoZXJlLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiAle25h bWV9SSBXSVRIIE9QVElPTlMgJXtub3RfbnVsbH1zICV7ZGVmYXVsdH1zLgorICovCitzdGF0aWMg T2JqVHJlZSAqCitkZXBhcnNlX0NvbHVtbkRlZl90eXBlZChSZWxhdGlvbiByZWxhdGlvbiwgTGlz dCAqZHBjb250ZXh0LCBDb2x1bW5EZWYgKmNvbGRlZikKK3sKKwlPYmpUcmVlICAgICpyZXQgPSBO VUxMOworCU9ialRyZWUgICAgKnRtcF9vYmo7CisJT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdldFJl bGlkKHJlbGF0aW9uKTsKKwlIZWFwVHVwbGUJYXR0clR1cDsKKwlGb3JtX3BnX2F0dHJpYnV0ZSBh dHRyRm9ybTsKKwlPaWQJCQl0eXBpZDsKKwlpbnQzMgkJdHlwbW9kOworCU9pZAkJCXR5cGNvbGxh dGlvbjsKKwlib29sCQlzYXdfbm90bnVsbDsKKwlMaXN0Q2VsbCAgICpjZWxsOworCisJYXR0clR1 cCA9IFNlYXJjaFN5c0NhY2hlQXR0TmFtZShyZWxpZCwgY29sZGVmLT5jb2xuYW1lKTsKKwlpZiAo IUhlYXBUdXBsZUlzVmFsaWQoYXR0clR1cCkpCisJCWVsb2coRVJST1IsICJjb3VsZCBub3QgZmlu ZCBjYWNoZSBlbnRyeSBmb3IgY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiAldSIsCisJCQkgY29s ZGVmLT5jb2xuYW1lLCByZWxpZCk7CisJYXR0ckZvcm0gPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdF VFNUUlVDVChhdHRyVHVwKTsKKworCWdldF9hdHR0eXBldHlwbW9kY29sbChyZWxpZCwgYXR0ckZv cm0tPmF0dG51bSwKKwkJCQkJCSAgJnR5cGlkLCAmdHlwbW9kLCAmdHlwY29sbGF0aW9uKTsKKwor CS8qCisJICogU2VhcmNoIGZvciBhIE5PVCBOVUxMIGRlY2xhcmF0aW9uLiBBcyBpbiBkZXBhcnNl X0NvbHVtbkRlZiwgd2UgcmVseSBvbgorCSAqIGZpbmRpbmcgYSBjb25zdHJhaW50IG9uIHRoZSBj b2x1bW4gcmF0aGVyIHRoYW4gY29sZGVmLT5pc19ub3RfbnVsbC4KKwkgKiAoVGhpcyByb3V0aW5l IGlzIG5ldmVyIHVzZWQgZm9yIEFMVEVSIGNhc2VzLikKKwkgKi8KKwlzYXdfbm90bnVsbCA9IGZh bHNlOworCWZvcmVhY2goY2VsbCwgY29sZGVmLT5jb25zdHJhaW50cykKKwl7CisJCUNvbnN0cmFp bnQgKmNvbnN0ciA9IChDb25zdHJhaW50ICopIGxmaXJzdChjZWxsKTsKKworCQlpZiAoY29uc3Ry LT5jb250eXBlID09IENPTlNUUl9OT1ROVUxMKQorCQl7CisJCQlzYXdfbm90bnVsbCA9IHRydWU7 CisJCQlicmVhazsKKwkJfQorCX0KKworCWlmICghc2F3X25vdG51bGwgJiYgIWF0dHJGb3JtLT5h dHRoYXNkZWYpCisJeworCQlSZWxlYXNlU3lzQ2FjaGUoYXR0clR1cCk7CisJCXJldHVybiBOVUxM OworCX0KKworCXRtcF9vYmogPSBuZXdfb2JqdHJlZSgiREVGQVVMVCIpOworCWlmIChhdHRyRm9y bS0+YXR0aGFzZGVmKQorCXsKKwkJY2hhcgkgICAqZGVmc3RyOworCisJCWRlZnN0ciA9IFJlbGF0 aW9uR2V0Q29sdW1uRGVmYXVsdChyZWxhdGlvbiwgYXR0ckZvcm0tPmF0dG51bSwKKwkJCQkJCQkJ CQkgIGRwY29udGV4dCwgTlVMTCk7CisKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wX29iaiwg IiV7ZGVmYXVsdH1zIiwgImRlZmF1bHQiLCBkZWZzdHIpOworCX0KKwllbHNlCisJCWFwcGVuZF9u b3RfcHJlc2VudCh0bXBfb2JqKTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCIle25hbWV9SSBX SVRIIE9QVElPTlMgJXtub3RfbnVsbH1zICV7ZGVmYXVsdH1zIiwgNCwKKwkJCQkJCSAidHlwZSIs IE9ialR5cGVTdHJpbmcsICJjb2x1bW4iLAorCQkJCQkJICJuYW1lIiwgT2JqVHlwZVN0cmluZywg Y29sZGVmLT5jb2xuYW1lLAorCQkJCQkJICJub3RfbnVsbCIsIE9ialR5cGVTdHJpbmcsCisJCQkJ CQkgc2F3X25vdG51bGwgPyAiTk9UIE5VTEwiIDogIiIsCisJCQkJCQkgImRlZmF1bHQiLCBPYmpU eXBlT2JqZWN0LCB0bXBfb2JqKTsKKworCS8qIEdlbmVyYXRlZCBjb2x1bW5zIGFyZSBub3Qgc3Vw cG9ydGVkIG9uIHR5cGVkIHRhYmxlcywgc28gd2UgYXJlIGRvbmUgKi8KKworCVJlbGVhc2VTeXND YWNoZShhdHRyVHVwKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBk ZWZpbml0aW9uIG9mIGNvbHVtbiBpZGVudGl0eS4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICog U0VUIEdFTkVSQVRFRCAle29wdGlvbn1zICV7aWRlbnRpdHlfdHlwZX1zICV7c2VxX2RlZmluaXRp b246IH1zCisgKiAJT1IKKyAqIEdFTkVSQVRFRCAle29wdGlvbn1zIEFTIElERU5USVRZICV7aWRl bnRpdHlfdHlwZX1zICggJXtzZXFfZGVmaW5pdGlvbjogfXMgKQorICovCitzdGF0aWMgT2JqVHJl ZSAqCitkZXBhcnNlX0NvbHVtbklkZW50aXR5KE9pZCBzZXFyZWxpZCwgY2hhciBpZGVudGl0eSwg Ym9vbCBhbHRlcl90YWJsZSkKK3sKKwlPYmpUcmVlICAgICpyZXQ7CisJT2JqVHJlZSAgICAqaWRl bnRfb2JqOworCUxpc3QJICAgKmVsZW1zID0gTklMOworCUZvcm1fcGdfc2VxdWVuY2Ugc2VxZm9y bTsKKwlTZXF1ZW5jZV92YWx1ZXMgKnNlcXZhbHVlczsKKwljaGFyCSAgICppZGVudGZtdDsKKwlj aGFyCSAgICpvYmpmbXQ7CisKKwlpZiAoYWx0ZXJfdGFibGUpCisJeworCQlpZGVudGZtdCA9ICJT RVQgR0VORVJBVEVEICI7CisJCW9iamZtdCA9ICIle29wdGlvbn1zIjsKKwl9CisJZWxzZQorCXsK KwkJaWRlbnRmbXQgPSAiR0VORVJBVEVEICI7CisJCW9iamZtdCA9ICIle29wdGlvbn1zIEFTIElE RU5USVRZIjsKKwl9CisKKwlpZGVudF9vYmogPSBuZXdfb2JqdHJlZShpZGVudGZtdCk7CisKKwlp ZiAoaWRlbnRpdHkgPT0gQVRUUklCVVRFX0lERU5USVRZX0FMV0FZUykKKwkJYXBwZW5kX3N0cmlu Z19vYmplY3QoaWRlbnRfb2JqLCBvYmpmbXQsICJvcHRpb24iLCAiQUxXQVlTIik7CisJZWxzZSBp ZiAoaWRlbnRpdHkgPT0gQVRUUklCVVRFX0lERU5USVRZX0JZX0RFRkFVTFQpCisJCWFwcGVuZF9z dHJpbmdfb2JqZWN0KGlkZW50X29iaiwgb2JqZm10LCAib3B0aW9uIiwgIkJZIERFRkFVTFQiKTsK KwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudChpZGVudF9vYmopOworCisJcmV0ID0gbmV3X29i anRyZWVfVkEoIiV7aWRlbnRpdHlfdHlwZX1zIiwgMSwKKwkJCQkJCSAiaWRlbnRpdHlfdHlwZSIs IE9ialR5cGVPYmplY3QsIGlkZW50X29iaik7CisKKwlzZXF2YWx1ZXMgPSBnZXRfc2VxdWVuY2Vf dmFsdWVzKHNlcXJlbGlkKTsKKwlzZXFmb3JtID0gc2VxdmFsdWVzLT5zZXFmb3JtOworCisJLyog RGVmaW5pdGlvbiBlbGVtZW50cyAqLworCWVsZW1zID0gbGFwcGVuZChlbGVtcywgZGVwYXJzZV9T ZXFfQ2FjaGUoc2VxZm9ybSwgYWx0ZXJfdGFibGUpKTsKKwllbGVtcyA9IGxhcHBlbmQoZWxlbXMs IGRlcGFyc2VfU2VxX0N5Y2xlKHNlcWZvcm0sIGFsdGVyX3RhYmxlKSk7CisJZWxlbXMgPSBsYXBw ZW5kKGVsZW1zLCBkZXBhcnNlX1NlcV9JbmNyZW1lbnRCeShzZXFmb3JtLCBhbHRlcl90YWJsZSkp OworCWVsZW1zID0gbGFwcGVuZChlbGVtcywgZGVwYXJzZV9TZXFfTWludmFsdWUoc2VxZm9ybSwg YWx0ZXJfdGFibGUpKTsKKwllbGVtcyA9IGxhcHBlbmQoZWxlbXMsIGRlcGFyc2VfU2VxX01heHZh bHVlKHNlcWZvcm0sIGFsdGVyX3RhYmxlKSk7CisJZWxlbXMgPSBsYXBwZW5kKGVsZW1zLCBkZXBh cnNlX1NlcV9TdGFydHdpdGgoc2VxZm9ybSwgYWx0ZXJfdGFibGUpKTsKKwllbGVtcyA9IGxhcHBl bmQoZWxlbXMsIGRlcGFyc2VfU2VxX1Jlc3RhcnQoc2VxdmFsdWVzLT5sYXN0X3ZhbHVlKSk7CisJ LyogV2UgcHVycG9zZWZ1bGx5IGRvIG5vdCBlbWl0IE9XTkVEIEJZIGhlcmUgKi8KKworCWlmIChh bHRlcl90YWJsZSkKKwkJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICIle3NlcV9kZWZpbml0aW9u OiB9cyIsIGVsZW1zKTsKKwllbHNlCisJCWFwcGVuZF9hcnJheV9vYmplY3QocmV0LCAiKCAle3Nl cV9kZWZpbml0aW9uOiB9cyApIiwgZWxlbXMpOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAq IC4uLiBBTFRFUiBDT0xVTU4gLi4uIFNFVC9SRVNFVCAoLi4uKQorICoKKyAqIFZlcmJvc2Ugc3lu dGF4CisgKiBBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBSRVNFVHxTRVQgKCV7b3B0aW9uczosIH1z KQorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NvbHVtblNldE9wdGlvbnMoQWx0ZXJU YWJsZUNtZCAqc3ViY21kKQoreworCUxpc3QJICAgKnNldHMgPSBOSUw7CisJTGlzdENlbGwgICAq Y2VsbDsKKwlPYmpUcmVlICAgICpyZXQ7CisJYm9vbAkJaXNfcmVzZXQgPSBzdWJjbWQtPnN1YnR5 cGUgPT0gQVRfUmVzZXRPcHRpb25zOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIENP TFVNTiAle2NvbHVtbn1JICV7b3B0aW9ufXMiLCAyLAorCQkJCQkJICJjb2x1bW4iLCBPYmpUeXBl U3RyaW5nLCBzdWJjbWQtPm5hbWUsCisJCQkJCQkgIm9wdGlvbiIsIE9ialR5cGVTdHJpbmcsIGlz X3Jlc2V0ID8gIlJFU0VUIiA6ICJTRVQiKTsKKworCWZvcmVhY2goY2VsbCwgKExpc3QgKikgc3Vi Y21kLT5kZWYpCisJeworCQlEZWZFbGVtICAgICplbGVtOworCQlPYmpUcmVlICAgICpzZXQ7CisK KwkJZWxlbSA9IChEZWZFbGVtICopIGxmaXJzdChjZWxsKTsKKwkJc2V0ID0gZGVwYXJzZV9EZWZF bGVtKGVsZW0sIGlzX3Jlc2V0KTsKKwkJc2V0cyA9IGxhcHBlbmQoc2V0cywgbmV3X29iamVjdF9v YmplY3Qoc2V0KSk7CisJfQorCisJQXNzZXJ0KHNldHMpOworCWFwcGVuZF9hcnJheV9vYmplY3Qo cmV0LCAiKCV7b3B0aW9uczosIH1zKSIsIHNldHMpOworCisJcmV0dXJuIHJldDsKK30KKworLyoK KyAqIC4uLiBBTFRFUiBDT0xVTU4gLi4uIFNFVC9SRVNFVCAoLi4uKQorICoKKyAqIFZlcmJvc2Ug c3ludGF4CisgKiBSRVNFVHxTRVQgKCV7b3B0aW9uczosIH1zKQorICovCitzdGF0aWMgT2JqVHJl ZSAqCitkZXBhcnNlX1JlbFNldE9wdGlvbnMoQWx0ZXJUYWJsZUNtZCAqc3ViY21kKQoreworCUxp c3QJICAgKnNldHMgPSBOSUw7CisJTGlzdENlbGwgICAqY2VsbDsKKwlib29sCQlpc19yZXNldCA9 IHN1YmNtZC0+c3VidHlwZSA9PSBBVF9SZXNldFJlbE9wdGlvbnM7CisKKwlmb3JlYWNoKGNlbGws IChMaXN0ICopIHN1YmNtZC0+ZGVmKQorCXsKKwkJRGVmRWxlbSAgICAqZWxlbTsKKwkJT2JqVHJl ZSAgICAqc2V0OworCisJCWVsZW0gPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7CisJCXNldCA9 IGRlcGFyc2VfRGVmRWxlbShlbGVtLCBpc19yZXNldCk7CisJCXNldHMgPSBsYXBwZW5kKHNldHMs IG5ld19vYmplY3Rfb2JqZWN0KHNldCkpOworCX0KKworCUFzc2VydChzZXRzKTsKKworCXJldHVy biBuZXdfb2JqdHJlZV9WQSgiJXtzZXRfcmVzZXR9cyAoJXtvcHRpb25zOiwgfXMpIiwgMiwKKwkJ CQkJCSAgInNldF9yZXNldCIsIE9ialR5cGVTdHJpbmcsIGlzX3Jlc2V0ID8gIlJFU0VUIiA6ICJT RVQiLAorCQkJCQkJICAib3B0aW9ucyIsIE9ialR5cGVBcnJheSwgc2V0cyk7Cit9CisKKy8qCisg KiBEZXBhcnNlIERlZkVsZW1zLCBhcyB1c2VkIGUuZy4gYnkgQUxURVIgQ09MVU1OIC4uLiBTRVQs IGludG8gYSBsaXN0IG9mIFNFVAorICogKC4uLikgIG9yIFJFU0VUICguLi4pIGNvbnRlbnRzLgor ICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiAle2xhYmVsfXMgPSAle3ZhbHVlfUwKKyAqLworc3Rh dGljIE9ialRyZWUgKgorZGVwYXJzZV9EZWZFbGVtKERlZkVsZW0gKmVsZW0sIGJvb2wgaXNfcmVz ZXQpCit7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKm9wdG5hbWUgPSBuZXdfb2Jq dHJlZSgiIik7CisKKwlpZiAoZWxlbS0+ZGVmbmFtZXNwYWNlICE9IE5VTEwpCisJCWFwcGVuZF9z dHJpbmdfb2JqZWN0KG9wdG5hbWUsICIle3NjaGVtYX1JLiIsICJzY2hlbWEiLAorCQkJCQkJCSBl bGVtLT5kZWZuYW1lc3BhY2UpOworCisJYXBwZW5kX3N0cmluZ19vYmplY3Qob3B0bmFtZSwgIiV7 bGFiZWx9SSIsICJsYWJlbCIsIGVsZW0tPmRlZm5hbWUpOworCisJcmV0ID0gbmV3X29ianRyZWVf VkEoIiV7bGFiZWx9cyIsIDEsCisJCQkJCQkgImxhYmVsIiwgT2JqVHlwZU9iamVjdCwgb3B0bmFt ZSk7CisKKwlpZiAoIWlzX3Jlc2V0KQorCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICI9ICV7 dmFsdWV9TCIsICJ2YWx1ZSIsCisJCQkJCQkJIGVsZW0tPmFyZyA/IGRlZkdldFN0cmluZyhlbGVt KSA6CisJCQkJCQkJIGRlZkdldEJvb2xlYW4oZWxlbSkgPyAiVFJVRSIgOiAiRkFMU0UiKTsKKwor CXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBJTkhFUklUUyByZWxhdGlvbnMu CisgKgorICogR2l2ZW4gYSB0YWJsZSBPSUQsIHJldHVybiBhIHNjaGVtYS1xdWFsaWZpZWQgdGFi bGUgbGlzdCByZXByZXNlbnRpbmcKKyAqIHRoZSBwYXJlbnQgdGFibGVzLgorICovCitzdGF0aWMg TGlzdCAqCitkZXBhcnNlX0luaFJlbGF0aW9ucyhPaWQgb2JqZWN0SWQpCit7CisJTGlzdAkgICAq cGFyZW50cyA9IE5JTDsKKwlSZWxhdGlvbglpbmhSZWw7CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlT Y2FuS2V5RGF0YSBrZXk7CisJSGVhcFR1cGxlCXR1cGxlOworCisJaW5oUmVsID0gdGFibGVfb3Bl bihJbmhlcml0c1JlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJU2NhbktleUluaXQo JmtleSwKKwkJCQlBbnVtX3BnX2luaGVyaXRzX2luaHJlbGlkLAorCQkJCUJURXF1YWxTdHJhdGVn eU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKG9iamVjdElkKSk7CisKKwlz Y2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKGluaFJlbCwgSW5oZXJpdHNSZWxpZFNlcW5vSW5kZXhJ ZCwKKwkJCQkJCQkgIHRydWUsIE5VTEwsIDEsICZrZXkpOworCisJd2hpbGUgKEhlYXBUdXBsZUlz VmFsaWQodHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCU9ialRyZWUgICAg KnBhcmVudDsKKwkJRm9ybV9wZ19pbmhlcml0cyBmb3JtSW5oID0gKEZvcm1fcGdfaW5oZXJpdHMp IEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJcGFyZW50ID0gbmV3X29ianRyZWVfZm9yX3F1YWxuYW1l X2lkKFJlbGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJIGZvcm1JbmgtPmluaHBhcmVudCk7 CisJCXBhcmVudHMgPSBsYXBwZW5kKHBhcmVudHMsIG5ld19vYmplY3Rfb2JqZWN0KHBhcmVudCkp OworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2UoaW5oUmVsLCBS b3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBwYXJlbnRzOworfQorCisvKgorICogRGVwYXJz ZSB0aGUgT04gQ09NTUlUIC4uLiBjbGF1c2UgZm9yIENSRUFURSAuLi4gVEVNUE9SQVJZIC4uLgor ICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBPTiBDT01NSVQgJXtvbl9jb21taXRfdmFsdWV9cwor ICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX09uQ29tbWl0Q2xhdXNlKE9uQ29tbWl0QWN0 aW9uIG9wdGlvbikKK3sKKwlPYmpUcmVlICAgICpyZXQgID0gbmV3X29ianRyZWUoIk9OIENPTU1J VCIpOworCXN3aXRjaCAob3B0aW9uKQorCXsKKwkJY2FzZSBPTkNPTU1JVF9EUk9QOgorCQkJYXBw ZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtvbl9jb21taXRfdmFsdWV9cyIsCisJCQkJCQkJCSAi b25fY29tbWl0X3ZhbHVlIiwgIkRST1AiKTsKKwkJCWJyZWFrOworCisJCWNhc2UgT05DT01NSVRf REVMRVRFX1JPV1M6CisJCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIle29uX2NvbW1pdF92 YWx1ZX1zIiwKKwkJCQkJCQkJICJvbl9jb21taXRfdmFsdWUiLCAiREVMRVRFIFJPV1MiKTsKKwkJ CWJyZWFrOworCisJCWNhc2UgT05DT01NSVRfUFJFU0VSVkVfUk9XUzoKKwkJCWFwcGVuZF9zdHJp bmdfb2JqZWN0KHJldCwgIiV7b25fY29tbWl0X3ZhbHVlfXMiLAorCQkJCQkJCQkgIm9uX2NvbW1p dF92YWx1ZSIsICJQUkVTRVJWRSBST1dTIik7CisJCQlicmVhazsKKworCQljYXNlIE9OQ09NTUlU X05PT1A6CisJCQlhcHBlbmRfbnVsbF9vYmplY3QocmV0LCAiJXtvbl9jb21taXRfdmFsdWV9cyIp OworCQkJYXBwZW5kX25vdF9wcmVzZW50KHJldCk7CisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4g cmV0OworfQorCisvKgorICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgQ0FDSEUgb3B0aW9uLgorICoK KyAqIFZlcmJvc2Ugc3ludGF4CisgKiBTRVQgQ0FDSEUgJXt2YWx1ZX1zCisgKiBPUgorICogQ0FD SEUgJXt2YWx1ZX0KKyAqLworc3RhdGljIGlubGluZSBPYmpFbGVtICoKK2RlcGFyc2VfU2VxX0Nh Y2hlKEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSkKK3sKKwlPYmpU cmVlICAgICpyZXQ7CisJY2hhcgkgICAqZm10OworCisJZm10ID0gYWx0ZXJfdGFibGUgPyAiU0VU IENBQ0hFICV7dmFsdWV9cyIgOiAiQ0FDSEUgJXt2YWx1ZX1zIjsKKworCXJldCA9IG5ld19vYmp0 cmVlX1ZBKGZtdCwgMiwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgImNhY2hlIiwK KwkJCQkJCSAidmFsdWUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIHBzcHJpbnRmKElOVDY0X0ZP Uk1BVCwgc2VxZGF0YS0+c2VxY2FjaGUpKTsKKworCXJldHVybiBuZXdfb2JqZWN0X29iamVjdChy ZXQpOworfQorCisvKgorICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgQ1lDTEUgb3B0aW9uLgorICoK KyAqIFZlcmJvc2Ugc3ludGF4CisgKiBTRVQgJXtub31zIENZQ0xFCisgKiBPUgorICogJXtub31z IENZQ0xFCisgKi8KK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqCitkZXBhcnNlX1NlcV9DeWNsZShG b3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEsIGJvb2wgYWx0ZXJfdGFibGUpCit7CisJT2JqVHJlZSAg ICAqcmV0OworCWNoYXIJICAgKmZtdDsKKworCWZtdCA9IGFsdGVyX3RhYmxlID8gIlNFVCAle25v fXMgQ1lDTEUiIDogIiV7bm99cyBDWUNMRSI7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQShmbXQs IDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJjeWNsZSIsCisJCQkJCQkgIm5v IiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBzZXFkYXRhLT5zZXFjeWNsZSA/ICIiIDogIk5PIik7 CisKKwlyZXR1cm4gbmV3X29iamVjdF9vYmplY3QocmV0KTsKK30KKworLyoKKyAqIERlcGFyc2Ug dGhlIHNlcXVlbmNlIElOQ1JFTUVOVCBCWSBvcHRpb24uCisgKgorICogVmVyYm9zZSBzeW50YXgK KyAqIFNFVCBJTkNSRU1FTlQgQlkgJXt2YWx1ZX1zCisgKiBPUgorICogSU5DUkVNRU5UIEJZICV7 dmFsdWV9cworICovCitzdGF0aWMgaW5saW5lIE9iakVsZW0gKgorZGVwYXJzZV9TZXFfSW5jcmVt ZW50QnkoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKQoreworCU9i alRyZWUgICAgKnJldDsKKwljaGFyCSAgICpmbXQ7CisKKwlmbXQgPSBhbHRlcl90YWJsZSA/ICJT RVQgSU5DUkVNRU5UIEJZICV7dmFsdWV9cyIgOiAiSU5DUkVNRU5UIEJZICV7dmFsdWV9cyI7CisK KwlyZXQgPSBuZXdfb2JqdHJlZV9WQShmbXQsIDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVT dHJpbmcsICJzZXFpbmNyZW1lbnQiLAorCQkJCQkJICJ2YWx1ZSIsIE9ialR5cGVTdHJpbmcsCisJ CQkJCQkgcHNwcmludGYoSU5UNjRfRk9STUFULCBzZXFkYXRhLT5zZXFpbmNyZW1lbnQpKTsKKwor CXJldHVybiBuZXdfb2JqZWN0X29iamVjdChyZXQpOworfQorCisvKgorICogRGVwYXJzZSB0aGUg c2VxdWVuY2UgTUFYVkFMVUUgb3B0aW9uLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBTRVQg TUFYVkFMVUUgJXt2YWx1ZX1zCisgKiBPUgorICogTUFYVkFMVUUgJXt2YWx1ZX1zCisgKi8KK3N0 YXRpYyBpbmxpbmUgT2JqRWxlbSAqCitkZXBhcnNlX1NlcV9NYXh2YWx1ZShGb3JtX3BnX3NlcXVl bmNlIHNlcWRhdGEsIGJvb2wgYWx0ZXJfdGFibGUpCit7CisJT2JqVHJlZSAgICAqcmV0OworCWNo YXIJICAgKmZtdDsKKworCWZtdCA9IGFsdGVyX3RhYmxlID8gIlNFVCBNQVhWQUxVRSAle3ZhbHVl fXMiIDogIk1BWFZBTFVFICV7dmFsdWV9cyI7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQShmbXQs IDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJtYXh2YWx1ZSIsCisJCQkJCQkg InZhbHVlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBwc3ByaW50ZihJTlQ2NF9GT1JNQVQsIHNl cWRhdGEtPnNlcW1heCkpOworCisJcmV0dXJuIG5ld19vYmplY3Rfb2JqZWN0KHJldCk7Cit9CisK Ky8qCisgKiBEZXBhcnNlIHRoZSBzZXF1ZW5jZSBNSU5WQUxVRSBvcHRpb24uCisgKgorICogVmVy Ym9zZSBzeW50YXgKKyAqIFNFVCBNSU5WQUxVRSAle3ZhbHVlfXMKKyAqIE9SCisgKiBNSU5WQUxV RSAle3ZhbHVlfXMKKyAqLworc3RhdGljIGlubGluZSBPYmpFbGVtICoKK2RlcGFyc2VfU2VxX01p bnZhbHVlKEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSkKK3sKKwlP YmpUcmVlICAgICpyZXQ7CisJY2hhcgkgICAqZm10OworCisJZm10ID0gYWx0ZXJfdGFibGUgPyAi U0VUIE1JTlZBTFVFICV7dmFsdWV9cyIgOiAiTUlOVkFMVUUgJXt2YWx1ZX1zIjsKKworCXJldCA9 IG5ld19vYmp0cmVlX1ZBKGZtdCwgMiwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywg Im1pbnZhbHVlIiwKKwkJCQkJCSAidmFsdWUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIHBzcHJp bnRmKElOVDY0X0ZPUk1BVCwgc2VxZGF0YS0+c2VxbWluKSk7CisKKwlyZXR1cm4gbmV3X29iamVj dF9vYmplY3QocmV0KTsKK30KKworLyoKKyAqIERlcGFyc2UgdGhlIHNlcXVlbmNlIFJFU1RBUlQg b3B0aW9uLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBSRVNUQVJUICV7dmFsdWV9cworICov CitzdGF0aWMgaW5saW5lIE9iakVsZW0gKgorZGVwYXJzZV9TZXFfUmVzdGFydChpbnQ2NCBsYXN0 X3ZhbHVlKQoreworCU9ialRyZWUgICAgKnJldDsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJS RVNUQVJUICV7dmFsdWV9cyIsIDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJy ZXN0YXJ0IiwKKwkJCQkJCSAidmFsdWUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIHBzcHJpbnRm KElOVDY0X0ZPUk1BVCwgbGFzdF92YWx1ZSkpOworCisJcmV0dXJuIG5ld19vYmplY3Rfb2JqZWN0 KHJldCk7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBzZXF1ZW5jZSBBUyBvcHRpb24uCisgKgor ICogVmVyYm9zZSBzeW50YXgKKyAqIEFTICV7c2VxdHlwZX1UCisgKi8KK3N0YXRpYyBpbmxpbmUg T2JqRWxlbSAqCitkZXBhcnNlX1NlcV9BcyhGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEpCit7CisJ T2JqVHJlZSAgICAqcmV0OworCisJcmV0ID0gbmV3X29ianRyZWUoIkFTIik7CisJaWYgKE9pZElz VmFsaWQoc2VxZGF0YS0+c2VxdHlwaWQpKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIl e3NlcXR5cGV9VCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKHNlcWRhdGEtPnNlcXR5 cGlkLCAtMSkpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHJldCk7CisKKwlyZXR1cm4g bmV3X29iamVjdF9vYmplY3QocmV0KTsKK30KKworLyoKKyAqIERlcGFyc2UgdGhlIHNlcXVlbmNl IFNUQVJUIFdJVEggb3B0aW9uLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBTRVQgU1RBUlQg V0lUSCAle3ZhbHVlfXMKKyAqIE9SCisgKiBTVEFSVCBXSVRIICV7dmFsdWV9cworICovCitzdGF0 aWMgaW5saW5lIE9iakVsZW0gKgorZGVwYXJzZV9TZXFfU3RhcnR3aXRoKEZvcm1fcGdfc2VxdWVu Y2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSkKK3sKKwlPYmpUcmVlICAgICpyZXQ7CisJY2hh cgkgICAqZm10OworCisJZm10ID0gYWx0ZXJfdGFibGUgPyAiU0VUIFNUQVJUIFdJVEggJXt2YWx1 ZX1zIiA6ICJTVEFSVCBXSVRIICV7dmFsdWV9cyI7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQShm bXQsIDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJzdGFydCIsCisJCQkJCQkg InZhbHVlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBwc3ByaW50ZihJTlQ2NF9GT1JNQVQsIHNl cWRhdGEtPnNlcXN0YXJ0KSk7CisKKwlyZXR1cm4gbmV3X29iamVjdF9vYmplY3QocmV0KTsKK30K KworLyoKKyAqIERlcGFyc2UgdGhlIHR5cGUgU1RPUkFHRSBvcHRpb24uCisgKgorICogVmVyYm9z ZSBzeW50YXgKKyAqIFNUT1JBR0U9JXt2YWx1ZX1zCisgKi8KK3N0YXRpYyBpbmxpbmUgT2JqRWxl bSAqCitkZXBhcnNlX1R5cGVfU3RvcmFnZShGb3JtX3BnX3R5cGUgdHlwRm9ybSkKK3sKKwlPYmpU cmVlICAgICpyZXQ7CisJcmV0ID0gbmV3X29ianRyZWVfVkEoIlNUT1JBR0UgPSAle3ZhbHVlfXMi LCAyLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAic3RvcmFnZSIsCisJCQkJCQkg InZhbHVlIiwgT2JqVHlwZVN0cmluZywgZ2V0X3R5cGVfc3RvcmFnZSh0eXBGb3JtLT50eXBzdG9y YWdlKSk7CisKKwlyZXR1cm4gbmV3X29iamVjdF9vYmplY3QocmV0KTsKK30KKworLyoKKyAqIERl cGFyc2UgdGhlIHR5cGUgUkVDRUlWRSBvcHRpb24uCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAq IFJFQ0VJVkU9JXtwcm9jZWR1cmV9RAorICovCitzdGF0aWMgaW5saW5lIE9iakVsZW0gKgorZGVw YXJzZV9UeXBlX1JlY2VpdmUoRm9ybV9wZ190eXBlIHR5cEZvcm0pCit7CisJT2JqVHJlZSAgICAq cmV0OworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIlJFQ0VJVkU9IiwgMSwKKwkJCQkJCSAiY2xh dXNlIiwgT2JqVHlwZVN0cmluZywgInJlY2VpdmUiKTsKKwlpZiAoT2lkSXNWYWxpZCh0eXBGb3Jt LT50eXByZWNlaXZlKSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtwcm9jZWR1cmV9 RCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlv bklkLAorCQkJCQkJCQkJCQkJCQkgdHlwRm9ybS0+dHlwcmVjZWl2ZSkpOworCWVsc2UKKwkJYXBw ZW5kX25vdF9wcmVzZW50KHJldCk7CisKKwlyZXR1cm4gbmV3X29iamVjdF9vYmplY3QocmV0KTsK K30KKworLyoKKyAqIERlcGFyc2UgdGhlIHR5cGUgU0VORCBvcHRpb24uCisgKgorICogVmVyYm9z ZSBzeW50YXgKKyAqIFNFTkQ9JXtwcm9jZWR1cmV9RAorICovCitzdGF0aWMgaW5saW5lIE9iakVs ZW0gKgorZGVwYXJzZV9UeXBlX1NlbmQoRm9ybV9wZ190eXBlIHR5cEZvcm0pCit7CisJT2JqVHJl ZSAgICAqcmV0OworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIlNFTkQ9IiwgMSwKKwkJCQkJCSAi Y2xhdXNlIiwgT2JqVHlwZVN0cmluZywgInNlbmQiKTsKKwlpZiAoT2lkSXNWYWxpZCh0eXBGb3Jt LT50eXBzZW5kKSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtwcm9jZWR1cmV9RCIs CisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklk LAorCQkJCQkJCQkJCQkJCQkgdHlwRm9ybS0+dHlwc2VuZCkpOworCWVsc2UKKwkJYXBwZW5kX25v dF9wcmVzZW50KHJldCk7CisKKwlyZXR1cm4gbmV3X29iamVjdF9vYmplY3QocmV0KTsKK30KKwor LyoKKyAqIERlcGFyc2UgdGhlIHR5cGUgdHlwbW9kX2luIG9wdGlvbi4KKyAqCisgKiBWZXJib3Nl IHN5bnRheAorICogVFlQTU9EX0lOPSV7cHJvY2VkdXJlfUQKKyAqLworc3RhdGljIGlubGluZSBP YmpFbGVtICoKK2RlcGFyc2VfVHlwZV9UeXBtb2RfSW4oRm9ybV9wZ190eXBlIHR5cEZvcm0pCit7 CisJT2JqVHJlZSAgICAqcmV0OworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIlRZUE1PRF9JTj0i LCAxLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAidHlwbW9kX2luIik7CisJaWYg KE9pZElzVmFsaWQodHlwRm9ybS0+dHlwbW9kaW4pKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdChy ZXQsICIle3Byb2NlZHVyZX1EIiwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lk KFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSB0eXBGb3JtLT50eXBtb2Rpbikp OworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHJldCk7CisKKwlyZXR1cm4gbmV3X29iamVj dF9vYmplY3QocmV0KTsKK30KKworLyoKKyAqIERlcGFyc2UgdGhlIHR5cGUgdHlwbW9kX291dCBv cHRpb24uCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIFRZUE1PRF9PVVQ9JXtwcm9jZWR1cmV9 RAorICovCitzdGF0aWMgaW5saW5lIE9iakVsZW0gKgorZGVwYXJzZV9UeXBlX1R5cG1vZF9PdXQo Rm9ybV9wZ190eXBlIHR5cEZvcm0pCit7CisJT2JqVHJlZSAgICAqcmV0OworCisJcmV0ID0gbmV3 X29ianRyZWVfVkEoIlRZUE1PRF9PVVQ9IiwgMSwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0 cmluZywgInR5cG1vZF9vdXQiKTsKKwlpZiAoT2lkSXNWYWxpZCh0eXBGb3JtLT50eXBtb2RvdXQp KQorCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle3Byb2NlZHVyZX1EIiwKKwkJCQkJCQkg bmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJ CQkJCQkJCSB0eXBGb3JtLT50eXBtb2RvdXQpKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2Vu dChyZXQpOworCisJcmV0dXJuIG5ld19vYmplY3Rfb2JqZWN0KHJldCk7Cit9CisKKy8qCisgKiBE ZXBhcnNlIHRoZSB0eXBlIGFuYWx5emUgb3B0aW9uLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4Cisg KiBBTkFMWVpFPSV7cHJvY2VkdXJlfUQKKyAqLworc3RhdGljIGlubGluZSBPYmpFbGVtICoKK2Rl cGFyc2VfVHlwZV9BbmFseXplKEZvcm1fcGdfdHlwZSB0eXBGb3JtKQoreworCU9ialRyZWUgICAg KnJldDsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTkFMWVpFPSIsIDEsCisJCQkJCQkgImNs YXVzZSIsIE9ialR5cGVTdHJpbmcsICJhbmFseXplIik7CisJaWYgKE9pZElzVmFsaWQodHlwRm9y bS0+dHlwYW5hbHl6ZSkpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7cHJvY2VkdXJl fUQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRp b25JZCwKKwkJCQkJCQkJCQkJCQkJIHR5cEZvcm0tPnR5cGFuYWx5emUpKTsKKwllbHNlCisJCWFw cGVuZF9ub3RfcHJlc2VudChyZXQpOworCisJcmV0dXJuIG5ld19vYmplY3Rfb2JqZWN0KHJldCk7 Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSB0eXBlIHN1YnNjcmlwdCBvcHRpb24uCisgKgorICog VmVyYm9zZSBzeW50YXgKKyAqIFNVQlNDUklQVD0le3Byb2NlZHVyZX1ECisgKi8KK3N0YXRpYyBp bmxpbmUgT2JqRWxlbSAqCitkZXBhcnNlX1R5cGVfU3Vic2NyaXB0KEZvcm1fcGdfdHlwZSB0eXBG b3JtKQoreworCU9ialRyZWUgICAgKnJldDsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJTVUJT Q1JJUFQ9IiwgMSwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgInN1YnNjcmlwdCIp OworCWlmIChPaWRJc1ZhbGlkKHR5cEZvcm0tPnR5cHN1YnNjcmlwdCkpCisJCWFwcGVuZF9vYmpl Y3Rfb2JqZWN0KHJldCwgIiV7cHJvY2VkdXJlfUQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3Jf cXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJIHR5cEZvcm0t PnR5cHN1YnNjcmlwdCkpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHJldCk7CisKKwly ZXR1cm4gbmV3X29iamVjdF9vYmplY3QocmV0KTsKK30KKworLyoKKyAqIFN1YnJvdXRpbmUgZm9y IENSRUFURSBUQUJMRSBkZXBhcnNpbmcuCisgKgorICogRGVhbCB3aXRoIGFsbCB0aGUgdGFibGUg ZWxlbWVudHMgKGNvbHVtbnMgYW5kIGNvbnN0cmFpbnRzKS4KKyAqCisgKiBOb3RlIHdlIGlnbm9y ZSBjb25zdHJhaW50cyBpbiB0aGUgcGFyc2Ugbm9kZSBoZXJlOyB0aGV5IGFyZSBleHRyYWN0ZWQg ZnJvbQorICogc3lzdGVtIGNhdGFsb2dzIGluc3RlYWQuCisgKi8KK3N0YXRpYyBMaXN0ICoKK2Rl cGFyc2VfVGFibGVFbGVtZW50cyhSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqdGFibGVFbGVtZW50 cywgTGlzdCAqZHBjb250ZXh0LAorCQkJCQkgIGJvb2wgdHlwZWQsIGJvb2wgY29tcG9zaXRlKQor eworCUxpc3QJICAgKmVsZW1lbnRzID0gTklMOworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFj aChsYywgdGFibGVFbGVtZW50cykKKwl7CisJCU5vZGUJICAgKmVsdCA9IChOb2RlICopIGxmaXJz dChsYyk7CisKKwkJc3dpdGNoIChub2RlVGFnKGVsdCkpCisJCXsKKwkJCWNhc2UgVF9Db2x1bW5E ZWY6CisJCQkJeworCQkJCQlPYmpUcmVlICAgICp0cmVlOworCisJCQkJCXRyZWUgPSB0eXBlZCA/ CisJCQkJCQlkZXBhcnNlX0NvbHVtbkRlZl90eXBlZChyZWxhdGlvbiwgZHBjb250ZXh0LAorCQkJ CQkJCQkJCQkJKENvbHVtbkRlZiAqKSBlbHQpIDoKKwkJCQkJCWRlcGFyc2VfQ29sdW1uRGVmKHJl bGF0aW9uLCBkcGNvbnRleHQsCisJCQkJCQkJCQkJICBjb21wb3NpdGUsIChDb2x1bW5EZWYgKikg ZWx0LAorCQkJCQkJCQkJCSAgZmFsc2UsIE5VTEwpOworCQkJCQlpZiAodHJlZSAhPSBOVUxMKQor CQkJCQkJZWxlbWVudHMgPSBsYXBwZW5kKGVsZW1lbnRzLCBuZXdfb2JqZWN0X29iamVjdCh0cmVl KSk7CisJCQkJfQorCQkJCWJyZWFrOworCQkJY2FzZSBUX0NvbnN0cmFpbnQ6CisJCQkJYnJlYWs7 CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIG5vZGUgdHlwZSAlZCIsIG5v ZGVUYWcoZWx0KSk7CisJCX0KKwl9CisKKwlyZXR1cm4gZWxlbWVudHM7Cit9CisKKy8qCisgKiBE ZXBhcnNlIGEgQ3JlYXRlU3RtdCAoQ1JFQVRFIFRBQkxFKS4KKyAqCisgKiBHaXZlbiBhIHRhYmxl IE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJl ZQorICogcmVwcmVzZW50aW5nIHRoZSBjcmVhdGlvbiBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ug c3ludGF4CisgKiBDUkVBVEUgJXtwZXJzaXN0ZW5jZX1zIFRBQkxFICV7aWZfbm90X2V4aXN0c31z ICV7aWRlbnRpdHl9RCBbT0YKKyAqICV7b2ZfdHlwZX1UIHwgUEFSVElUSU9OIE9GICV7cGFyZW50 X2lkZW50aXR5fURdICV7dGFibGVfZWxlbWVudHN9cworICogJXtpbmhlcml0c31zICV7cGFydGl0 aW9uX2J5fXMgJXthY2Nlc3NfbWV0aG9kfXMgJXt3aXRoX2NsYXVzZX1zCisgKiAle29uX2NvbW1p dH1zICV7dGFibGVzcGFjZX1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRl U3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlDcmVhdGVTdG10ICpub2Rl ID0gKENyZWF0ZVN0bXQgKikgcGFyc2V0cmVlOworCVJlbGF0aW9uCXJlbGF0aW9uID0gcmVsYXRp b25fb3BlbihvYmplY3RJZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlMaXN0CSAgICpkcGNvbnRleHQ7 CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKnRtcF9vYmo7CisJTGlzdAkgICAqbGlz dCA9IE5JTDsKKwlMaXN0Q2VsbCAgICpjZWxsOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkNS RUFURSAle3BlcnNpc3RlbmNlfXMgVEFCTEUgJXtpZl9ub3RfZXhpc3RzfXMgJXtpZGVudGl0eX1E IiwgMywKKwkJCQkJCSAicGVyc2lzdGVuY2UiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIGdldF9w ZXJzaXN0ZW5jZV9zdHIocmVsYXRpb24tPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UpLAorCQkJCQkJ ICJpZl9ub3RfZXhpc3RzIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBub2RlLT5pZl9ub3RfZXhp c3RzID8gIklGIE5PVCBFWElTVFMiIDogIiIsCisJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9i amVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUocmVsYXRpb24tPnJkX3JlbC0+ cmVsbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxh dGlvbikpKTsKKworCWRwY29udGV4dCA9IGRlcGFyc2VfY29udGV4dF9mb3IoUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsYXRpb24pLAorCQkJCQkJCQkJb2JqZWN0SWQpOworCisJLyoKKwkgKiBU eXBlZCB0YWJsZXMgYW5kIHBhcnRpdGlvbnMgdXNlIGEgc2xpZ2h0bHkgZGlmZmVyZW50IGZvcm1h dCBzdHJpbmc6IHdlCisJICogbXVzdCBub3QgcHV0IHRhYmxlX2VsZW1lbnRzIHdpdGggcGFyZW50 cyBkaXJlY3RseSBpbiB0aGUgZm10IHN0cmluZywKKwkgKiBiZWNhdXNlIGlmIHRoZXJlIGFyZSBu byBvcHRpb25zIHRoZSBwYXJlbnRoZXNlcyBtdXN0IG5vdCBiZSBlbWl0dGVkOworCSAqIGFuZCBh bHNvLCB0eXBlZCB0YWJsZXMgZG8gbm90IGFsbG93IGZvciBpbmhlcml0YW5jZS4KKwkgKi8KKwlp ZiAobm9kZS0+b2ZUeXBlbmFtZSB8fCBub2RlLT5wYXJ0Ym91bmQpCisJeworCQlMaXN0CSAgICp0 YWJsZWVsdHMgPSBOSUw7CisKKwkJLyoKKwkJICogV2UgY2FuJ3QgcHV0IHRhYmxlIGVsZW1lbnRz IGRpcmVjdGx5IGluIHRoZSBmbXQgc3RyaW5nIGFzIGFuIGFycmF5CisJCSAqIHN1cnJvdW5kZWQg YnkgcGFyZW50aGVzZXMgaGVyZSwgYmVjYXVzZSBhbiBlbXB0eSBjbGF1c2Ugd291bGQgY2F1c2UK KwkJICogYSBzeW50YXggZXJyb3IuICBUaGVyZWZvcmUsIHdlIHVzZSBhbiBpbmRpcmVjdGlvbiBl bGVtZW50IGFuZCBzZXQKKwkJICogcHJlc2VudD1mYWxzZSB3aGVuIHRoZXJlIGFyZSBubyBlbGVt ZW50cy4KKwkJICovCisJCWlmIChub2RlLT5vZlR5cGVuYW1lKQorCQl7CisJCQl0bXBfb2JqID0g bmV3X29ianRyZWVfZm9yX3R5cGUocmVsYXRpb24tPnJkX3JlbC0+cmVsb2Z0eXBlLCAtMSk7CisJ CQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICJPRiAle29mX3R5cGV9VCIsIHRtcF9vYmopOwor CQl9CisJCWVsc2UKKwkJeworCQkJTGlzdAkgICAqcGFyZW50czsKKwkJCU9iakVsZW0gICAgKmVs ZW07CisKKwkJCXBhcmVudHMgPSBkZXBhcnNlX0luaFJlbGF0aW9ucyhvYmplY3RJZCk7CisJCQll bGVtID0gKE9iakVsZW0gKikgbGluaXRpYWwocGFyZW50cyk7CisKKwkJCUFzc2VydChsaXN0X2xl bmd0aChwYXJlbnRzKSA9PSAxKTsKKworCQkJYXBwZW5kX2Zvcm1hdF9zdHJpbmcocmV0LCAiUEFS VElUSU9OIE9GIik7CisKKwkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7cGFyZW50X2lk ZW50aXR5fUQiLAorCQkJCQkJCQkgZWxlbS0+dmFsdWUub2JqZWN0KTsKKwkJfQorCisJCXRhYmxl ZWx0cyA9IGRlcGFyc2VfVGFibGVFbGVtZW50cyhyZWxhdGlvbiwgbm9kZS0+dGFibGVFbHRzLCBk cGNvbnRleHQsCisJCQkJCQkJCQkJICB0cnVlLCAvKiB0eXBlZCB0YWJsZSAqLworCQkJCQkJCQkJ CSAgZmFsc2UpOwkvKiBub3QgY29tcG9zaXRlICovCisJCXRhYmxlZWx0cyA9IG9idGFpbkNvbnN0 cmFpbnRzKHRhYmxlZWx0cywgb2JqZWN0SWQsIEludmFsaWRPaWQsCisJCQkJCQkJCQkgIENvbnN0 ck9ialRhYmxlKTsKKworCQl0bXBfb2JqID0gbmV3X29ianRyZWUoIiIpOworCQlpZiAodGFibGVl bHRzKQorCQkJYXBwZW5kX2FycmF5X29iamVjdCh0bXBfb2JqLCAiKCV7ZWxlbWVudHM6LCB9cyki LCB0YWJsZWVsdHMpOworCQllbHNlCisJCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisK KwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXt0YWJsZV9lbGVtZW50c31zIiwgdG1wX29i aik7CisJfQorCWVsc2UKKwl7CisJCUxpc3QJICAgKnRhYmxlZWx0cyA9IE5JTDsKKworCQkvKgor CQkgKiBUaGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgTElLRSBjbGF1c2VzIHNlcGFyYXRlbHk7 IHRoZXkgaGF2ZQorCQkgKiBhbHJlYWR5IGJlZW4gdHJhbnNmb3JtZWQgaW50byBjb2x1bW5zIGFu ZCBjb25zdHJhaW50cy4KKwkJICovCisKKwkJLyoKKwkJICogUHJvY2VzcyB0YWJsZSBlbGVtZW50 czogY29sdW1uIGRlZmluaXRpb25zIGFuZCBjb25zdHJhaW50cy4gIE9ubHkKKwkJICogdGhlIGNv bHVtbiBkZWZpbml0aW9ucyBhcmUgb2J0YWluZWQgZnJvbSB0aGUgcGFyc2Ugbm9kZSBpdHNlbGYu ICBUbworCQkgKiBnZXQgY29uc3RyYWludHMgd2UgcmVseSBvbiBwZ19jb25zdHJhaW50LCBiZWNh dXNlIHRoZSBwYXJzZSBub2RlCisJCSAqIG1pZ2h0IGJlIG1pc3Npbmcgc29tZSB0aGluZ3Mgc3Vj aCBhcyB0aGUgbmFtZSBvZiB0aGUgY29uc3RyYWludHMuCisJCSAqLworCQl0YWJsZWVsdHMgPSBk ZXBhcnNlX1RhYmxlRWxlbWVudHMocmVsYXRpb24sIG5vZGUtPnRhYmxlRWx0cywgZHBjb250ZXh0 LAorCQkJCQkJCQkJCSAgZmFsc2UsCS8qIG5vdCB0eXBlZCB0YWJsZSAqLworCQkJCQkJCQkJCSAg ZmFsc2UpOwkvKiBub3QgY29tcG9zaXRlICovCisJCXRhYmxlZWx0cyA9IG9idGFpbkNvbnN0cmFp bnRzKHRhYmxlZWx0cywgb2JqZWN0SWQsIEludmFsaWRPaWQsCisJCQkJCQkJCQkgIENvbnN0ck9i alRhYmxlKTsKKworCQlpZiAodGFibGVlbHRzKQorCQkJYXBwZW5kX2FycmF5X29iamVjdChyZXQs ICIoJXt0YWJsZV9lbGVtZW50czosIH1zKSIsIHRhYmxlZWx0cyk7CisJCWVsc2UKKwkJCWFwcGVu ZF9mb3JtYXRfc3RyaW5nKHJldCwgIigpIik7CisKKwkJLyoKKwkJICogQWRkIGluaGVyaXRhbmNl IHNwZWNpZmljYXRpb24uICBXZSBjYW5ub3Qgc2ltcGx5IHNjYW4gdGhlIGxpc3Qgb2YKKwkJICog cGFyZW50cyBmcm9tIHRoZSBwYXJzZXIgbm9kZSwgYmVjYXVzZSB0aGF0IG1heSBsYWNrIHRoZSBh Y3R1YWwKKwkJICogcXVhbGlmaWVkIG5hbWVzIG9mIHRoZSBwYXJlbnQgcmVsYXRpb25zLiAgUmF0 aGVyIHRoYW4gdHJ5aW5nIHRvCisJCSAqIHJlLXJlc29sdmUgdGhlbSBmcm9tIHRoZSBpbmZvcm1h dGlvbiBpbiB0aGUgcGFyc2Ugbm9kZSwgaXQgc2VlbXMKKwkJICogbW9yZSBhY2N1cmF0ZSBhbmQg Y29udmVuaWVudCB0byBncmFiIGl0IGZyb20gcGdfaW5oZXJpdHMuCisJCSAqLworCQl0bXBfb2Jq ID0gbmV3X29ianRyZWUoIklOSEVSSVRTIik7CisJCWlmIChub2RlLT5pbmhSZWxhdGlvbnMgIT0g TklMKQorCQkJYXBwZW5kX2FycmF5X29iamVjdCh0bXBfb2JqLCAiKCV7cGFyZW50czosIH1EKSIs IGRlcGFyc2VfSW5oUmVsYXRpb25zKG9iamVjdElkKSk7CisJCWVsc2UKKwkJeworCQkJYXBwZW5k X251bGxfb2JqZWN0KHRtcF9vYmosICIoJXtwYXJlbnRzOiwgfUQpIik7CisJCQlhcHBlbmRfbm90 X3ByZXNlbnQodG1wX29iaik7CisJCX0KKwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtp bmhlcml0c31zIiwgdG1wX29iaik7CisJfQorCisJLyogRk9SIFZBTFVFUyBjbGF1c2UgKi8KKwlp ZiAobm9kZS0+cGFydGJvdW5kKQorCXsKKwkJLyoKKwkJICogR2V0IHBnX2NsYXNzLnJlbHBhcnRi b3VuZC4gV2UgY2Fubm90IHVzZSBwYXJ0Ym91bmQgaW4gdGhlIHBhcnNldHJlZQorCQkgKiBkaXJl Y3RseSBhcyBpdCdzIHRoZSBvcmlnaW5hbCBwYXJ0Ym91bmQgZXhwcmVzc2lvbiB3aGljaCBoYXZl bid0CisJCSAqIGJlZW4gdHJhbnNmb3JtZWQuCisJCSAqLworCQlhcHBlbmRfc3RyaW5nX29iamVj dChyZXQsICIle3BhcnRpdGlvbl9ib3VuZH1zIiwgInBhcnRpdGlvbl9ib3VuZCIsCisJCQkJCQkJ IFJlbGF0aW9uR2V0UGFydGl0aW9uQm91bmQob2JqZWN0SWQpKTsKKwl9CisKKwkvKiBQQVJUSVRJ T04gQlkgY2xhdXNlICovCisJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJQQVJUSVRJT04gQlkiKTsK KwlpZiAocmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXBfb2JqLCAiJXtkZWZpbml0aW9ufXMiLCAi ZGVmaW5pdGlvbiIsCisJCQkJCQkJIHBnX2dldF9wYXJ0a2V5ZGVmX3N0cmluZyhvYmplY3RJZCkp OworCWVsc2UKKwl7CisJCWFwcGVuZF9udWxsX29iamVjdCh0bXBfb2JqLCAiJXtkZWZpbml0aW9u fXMiKTsKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOworCX0KKwlhcHBlbmRfb2JqZWN0 X29iamVjdChyZXQsICIle3BhcnRpdGlvbl9ieX1zIiwgdG1wX29iaik7CisKKwkvKiBVU0lORyBj bGF1c2UgKi8KKwl0bXBfb2JqID0gbmV3X29ianRyZWUoIlVTSU5HIik7CisJaWYgKG5vZGUtPmFj Y2Vzc01ldGhvZCkKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wX29iaiwgIiV7YWNjZXNzX21l dGhvZH1JIiwgImFjY2Vzc19tZXRob2QiLAorCQkJCQkJCSBub2RlLT5hY2Nlc3NNZXRob2QpOwor CWVsc2UKKwl7CisJCWFwcGVuZF9udWxsX29iamVjdCh0bXBfb2JqLCAiJXthY2Nlc3NfbWV0aG9k fUkiKTsKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOworCX0KKwlhcHBlbmRfb2JqZWN0 X29iamVjdChyZXQsICIle2FjY2Vzc19tZXRob2R9cyIsIHRtcF9vYmopOworCisJLyogV0lUSCBj bGF1c2UgKi8KKwl0bXBfb2JqID0gbmV3X29ianRyZWUoIldJVEgiKTsKKworCWZvcmVhY2goY2Vs bCwgbm9kZS0+b3B0aW9ucykKKwl7CisJCU9ialRyZWUgICAgKnRtcF9vYmoyOworCQlEZWZFbGVt ICAgICpvcHQgPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7CisKKwkJdG1wX29iajIgPSBkZXBh cnNlX0RlZkVsZW0ob3B0LCBmYWxzZSk7CisJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmpl Y3Rfb2JqZWN0KHRtcF9vYmoyKSk7CisJfQorCisJaWYgKGxpc3QpCisJCWFwcGVuZF9hcnJheV9v YmplY3QodG1wX29iaiwgIigle3dpdGg6LCB9cykiLCBsaXN0KTsKKwllbHNlCisJCWFwcGVuZF9u b3RfcHJlc2VudCh0bXBfb2JqKTsKKworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7d2l0 aF9jbGF1c2V9cyIsIHRtcF9vYmopOworCisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtv bl9jb21taXR9cyIsCisJCQkJCQkgZGVwYXJzZV9PbkNvbW1pdENsYXVzZShub2RlLT5vbmNvbW1p dCkpOworCisJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJUQUJMRVNQQUNFIik7CisJaWYgKG5vZGUt PnRhYmxlc3BhY2VuYW1lKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXBfb2JqLCAiJXt0YWJs ZXNwYWNlfUkiLCAidGFibGVzcGFjZSIsCisJCQkJCQkJIG5vZGUtPnRhYmxlc3BhY2VuYW1lKTsK KwllbHNlCisJeworCQlhcHBlbmRfbnVsbF9vYmplY3QodG1wX29iaiwgIiV7dGFibGVzcGFjZX1J Iik7CisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXBfb2JqKTsKKwl9CisJYXBwZW5kX29iamVjdF9v YmplY3QocmV0LCAiJXt0YWJsZXNwYWNlfXMiLCB0bXBfb2JqKTsKKworCXJlbGF0aW9uX2Nsb3Nl KHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAq IERlcGFyc2UgQ1JFQVRFIFRBQkxFIEFTIGNvbW1hbmQuCisgKgorICogZGVwYXJzZV9DcmVhdGVT dG10IGRvIHRoZSBhY3R1YWwgd29yayBhcyB3ZSBkZXBhcnNlIHRoZSBmaW5hbCBDcmVhdGVTdG10 IGZvcgorICogQ1JFQVRFIFRBQkxFIEFTIGNvbW1hbmQuCisgKi8KK3N0YXRpYyBPYmpUcmVlICoK K2RlcGFyc2VfQ3JlYXRlVGFibGVBc1N0bXQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQoreworCU9p ZAkJCW9iamVjdElkOworCU5vZGUJICAgKnBhcnNldHJlZTsKKworCUFzc2VydChjbWQtPnR5cGUg PT0gU0NUX0NyZWF0ZVRhYmxlQXMpOworCisJcGFyc2V0cmVlID0gY21kLT5kLmN0YXMucmVhbF9j cmVhdGU7CisJb2JqZWN0SWQgPSBjbWQtPmQuY3Rhcy5hZGRyZXNzLm9iamVjdElkOworCisJcmV0 dXJuIGRlcGFyc2VfQ3JlYXRlU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKK30KKworLyoKKyAq IERlcGFyc2UgYWxsIHRoZSBjb2xsZWN0ZWQgc3ViY29tbWFuZHMgYW5kIHJldHVybiBhbiBPYmpU cmVlIHJlcHJlc2VudGluZyB0aGUKKyAqIGFsdGVyIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBz eW50YXgKKyAqIEFMVEVSIHJlbHR5cGUgJXtvbmx5fXMgJXtpZGVudGl0eX1EICV7c3ViY21kczos IH1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJSZWxhdGlvbihDb2xsZWN0 ZWRDb21tYW5kICpjbWQpCit7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKnRtcF9v Ymo7CisJT2JqVHJlZSAgICAqdG1wX29iajI7CisJTGlzdAkgICAqZHBjb250ZXh0OworCVJlbGF0 aW9uCXJlbDsKKwlMaXN0CSAgICpzdWJjbWRzID0gTklMOworCUxpc3RDZWxsICAgKmNlbGw7CisJ Y29uc3QgY2hhciAqcmVsdHlwZTsKKwlib29sCQlpc3R5cGUgPSBmYWxzZTsKKwlMaXN0CSAgICpl eHBycyA9IE5JTDsKKwlPaWQJCQlyZWxJZCA9IGNtZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkOwor CUFsdGVyVGFibGVTdG10ICpzdG10ID0gTlVMTDsKKworCUFzc2VydChjbWQtPnR5cGUgPT0gU0NU X0FsdGVyVGFibGUpOworCXN0bXQgPSAoQWx0ZXJUYWJsZVN0bXQgKikgY21kLT5wYXJzZXRyZWU7 CisJQXNzZXJ0KElzQShzdG10LCBBbHRlclRhYmxlU3RtdCkpOworCisJLyoKKwkgKiBBTFRFUiBU QUJMRSBzdWJjb21tYW5kcyBnZW5lcmF0ZWQgZm9yIFRhYmxlTGlrZUNsYXVzZSBpcyBwcm9jZXNz ZWQgaW4KKwkgKiB0aGUgdG9wIGxldmVsIENSRUFURSBUQUJMRSBjb21tYW5kOyByZXR1cm4gZW1w dHkgaGVyZS4KKwkgKi8KKwlpZiAoc3RtdC0+dGFibGVfbGlrZSkKKwkJcmV0dXJuIE5VTEw7CisK KwlyZWwgPSByZWxhdGlvbl9vcGVuKHJlbElkLCBBY2Nlc3NTaGFyZUxvY2spOworCWRwY29udGV4 dCA9IGRlcGFyc2VfY29udGV4dF9mb3IoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwKKwkJ CQkJCQkJCXJlbElkKTsKKworCXN3aXRjaCAocmVsLT5yZF9yZWwtPnJlbGtpbmQpCisJeworCQlj YXNlIFJFTEtJTkRfUkVMQVRJT046CisJCWNhc2UgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRToK KwkJCXJlbHR5cGUgPSAiVEFCTEUiOworCQkJYnJlYWs7CisJCWNhc2UgUkVMS0lORF9JTkRFWDoK KwkJY2FzZSBSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVYOgorCQkJcmVsdHlwZSA9ICJJTkRFWCI7 CisJCQlicmVhazsKKwkJY2FzZSBSRUxLSU5EX1ZJRVc6CisJCQlyZWx0eXBlID0gIlZJRVciOwor CQkJYnJlYWs7CisJCWNhc2UgUkVMS0lORF9DT01QT1NJVEVfVFlQRToKKwkJCXJlbHR5cGUgPSAi VFlQRSI7CisJCQlpc3R5cGUgPSB0cnVlOworCQkJYnJlYWs7CisJCWNhc2UgUkVMS0lORF9GT1JF SUdOX1RBQkxFOgorCQkJcmVsdHlwZSA9ICJGT1JFSUdOIFRBQkxFIjsKKwkJCWJyZWFrOworCQlj YXNlIFJFTEtJTkRfTUFUVklFVzoKKwkJCXJlbHR5cGUgPSAiTUFURVJJQUxJWkVEIFZJRVciOwor CQkJYnJlYWs7CisKKwkJCS8qIFRPRE8gc3VwcG9ydCBmb3IgcGFydGl0aW9uZWQgdGFibGUgKi8K KworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgcmVsa2luZCAlZCIsIHJl bC0+cmRfcmVsLT5yZWxraW5kKTsKKwl9CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIg JXtvYmp0eXBlfXMgJXtpZGVudGl0eX1EIiwgMiwKKwkJCQkJCSAib2JqdHlwZSIsIE9ialR5cGVT dHJpbmcsIHJlbHR5cGUsCisJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJ CSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUocmVsLT5yZF9yZWwtPnJlbG5hbWVzcGFjZSwKKwkJ CQkJCQkJCQkJCSAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpOworCisJZm9yZWFjaChj ZWxsLCBjbWQtPmQuYWx0ZXJUYWJsZS5zdWJjbWRzKQorCXsKKwkJQ29sbGVjdGVkQVRTdWJjbWQg KnN1YiA9IChDb2xsZWN0ZWRBVFN1YmNtZCAqKSBsZmlyc3QoY2VsbCk7CisJCUFsdGVyVGFibGVD bWQgKnN1YmNtZCA9IChBbHRlclRhYmxlQ21kICopIHN1Yi0+cGFyc2V0cmVlOworCQlPYmpUcmVl ICAgICp0cmVlOworCisJCUFzc2VydChJc0Eoc3ViY21kLCBBbHRlclRhYmxlQ21kKSk7CisKKwkg ICAvKgorCQkqIElmIHRoZSBBTFRFUiBUQUJMRSBjb21tYW5kIGZvciB0aGUgcGFyZW50IHRhYmxl IGluY2x1ZGVzIHN1YmNvbW1hbmRzCisJCSogZm9yIGNoaWxkIHRhYmxlKHMpLCBkbyBub3QgZGVw YXJzZSB0aGUgc3ViY29tbWFuZCBmb3IgY2hpbGQKKwkJKiB0YWJsZShzKS4KKwkJKi8KKwkJaWYg KHN1Yi0+YWRkcmVzcy5vYmplY3RJZCAhPSByZWxJZCAmJgorCQkJaGFzX3N1cGVyY2xhc3Moc3Vi LT5hZGRyZXNzLm9iamVjdElkKSkKKwkJCWNvbnRpbnVlOworCisJCXN3aXRjaCAoc3ViY21kLT5z dWJ0eXBlKQorCQl7CisJCQljYXNlIEFUX0FkZENvbHVtbjoKKwkJCQkvKiBYWFggbmVlZCB0byBz ZXQgdGhlICJyZWN1cnNlIiBiaXQgc29tZXdoZXJlPyAqLworCQkJCUFzc2VydChJc0Eoc3ViY21k LT5kZWYsIENvbHVtbkRlZikpOworCQkJCXRyZWUgPSBkZXBhcnNlX0NvbHVtbkRlZihyZWwsIGRw Y29udGV4dCwgZmFsc2UsCisJCQkJCQkJCQkJIChDb2x1bW5EZWYgKikgc3ViY21kLT5kZWYsIHRy dWUsICZleHBycyk7CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJBREQgJXtvYmp0eXBl fXMgJXtpZl9ub3RfZXhpc3RzfXMgJXtkZWZpbml0aW9ufXMiLCA0LAorCQkJCQkJCQkJCSJvYmp0 eXBlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQlpc3R5cGUgPyAiQVRUUklCVVRFIiA6ICJD T0xVTU4iLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImFkZCBjb2x1bW4iLAor CQkJCQkJCQkJCSJpZl9ub3RfZXhpc3RzIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQlzdWJj bWQtPm1pc3Npbmdfb2sgPyAiSUYgTk9UIEVYSVNUUyIgOiAiIiwKKwkJCQkJCQkJCQkiZGVmaW5p dGlvbiIsIE9ialR5cGVPYmplY3QsIHRyZWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNt ZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBB VF9BZGRJbmRleENvbnN0cmFpbnQ6CisJCQkJeworCQkJCQlJbmRleFN0bXQgICppc3RtdDsKKwkJ CQkJUmVsYXRpb24JaWR4OworCQkJCQlPaWQJCQljb25zdHJPaWQgPSBzdWItPmFkZHJlc3Mub2Jq ZWN0SWQ7CisKKwkJCQkJQXNzZXJ0KElzQShzdWJjbWQtPmRlZiwgSW5kZXhTdG10KSk7CisJCQkJ CWlzdG10ID0gKEluZGV4U3RtdCAqKSBzdWJjbWQtPmRlZjsKKworCQkJCQlBc3NlcnQoaXN0bXQt PmlzY29uc3RyYWludCAmJiBpc3RtdC0+dW5pcXVlKTsKKworCQkJCQlpZHggPSByZWxhdGlvbl9v cGVuKGlzdG10LT5pbmRleE9pZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQkJCQkvKgorCQkJCQkg KiBWZXJib3NlIHN5bnRheAorCQkJCQkgKgorCQkJCQkgKiBBREQgQ09OU1RSQUlOVCAle25hbWV9 SSAle2NvbnN0cmFpbnRfdHlwZX1zIFVTSU5HIElOREVYCisJCQkJCSAqICVpbmRleF9uYW1lfUkg JXtkZWZlcnJhYmxlfXMgJXtpbml0X2RlZmVycmVkfXMKKwkJCQkJICovCisJCQkJCXRtcF9vYmog PSBuZXdfb2JqdHJlZV9WQSgiQUREIENPTlNUUkFJTlQgJXtuYW1lfUkgJXtjb25zdHJhaW50X3R5 cGV9cyBVU0lORyBJTkRFWCAle2luZGV4X25hbWV9SSAle2RlZmVycmFibGV9cyAle2luaXRfZGVm ZXJyZWR9cyIsIDYsCisJCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImFkZCBjb25z dHJhaW50IHVzaW5nIGluZGV4IiwKKwkJCQkJCQkJCQkJIm5hbWUiLCBPYmpUeXBlU3RyaW5nLCBn ZXRfY29uc3RyYWludF9uYW1lKGNvbnN0ck9pZCksCisJCQkJCQkJCQkJCSJjb25zdHJhaW50X3R5 cGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCQlpc3RtdC0+cHJpbWFyeSA/ICJQUklNQVJZ IEtFWSIgOiAiVU5JUVVFIiwKKwkJCQkJCQkJCQkJImluZGV4X25hbWUiLCBPYmpUeXBlU3RyaW5n LAorCQkJCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpZHgpLAorCQkJCQkJCQkJCQki ZGVmZXJyYWJsZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJCWlzdG10LT5kZWZlcnJhYmxl ID8gIkRFRkVSUkFCTEUiIDogIk5PVCBERUZFUlJBQkxFIiwKKwkJCQkJCQkJCQkJImluaXRfZGVm ZXJyZWQiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCQlpc3RtdC0+aW5pdGRlZmVycmVkID8g IklOSVRJQUxMWSBERUZFUlJFRCIgOiAiSU5JVElBTExZIElNTUVESUFURSIpOworCisJCQkJCXN1 YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwor CQkJCQlyZWxhdGlvbl9jbG9zZShpZHgsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJfQorCQkJCWJy ZWFrOworCisJCQljYXNlIEFUX1JlQWRkSW5kZXg6CisJCQljYXNlIEFUX1JlQWRkQ29uc3RyYWlu dDoKKwkJCWNhc2UgQVRfUmVBZGREb21haW5Db25zdHJhaW50OgorCQkJY2FzZSBBVF9SZUFkZENv bW1lbnQ6CisJCQljYXNlIEFUX1JlcGxhY2VSZWxPcHRpb25zOgorCQkJY2FzZSBBVF9DaGVja05v dE51bGw6CisJCQljYXNlIEFUX1JlQWRkU3RhdGlzdGljczoKKwkJCQkvKiBTdWJ0eXBlcyB1c2Vk IGZvciBpbnRlcm5hbCBvcGVyYXRpb25zOyBub3RoaW5nIHRvIGRvIGhlcmUgKi8KKwkJCQlicmVh azsKKworCQkJY2FzZSBBVF9Db29rZWRDb2x1bW5EZWZhdWx0OgorCQkJCXsKKwkJCQkJUmVsYXRp b24JYXR0cnJlbDsKKwkJCQkJSGVhcFR1cGxlCWF0dHR1cDsKKwkJCQkJRm9ybV9wZ19hdHRyaWJ1 dGUgYXR0U3RydWN0OworCisJCQkJCWF0dHJyZWwgPSB0YWJsZV9vcGVuKEF0dHJpYnV0ZVJlbGF0 aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCQkJCQlhdHR0dXAgPSBTZWFyY2hTeXNDYWNoZUNv cHkyKEFUVE5VTSwKKwkJCQkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKFJlbGF0aW9uR2V0UmVs aWQocmVsKSksCisJCQkJCQkJCQkJCQkgSW50MTZHZXREYXR1bShzdWJjbWQtPm51bSkpOworCQkJ CQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoYXR0dHVwKSkKKwkJCQkJCWVsb2coRVJST1IsICJjYWNo ZSBsb29rdXAgZmFpbGVkIGZvciBhdHRyaWJ1dGUgJWQgb2YgcmVsYXRpb24gd2l0aCBPSUQgJXUi LAorCQkJCQkJCSBzdWJjbWQtPm51bSwgUmVsYXRpb25HZXRSZWxpZChyZWwpKTsKKwkJCQkJYXR0 U3RydWN0ID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1QoYXR0dHVwKTsKKworCQkJCQkv KgorCQkJCQkgKiBCb3RoIGRlZmF1bHQgYW5kIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBub3Qgc3Vw cG9ydGVkCisJCQkJCSAqIHRvZ2V0aGVyLgorCQkJCQkgKi8KKwkJCQkJaWYgKCFhdHRTdHJ1Y3Qt PmF0dGdlbmVyYXRlZCkKKwkJCQkJCWVsb2coV0FSTklORywgInVuc3VwcG9ydGVkIGFsdGVyIHRh YmxlIHN1YnR5cGUgJWQiLAorCQkJCQkJCSBzdWJjbWQtPnN1YnR5cGUpOworCisJCQkJCWhlYXBf ZnJlZXR1cGxlKGF0dHR1cCk7CisJCQkJCXRhYmxlX2Nsb3NlKGF0dHJyZWwsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCWNhc2UgQVRfQWRkQ29sdW1uVG9WaWV3 OgorCQkJCS8qIENSRUFURSBPUiBSRVBMQUNFIFZJRVcgLS0gbm90aGluZyB0byBkbyBoZXJlICov CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfQ29sdW1uRGVmYXVsdDoKKwkJCQlpZiAoc3ViY21k LT5kZWYgPT0gTlVMTCkKKwkJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBDT0xV TU4gJXtjb2x1bW59SSBEUk9QIERFRkFVTFQiLCAyLAorCQkJCQkJCQkJCQkidHlwZSIsIE9ialR5 cGVTdHJpbmcsICJkcm9wIGRlZmF1bHQiLAorCQkJCQkJCQkJCQkiY29sdW1uIiwgT2JqVHlwZVN0 cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQllbHNlCisJCQkJeworCQkJCQlMaXN0CSAgICpkcGNv bnRleHRfcmVsOworCQkJCQlIZWFwVHVwbGUJYXR0cnR1cDsKKwkJCQkJQXR0ck51bWJlcglhdHRu bzsKKworCQkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIENPTFVNTiAle2NvbHVt bn1JIFNFVCBERUZBVUxUIiwgMiwKKwkJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAi c2V0IGRlZmF1bHQiLAorCQkJCQkJCQkJCQkiY29sdW1uIiwgT2JqVHlwZVN0cmluZywgc3ViY21k LT5uYW1lKTsKKworCQkJCQlkcGNvbnRleHRfcmVsID0gZGVwYXJzZV9jb250ZXh0X2ZvcihSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLAorCQkJCQkJCQkJCQkJCQlSZWxhdGlvbkdldFJlbGlk KHJlbCkpOworCQkJCQlhdHRydHVwID0gU2VhcmNoU3lzQ2FjaGVBdHROYW1lKFJlbGF0aW9uR2V0 UmVsaWQocmVsKSwgc3ViY21kLT5uYW1lKTsKKwkJCQkJYXR0bm8gPSAoKEZvcm1fcGdfYXR0cmli dXRlKSBHRVRTVFJVQ1QoYXR0cnR1cCkpLT5hdHRudW07CisJCQkJCWFwcGVuZF9zdHJpbmdfb2Jq ZWN0KHRtcF9vYmosICIle2RlZmluaXRpb259cyIsICJkZWZpbml0aW9uIiwKKwkJCQkJCQkJCQkg UmVsYXRpb25HZXRDb2x1bW5EZWZhdWx0KHJlbCwgYXR0bm8sCisJCQkJCQkJCQkJCQkJCQkJICBk cGNvbnRleHRfcmVsLAorCQkJCQkJCQkJCQkJCQkJCSAgTlVMTCkpOworCQkJCQlSZWxlYXNlU3lz Q2FjaGUoYXR0cnR1cCk7CisJCQkJfQorCisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywg bmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Ry b3BOb3ROdWxsOgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgQ09MVU1OICV7 Y29sdW1ufUkgRFJPUCBOT1QgTlVMTCIsIDIsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3Ry aW5nLCAiZHJvcCBub3QgbnVsbCIsCisJCQkJCQkJCQkJImNvbHVtbiIsIE9ialR5cGVTdHJpbmcs IHN1YmNtZC0+bmFtZSk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVj dF9vYmplY3QodG1wX29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0ZvcmNlUm93U2Vj dXJpdHk6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJGT1JDRSBST1cgTEVWRUwgU0VDVVJJ VFkiKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0 bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfTm9Gb3JjZVJvd1NlY3VyaXR5Ogor CQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZSgiTk8gRk9SQ0UgUk9XIExFVkVMIFNFQ1VSSVRZIik7 CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29i aikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1NldE5vdE51bGw6CisJCQkJdG1wX29iaiA9 IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBTRVQgTk9UIE5VTEwiLCAy LAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgInNldCBub3QgbnVsbCIsCisJCQkJ CQkJCQkJImNvbHVtbiIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJc3ViY21k cyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJy ZWFrOworCisJCQljYXNlIEFUX0Ryb3BFeHByZXNzaW9uOgorCQkJCXRtcF9vYmogPSBuZXdfb2Jq dHJlZV9WQSgiQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgRFJPUCBFWFBSRVNTSU9OICV7aWZfZXhp c3RzfXMiLCAzLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRyb3AgZXhwcmVz c2lvbiIsCisJCQkJCQkJCQkJImNvbHVtbiIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+bmFtZSwK KwkJCQkJCQkJCQkiaWZfZXhpc3RzIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQlzdWJjbWQt Pm1pc3Npbmdfb2sgPyAiSUYgRVhJU1RTIiA6ICIiKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChz dWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNh c2UgQVRfU2V0U3RhdGlzdGljczoKKwkJCQl7CisJCQkJCUFzc2VydChJc0Eoc3ViY21kLT5kZWYs IEludGVnZXIpKTsKKwkJCQkJaWYgKHN1YmNtZC0+bmFtZSkKKwkJCQkJCXRtcF9vYmogPSBuZXdf b2JqdHJlZV9WQSgiQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgU0VUIFNUQVRJU1RJQ1MgJXtzdGF0 aXN0aWNzfW4iLCAzLAorCQkJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAic2V0IHN0 YXRpc3RpY3MiLAorCQkJCQkJCQkJCQkJImNvbHVtbiIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+ bmFtZSwKKwkJCQkJCQkJCQkJCSJzdGF0aXN0aWNzIiwgT2JqVHlwZUludGVnZXIsCisJCQkJCQkJ CQkJCQlpbnRWYWwoKEludGVnZXIgKikgc3ViY21kLT5kZWYpKTsKKwkJCQkJZWxzZQorCQkJCQkJ dG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBDT0xVTU4gJXtjb2x1bW59biBTRVQgU1RB VElTVElDUyAle3N0YXRpc3RpY3N9biIsIDMsCisJCQkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVT dHJpbmcsICJzZXQgc3RhdGlzdGljcyIsCisJCQkJCQkJCQkJCQkiY29sdW1uIiwgT2JqVHlwZUlu dGVnZXIsIHN1YmNtZC0+bnVtLAorCQkJCQkJCQkJCQkJInN0YXRpc3RpY3MiLCBPYmpUeXBlSW50 ZWdlciwKKwkJCQkJCQkJCQkJCWludFZhbCgoSW50ZWdlciAqKSBzdWJjbWQtPmRlZikpOworCQkJ CQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7 CisJCQkJfQorCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1NldE9wdGlvbnM6CisJCQljYXNlIEFU X1Jlc2V0T3B0aW9uczoKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0 X29iamVjdCgKKwkJCQkJCQkJCQkJCQkJCSBkZXBhcnNlX0NvbHVtblNldE9wdGlvbnMoc3ViY21k KSkpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1NldFN0b3JhZ2U6CisJCQkJQXNzZXJ0KElz QShzdWJjbWQtPmRlZiwgU3RyaW5nKSk7CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJB TFRFUiBDT0xVTU4gJXtjb2x1bW59SSBTRVQgU1RPUkFHRSAle3N0b3JhZ2V9cyIsIDMsCisJCQkJ CQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAic2V0IHN0b3JhZ2UiLAorCQkJCQkJCQkJCSJj b2x1bW4iLCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUsCisJCQkJCQkJCQkJInN0b3JhZ2Ui LCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCXN0clZhbCgoU3RyaW5nICopIHN1YmNtZC0+ZGVm KSk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1w X29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1NldENvbXByZXNzaW9uOgorCQkJCUFz c2VydChJc0Eoc3ViY21kLT5kZWYsIFN0cmluZykpOworCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJl ZV9WQSgiQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgU0VUIENPTVBSRVNTSU9OICV7Y29tcHJlc3Np b25fbWV0aG9kfXMiLCAzLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgInNldCBj b21wcmVzc2lvbiIsCisJCQkJCQkJCQkJImNvbHVtbiIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+ bmFtZSwKKwkJCQkJCQkJCQkiY29tcHJlc3Npb25fbWV0aG9kIiwgT2JqVHlwZVN0cmluZywKKwkJ CQkJCQkJCQlzdHJWYWwoKFN0cmluZyAqKSBzdWJjbWQtPmRlZikpOworCQkJCXN1YmNtZHMgPSBs YXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsK KworCQkJY2FzZSBBVF9Ecm9wQ29sdW1uOgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgi RFJPUCAle29ianR5cGV9cyAle2lmX2V4aXN0c31zICV7Y29sdW1ufUkiLCA0LAorCQkJCQkJCQkJ CSJvYmp0eXBlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQlpc3R5cGUgPyAiQVRUUklCVVRF IiA6ICJDT0xVTU4iLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRyb3AgY29s dW1uIiwKKwkJCQkJCQkJCQkiaWZfZXhpc3RzIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQlz dWJjbWQtPm1pc3Npbmdfb2sgPyAiSUYgRVhJU1RTIiA6ICIiLAorCQkJCQkJCQkJCSJjb2x1bW4i LCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXRtcF9vYmoyID0gbmV3X29ianRy ZWVfVkEoIkNBU0NBREUiLCAxLAorCQkJCQkJCQkJCSAicHJlc2VudCIsIE9ialR5cGVCb29sLCBz dWJjbWQtPmJlaGF2aW9yKTsKKwkJCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2JqLCAiJXtj YXNjYWRlfXMiLCB0bXBfb2JqMik7CisKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBu ZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfQWRk SW5kZXg6CisJCQkJeworCQkJCQlPaWQJCQlpZHhPaWQgPSBzdWItPmFkZHJlc3Mub2JqZWN0SWQ7 CisJCQkJCUluZGV4U3RtdCAgKmlzdG10OworCQkJCQlSZWxhdGlvbglpZHg7CisJCQkJCWNvbnN0 IGNoYXIgKmlkeG5hbWU7CisJCQkJCU9pZAkJCWNvbnN0ck9pZDsKKworCQkJCQlBc3NlcnQoSXNB KHN1YmNtZC0+ZGVmLCBJbmRleFN0bXQpKTsKKwkJCQkJaXN0bXQgPSAoSW5kZXhTdG10ICopIHN1 YmNtZC0+ZGVmOworCisJCQkJCWlmICghaXN0bXQtPmlzY29uc3RyYWludCkKKwkJCQkJCWJyZWFr OworCisJCQkJCWlkeCA9IHJlbGF0aW9uX29wZW4oaWR4T2lkLCBBY2Nlc3NTaGFyZUxvY2spOwor CQkJCQlpZHhuYW1lID0gUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaWR4KTsKKworCQkJCQljb25z dHJPaWQgPSBnZXRfcmVsYXRpb25fY29uc3RyYWludF9vaWQoCisJCQkJCQkJCQkJCQkJCQljbWQt PmQuYWx0ZXJUYWJsZS5vYmplY3RJZCwgaWR4bmFtZSwgZmFsc2UpOworCisJCQkJCXRtcF9vYmog PSBuZXdfb2JqdHJlZV9WQSgiQUREIENPTlNUUkFJTlQgJXtuYW1lfUkgJXtkZWZpbml0aW9ufXMi LCAzLAorCQkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJhZGQgY29uc3RyYWludCIs CisJCQkJCQkJCQkJCSJuYW1lIiwgT2JqVHlwZVN0cmluZywgaWR4bmFtZSwKKwkJCQkJCQkJCQkJ ImRlZmluaXRpb24iLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCQlwZ19nZXRfY29uc3RyYWlu dGRlZl9zdHJpbmcoY29uc3RyT2lkKSk7CisJCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMs IG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKworCQkJCQlyZWxhdGlvbl9jbG9zZShpZHgs IEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJfQorCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0FkZENv bnN0cmFpbnQ6CisJCQkJeworCQkJCQkvKiBYWFggbmVlZCB0byBzZXQgdGhlICJyZWN1cnNlIiBi aXQgc29tZXdoZXJlPyAqLworCQkJCQlPaWQJCQljb25zdHJPaWQgPSBzdWItPmFkZHJlc3Mub2Jq ZWN0SWQ7CisJCQkJCWJvb2wJCWlzbnVsbDsKKwkJCQkJSGVhcFR1cGxlCXR1cDsKKwkJCQkJRGF0 dW0JCXZhbDsKKwkJCQkJQ29uc3RyYWludCAqY29uc3RyOworCisJCQkJCS8qIFNraXAgYWRkaW5n IGNvbnN0cmFpbnQgZm9yIGluaGVyaXRzIHRhYmxlIHN1YiBjb21tYW5kICovCisJCQkJCWlmICgh Y29uc3RyT2lkKQorCQkJCQkJY29udGludWU7CisKKwkJCQkJQXNzZXJ0KElzQShzdWJjbWQtPmRl ZiwgQ29uc3RyYWludCkpOworCQkJCQljb25zdHIgPSBjYXN0Tm9kZShDb25zdHJhaW50LCBzdWJj bWQtPmRlZik7CisKKwkJCQkJaWYgKCFjb25zdHItPnNraXBfdmFsaWRhdGlvbikKKwkJCQkJewor CQkJCQkJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKENPTlNUUk9JRCwgT2JqZWN0SWRHZXREYXR1bShj b25zdHJPaWQpKTsKKworCQkJCQkJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJCQkJCXsK KwkJCQkJCQljaGFyCSAgICpjb25iaW47CisKKwkJCQkJCQkvKiBGZXRjaCBjb25zdHJhaW50IGV4 cHJlc3Npb24gaW4gcGFyc2V0cmVlIGZvcm0gKi8KKwkJCQkJCQl2YWwgPSBTeXNDYWNoZUdldEF0 dHIoQ09OU1RST0lELCB0dXAsCisJCQkJCQkJCQkJCQkgIEFudW1fcGdfY29uc3RyYWludF9jb25i aW4sICZpc251bGwpOworCisJCQkJCQkJaWYgKCFpc251bGwpCisJCQkJCQkJeworCQkJCQkJCQlj b25iaW4gPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHZhbCk7CisJCQkJCQkJCWV4cHJzID0gbGFwcGVu ZChleHBycywgc3RyaW5nVG9Ob2RlKGNvbmJpbikpOworCQkJCQkJCX0KKworCQkJCQkJCVJlbGVh c2VTeXNDYWNoZSh0dXApOworCQkJCQkJfQorCQkJCQl9CisKKwkJCQkJdG1wX29iaiA9IG5ld19v Ymp0cmVlX1ZBKCJBREQgQ09OU1RSQUlOVCAle25hbWV9SSAle2RlZmluaXRpb259cyIsIDMsCisJ CQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImFkZCBjb25zdHJhaW50IiwKKwkJCQkJ CQkJCQkJIm5hbWUiLCBPYmpUeXBlU3RyaW5nLCBnZXRfY29uc3RyYWludF9uYW1lKGNvbnN0ck9p ZCksCisJCQkJCQkJCQkJCSJkZWZpbml0aW9uIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQkJ cGdfZ2V0X2NvbnN0cmFpbnRkZWZfc3RyaW5nKGNvbnN0ck9pZCkpOworCQkJCQlzdWJjbWRzID0g bGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJfQorCQkJ CWJyZWFrOworCisJCQljYXNlIEFUX0FsdGVyQ29uc3RyYWludDoKKwkJCQl7CisJCQkJCU9pZAkJ CWNvbnN0ck9pZCA9IHN1Yi0+YWRkcmVzcy5vYmplY3RJZDsKKwkJCQkJQ29uc3RyYWludCAqYyA9 IChDb25zdHJhaW50ICopIHN1YmNtZC0+ZGVmOworCisJCQkJCS8qIElmIG5vIGNvbnN0cmFpbnQg d2FzIGFsdGVyZWQsIHNpbGVudGx5IHNraXAgaXQgKi8KKwkJCQkJaWYgKCFPaWRJc1ZhbGlkKGNv bnN0ck9pZCkpCisJCQkJCQlicmVhazsKKworCQkJCQlBc3NlcnQoSXNBKGMsIENvbnN0cmFpbnQp KTsKKwkJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBDT05TVFJBSU5UICV7bmFt ZX1JICV7ZGVmZXJyYWJsZX1zICV7aW5pdF9kZWZlcnJlZH1zIiwgNCwKKwkJCQkJCQkJCQkJInR5 cGUiLCBPYmpUeXBlU3RyaW5nLCAiYWx0ZXIgY29uc3RyYWludCIsCisJCQkJCQkJCQkJCSJuYW1l IiwgT2JqVHlwZVN0cmluZywgZ2V0X2NvbnN0cmFpbnRfbmFtZShjb25zdHJPaWQpLAorCQkJCQkJ CQkJCQkiZGVmZXJyYWJsZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJCWMtPmRlZmVycmFi bGUgPyAiREVGRVJSQUJMRSIgOiAiTk9UIERFRkVSUkFCTEUiLAorCQkJCQkJCQkJCQkiaW5pdF9k ZWZlcnJlZCIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJCWMtPmluaXRkZWZlcnJlZCA/ICJJ TklUSUFMTFkgREVGRVJSRUQiIDogIklOSVRJQUxMWSBJTU1FRElBVEUiKTsKKworCQkJCQlzdWJj bWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJ fQorCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1ZhbGlkYXRlQ29uc3RyYWludDoKKwkJCQl0bXBf b2JqID0gbmV3X29ianRyZWVfVkEoIlZBTElEQVRFIENPTlNUUkFJTlQgJXtjb25zdHJhaW50fUki LCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgInZhbGlkYXRlIGNvbnN0cmFp bnQiLAorCQkJCQkJCQkJCSJjb25zdHJhaW50IiwgT2JqVHlwZVN0cmluZywgc3ViY21kLT5uYW1l KTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBf b2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRHJvcENvbnN0cmFpbnQ6CisJCQkJdG1w X29iaiA9IG5ld19vYmp0cmVlX1ZBKCJEUk9QIENPTlNUUkFJTlQgJXtpZl9leGlzdHN9cyAle2Nv bnN0cmFpbnR9SSAle2Nhc2NhZGV9cyIsIDQsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3Ry aW5nLCAiZHJvcCBjb25zdHJhaW50IiwKKwkJCQkJCQkJCQkiaWZfZXhpc3RzIiwgT2JqVHlwZVN0 cmluZywKKwkJCQkJCQkJCQlzdWJjbWQtPm1pc3Npbmdfb2sgPyAiSUYgRVhJU1RTIiA6ICIiLAor CQkJCQkJCQkJCSJjb25zdHJhaW50IiwgT2JqVHlwZVN0cmluZywgc3ViY21kLT5uYW1lLAorCQkJ CQkJCQkJCSJjYXNjYWRlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQlzdWJjbWQtPmJlaGF2 aW9yID09IERST1BfQ0FTQ0FERSA/ICJDQVNDQURFIiA6ICIiKTsKKwkJCQlzdWJjbWRzID0gbGFw cGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisK KwkJCWNhc2UgQVRfQWx0ZXJDb2x1bW5UeXBlOgorCQkJCXsKKwkJCQkJVHVwbGVEZXNjCXR1cGRl c2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CisJCQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dDsK KwkJCQkJQ29sdW1uRGVmICAqZGVmOworCisJCQkJCWF0dCA9ICYodHVwZGVzYy0+YXR0cnNbc3Vi LT5hZGRyZXNzLm9iamVjdFN1YklkIC0gMV0pOworCQkJCQlkZWYgPSAoQ29sdW1uRGVmICopIHN1 YmNtZC0+ZGVmOworCQkJCQlBc3NlcnQoSXNBKGRlZiwgQ29sdW1uRGVmKSk7CisKKwkJCQkJLyoK KwkJCQkJICogVmVyYm9zZSBzeW50YXgKKwkJCQkJICoKKwkJCQkJICogQ29tcG9zaXRlIHR5cGVz OiBBTFRFUiByZWx0eXBlICV7Y29sdW1ufUkgU0VUIERBVEEgVFlQRQorCQkJCQkgKiAle2RhdGF0 eXBlfVQgJXtjb2xsYXRpb259cyBBVFRSSUJVVEUgJXtjYXNjYWRlfXMKKwkJCQkJICoKKwkJCQkJ ICogTm9ybWFsIHR5cGVzOiBBTFRFUiByZWx0eXBlICV7Y29sdW1ufUkgU0VUIERBVEEgVFlQRQor CQkJCQkgKiAle2RhdGF0eXBlfVQgJXtjb2xsYXRpb259cyBDT0xVTU4gJXt1c2luZ31zCisJCQkJ CSAqLworCQkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkFMVEVSICV7b2JqdHlwZX1zICV7 Y29sdW1ufUkgU0VUIERBVEEgVFlQRSAle2RhdGF0eXBlfVQiLCA0LAorCQkJCQkJCQkJCQkib2Jq dHlwZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJCWlzdHlwZSA/ICJBVFRSSUJVVEUiIDog IkNPTFVNTiIsCisJCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImFsdGVyIGNvbHVt biB0eXBlIiwKKwkJCQkJCQkJCQkJImNvbHVtbiIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+bmFt ZSwKKwkJCQkJCQkJCQkJImRhdGF0eXBlIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJCQkJbmV3 X29ianRyZWVfZm9yX3R5cGUoYXR0LT5hdHR0eXBpZCwKKwkJCQkJCQkJCQkJCQkJCQkgYXR0LT5h dHR0eXBtb2QpKTsKKworCQkJCQkvKiBBZGQgYSBDT0xMQVRFIGNsYXVzZSwgaWYgbmVlZGVkICov CisJCQkJCXRtcF9vYmoyID0gbmV3X29ianRyZWUoIkNPTExBVEUiKTsKKwkJCQkJaWYgKE9pZElz VmFsaWQoYXR0LT5hdHRjb2xsYXRpb24pKQorCQkJCQl7CisJCQkJCQlPYmpUcmVlICAgICpjb2xs bmFtZTsKKworCQkJCQkJY29sbG5hbWUgPSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoQ29s bGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJCSAgIGF0dC0+YXR0Y29sbGF0aW9uKTsK KwkJCQkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmoyLCAiJXtuYW1lfUQiLCBjb2xsbmFt ZSk7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmoy KTsKKwkJCQkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7Y29sbGF0aW9ufXMiLCB0 bXBfb2JqMik7CisKKwkJCQkJLyogSWYgbm90IGEgY29tcG9zaXRlIHR5cGUsIGFkZCB0aGUgVVNJ TkcgY2xhdXNlICovCisJCQkJCWlmICghaXN0eXBlKQorCQkJCQl7CisJCQkJCQkvKgorCQkJCQkJ ICogSWYgdGhlcmUncyBhIFVTSU5HIGNsYXVzZSwgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQKKwkJ CQkJCSAqIHJhbiBpdCB0aHJvdWdoIHRyYW5zZm9ybUV4cHIgYW5kIHN0b3JlZCB0aGUKKwkJCQkJ CSAqIHJlc3VsdGluZyBub2RlIGluIGNvb2tlZF9kZWZhdWx0LCB3aGljaCB3ZSBjYW4gdXNlCisJ CQkJCQkgKiBoZXJlLgorCQkJCQkJICovCisJCQkJCQl0bXBfb2JqMiA9IG5ld19vYmp0cmVlKCJV U0lORyIpOworCQkJCQkJaWYgKGRlZi0+cmF3X2RlZmF1bHQpCisJCQkJCQkJYXBwZW5kX3N0cmlu Z19vYmplY3QodG1wX29iajIsICIle2V4cHJlc3Npb259cyIsCisJCQkJCQkJCQkJCQkgImV4cHJl c3Npb24iLAorCQkJCQkJCQkJCQkJIHN1Yi0+dXNpbmdleHByKTsKKwkJCQkJCWVsc2UKKwkJCQkJ CQlhcHBlbmRfbm90X3ByZXNlbnQodG1wX29iajIpOworCQkJCQkJYXBwZW5kX29iamVjdF9vYmpl Y3QodG1wX29iaiwgIiV7dXNpbmd9cyIsIHRtcF9vYmoyKTsKKwkJCQkJfQorCisJCQkJCS8qIElm IGl0J3MgYSBjb21wb3NpdGUgdHlwZSwgYWRkIHRoZSBDQVNDQURFIGNsYXVzZSAqLworCQkJCQlp ZiAoaXN0eXBlKQorCQkJCQl7CisJCQkJCQl0bXBfb2JqMiA9IG5ld19vYmp0cmVlKCJDQVNDQURF Iik7CisJCQkJCQlpZiAoc3ViY21kLT5iZWhhdmlvciAhPSBEUk9QX0NBU0NBREUpCisJCQkJCQkJ YXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmoyKTsKKwkJCQkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0 KHRtcF9vYmosICIle2Nhc2NhZGV9cyIsIHRtcF9vYmoyKTsKKwkJCQkJfQorCisJCQkJCXN1YmNt ZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQl9 CisJCQkJYnJlYWs7CisKKyNpZmRlZiBUT0RPTElTVAorCQkJY2FzZSBBVF9BbHRlckNvbHVtbkdl bmVyaWNPcHRpb25zOgorCQkJCXRtcF9vYmogPSBkZXBhcnNlX0Zkd09wdGlvbnMoKExpc3QgKikg c3ViY21kLT5kZWYsCisJCQkJCQkJCQkJCXN1YmNtZC0+bmFtZSk7CisJCQkJc3ViY21kcyA9IGxh cHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJyZWFrOwor I2VuZGlmCisJCQljYXNlIEFUX0NoYW5nZU93bmVyOgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJl ZV9WQSgiT1dORVIgVE8gJXtvd25lcn1JIiwgMiwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVT dHJpbmcsICJjaGFuZ2Ugb3duZXIiLAorCQkJCQkJCQkJCSJvd25lciIsIE9ialR5cGVTdHJpbmcs CisJCQkJCQkJCQkJZ2V0X3JvbGVzcGVjX25hbWUoc3ViY21kLT5uZXdvd25lcikpOworCQkJCXN1 YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJ CQlicmVhazsKKworCQkJY2FzZSBBVF9DbHVzdGVyT246CisJCQkJdG1wX29iaiA9IG5ld19vYmp0 cmVlX1ZBKCJDTFVTVEVSIE9OICV7aW5kZXh9SSIsIDIsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpU eXBlU3RyaW5nLCAiY2x1c3RlciBvbiIsCisJCQkJCQkJCQkJImluZGV4IiwgT2JqVHlwZVN0cmlu Zywgc3ViY21kLT5uYW1lKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2Jq ZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRHJvcENsdXN0 ZXI6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJTRVQgV0lUSE9VVCBDTFVTVEVSIiwg MSwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJzZXQgd2l0aG91dCBjbHVzdGVy Iik7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1w X29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1NldExvZ2dlZDoKKwkJCQl0bXBfb2Jq ID0gbmV3X29ianRyZWVfVkEoIlNFVCBMT0dHRUQiLCAxLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2Jq VHlwZVN0cmluZywgInNldCBsb2dnZWQiKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRz LCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRf U2V0VW5Mb2dnZWQ6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJTRVQgVU5MT0dHRUQi LCAxLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgInNldCB1bmxvZ2dlZCIpOwor CQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmop KTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9Ecm9wT2lkczoKKwkJCQl0bXBfb2JqID0gbmV3 X29ianRyZWVfVkEoIlNFVCBXSVRIT1VUIE9JRFMiLCAxLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2Jq VHlwZVN0cmluZywgInNldCB3aXRob3V0IG9pZHMiKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChz dWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisJCQljYXNl IEFUX1NldEFjY2Vzc01ldGhvZDoKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIlNFVCBB Q0NFU1MgTUVUSE9EICV7YWNjZXNzX21ldGhvZH1JIiwgMiwKKwkJCQkJCQkJCQkidHlwZSIsIE9i alR5cGVTdHJpbmcsICJzZXQgYWNjZXNzIG1ldGhvZCIsCisJCQkJCQkJCQkJImFjY2Vzc19tZXRo b2QiLCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5k KHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKwkJCWNh c2UgQVRfU2V0VGFibGVTcGFjZToKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIlNFVCBU QUJMRVNQQUNFICV7dGFibGVzcGFjZX1JIiwgMiwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVT dHJpbmcsICJzZXQgdGFibGVzcGFjZSIsCisJCQkJCQkJCQkJInRhYmxlc3BhY2UiLCBPYmpUeXBl U3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5l d19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9TZXRS ZWxPcHRpb25zOgorCQkJY2FzZSBBVF9SZXNldFJlbE9wdGlvbnM6CisJCQkJc3ViY21kcyA9IGxh cHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QoCisJCQkJCQkJCQkJCQkJCQkgZGVwYXJz ZV9SZWxTZXRPcHRpb25zKHN1YmNtZCkpKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9FbmFi bGVUcmlnOgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiRU5BQkxFIFRSSUdHRVIgJXt0 cmlnZ2VyfUkiLCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImVuYWJsZSB0 cmlnZ2VyIiwKKwkJCQkJCQkJCQkidHJpZ2dlciIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+bmFt ZSk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1w X29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0VuYWJsZUFsd2F5c1RyaWc6CisJCQkJ dG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJFTkFCTEUgQUxXQVlTIFRSSUdHRVIgJXt0cmlnZ2Vy fUkiLCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImVuYWJsZSBhbHdheXMg dHJpZ2dlciIsCisJCQkJCQkJCQkJInRyaWdnZXIiLCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5h bWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRt cF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9FbmFibGVSZXBsaWNhVHJpZzoKKwkJ CQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgJXt0cmln Z2VyfUkiLCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImVuYWJsZSByZXBs aWNhIHRyaWdnZXIiLAorCQkJCQkJCQkJCSJ0cmlnZ2VyIiwgT2JqVHlwZVN0cmluZywgc3ViY21k LT5uYW1lKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVj dCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRGlzYWJsZVRyaWc6CisJCQkJ dG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJESVNBQkxFIFRSSUdHRVIgJXt0cmlnZ2VyfUkiLCAy LAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRpc2FibGUgdHJpZ2dlciIsCisJ CQkJCQkJCQkJInRyaWdnZXIiLCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXN1 YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJ CQlicmVhazsKKworCQkJY2FzZSBBVF9FbmFibGVUcmlnQWxsOgorCQkJCXRtcF9vYmogPSBuZXdf b2JqdHJlZV9WQSgiRU5BQkxFIFRSSUdHRVIgQUxMIiwgMSwKKwkJCQkJCQkJCQkidHlwZSIsIE9i alR5cGVTdHJpbmcsICJlbmFibGUgdHJpZ2dlciBhbGwiKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVu ZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJ CWNhc2UgQVRfRGlzYWJsZVRyaWdBbGw6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJE SVNBQkxFIFRSSUdHRVIgQUxMIiwgMSwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcs ICJkaXNhYmxlIHRyaWdnZXIgYWxsIik7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywg bmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Vu YWJsZVRyaWdVc2VyOgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiRU5BQkxFIFRSSUdH RVIgVVNFUiIsIDEsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZW5hYmxlIHRy aWdnZXIgdXNlciIpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rf b2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9EaXNhYmxlVHJpZ1Vz ZXI6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJESVNBQkxFIFRSSUdHRVIgVVNFUiIs IDEsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZGlzYWJsZSB0cmlnZ2VyIHVz ZXIiKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0 bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRW5hYmxlUnVsZToKKwkJCQl0bXBf b2JqID0gbmV3X29ianRyZWVfVkEoIkVOQUJMRSBSVUxFICV7cnVsZX1JIiwgMiwKKwkJCQkJCQkJ CQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJlbmFibGUgcnVsZSIsCisJCQkJCQkJCQkJInJ1bGUi LCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1 YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2Fz ZSBBVF9FbmFibGVBbHdheXNSdWxlOgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiRU5B QkxFIEFMV0FZUyBSVUxFICV7cnVsZX1JIiwgMiwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVT dHJpbmcsICJlbmFibGUgYWx3YXlzIHJ1bGUiLAorCQkJCQkJCQkJCSJydWxlIiwgT2JqVHlwZVN0 cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdf b2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRW5hYmxl UmVwbGljYVJ1bGU6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJFTkFCTEUgUkVQTElD QSBSVUxFICV7cnVsZX1JIiwgMiwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJl bmFibGUgcmVwbGljYSBydWxlIiwKKwkJCQkJCQkJCQkicnVsZSIsIE9ialR5cGVTdHJpbmcsIHN1 YmNtZC0+bmFtZSk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9v YmplY3QodG1wX29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Rpc2FibGVSdWxlOgor CQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiRElTQUJMRSBSVUxFICV7cnVsZX1JIiwgMiwK KwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJkaXNhYmxlIHJ1bGUiLAorCQkJCQkJ CQkJCSJydWxlIiwgT2JqVHlwZVN0cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQlzdWJjbWRzID0g bGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7 CisKKwkJCWNhc2UgQVRfQWRkSW5oZXJpdDoKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEo IklOSEVSSVQgJXtwYXJlbnR9RCIsIDIsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5n LCAiaW5oZXJpdCIsCisJCQkJCQkJCQkJInBhcmVudCIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJ CQkJbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFJlbGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJ CQkJCQkJCQkJCQkJc3ViLT5hZGRyZXNzLm9iamVjdElkKSk7CisJCQkJc3ViY21kcyA9IGxhcHBl bmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJyZWFrOworCisJ CQljYXNlIEFUX0Ryb3BJbmhlcml0OgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiTk8g SU5IRVJJVCAle3BhcmVudH1EIiwgMiwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcs ICJkcm9wIGluaGVyaXQiLAorCQkJCQkJCQkJCSJwYXJlbnQiLCBPYmpUeXBlT2JqZWN0LAorCQkJ CQkJCQkJCW5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxhdGlvblJlbGF0aW9uSWQsCisJ CQkJCQkJCQkJCQkJCQkJCXN1Yi0+YWRkcmVzcy5vYmplY3RJZCkpOworCQkJCXN1YmNtZHMgPSBs YXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsK KworCQkJY2FzZSBBVF9BZGRPZjoKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIk9GICV7 dHlwZV9vZn1UIiwgMiwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJhZGQgb2Yi LAorCQkJCQkJCQkJCSJ0eXBlX29mIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJCQluZXdfb2Jq dHJlZV9mb3JfdHlwZShzdWItPmFkZHJlc3Mub2JqZWN0SWQsIC0xKSk7CisJCQkJc3ViY21kcyA9 IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJyZWFr OworCisJCQljYXNlIEFUX0Ryb3BPZjoKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIk5P VCBPRiIsIDEsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAibm90IG9mIik7CisJ CQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikp OworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1JlcGxpY2FJZGVudGl0eToKKwkJCQl0bXBfb2Jq ID0gbmV3X29ianRyZWVfVkEoIlJFUExJQ0EgSURFTlRJVFkiLCAxLAorCQkJCQkJCQkJCSJ0eXBl IiwgT2JqVHlwZVN0cmluZywgInJlcGxpY2EgaWRlbnRpdHkiKTsKKwkJCQlzd2l0Y2ggKCgoUmVw bGljYUlkZW50aXR5U3RtdCAqKSBzdWJjbWQtPmRlZiktPmlkZW50aXR5X3R5cGUpCisJCQkJewor CQkJCQljYXNlIFJFUExJQ0FfSURFTlRJVFlfREVGQVVMVDoKKwkJCQkJCWFwcGVuZF9zdHJpbmdf b2JqZWN0KHRtcF9vYmosICIle2lkZW50fXMiLCAiaWRlbnQiLAorCQkJCQkJCQkJCQkgIkRFRkFV TFQiKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIFJFUExJQ0FfSURFTlRJVFlfRlVMTDoKKwkJ CQkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIle2lkZW50fXMiLCAiaWRlbnQiLAor CQkJCQkJCQkJCQkgIkZVTEwiKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIFJFUExJQ0FfSURF TlRJVFlfTk9USElORzoKKwkJCQkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIle2lk ZW50fXMiLCAiaWRlbnQiLAorCQkJCQkJCQkJCQkgIk5PVEhJTkciKTsKKwkJCQkJCWJyZWFrOwor CQkJCQljYXNlIFJFUExJQ0FfSURFTlRJVFlfSU5ERVg6CisJCQkJCQl0bXBfb2JqMiA9IG5ld19v Ymp0cmVlX1ZBKCJVU0lORyBJTkRFWCAle2luZGV4fUkiLCAxLAorCQkJCQkJCQkJCQkJICJpbmRl eCIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJCQkgKChSZXBsaWNhSWRlbnRpdHlTdG10ICop IHN1YmNtZC0+ZGVmKS0+bmFtZSk7CisJCQkJCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2Jq LCAiJXtpZGVudH1zIiwgdG1wX29iajIpOworCQkJCQkJYnJlYWs7CisJCQkJfQorCQkJCXN1YmNt ZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQli cmVhazsKKworCQkJY2FzZSBBVF9FbmFibGVSb3dTZWN1cml0eToKKwkJCQl0bXBfb2JqID0gbmV3 X29ianRyZWVfVkEoIkVOQUJMRSBST1cgTEVWRUwgU0VDVVJJVFkiLCAxLAorCQkJCQkJCQkJCSJ0 eXBlIiwgT2JqVHlwZVN0cmluZywgImVuYWJsZSByb3cgc2VjdXJpdHkiKTsKKwkJCQlzdWJjbWRz ID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJl YWs7CisKKwkJCWNhc2UgQVRfRGlzYWJsZVJvd1NlY3VyaXR5OgorCQkJCXRtcF9vYmogPSBuZXdf b2JqdHJlZV9WQSgiRElTQUJMRSBST1cgTEVWRUwgU0VDVVJJVFkiLCAxLAorCQkJCQkJCQkJCSJ0 eXBlIiwgT2JqVHlwZVN0cmluZywgImRpc2FibGUgcm93IHNlY3VyaXR5Iik7CisJCQkJc3ViY21k cyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJy ZWFrOworI2lmZGVmIFRPRE9MSVNUCisJCQljYXNlIEFUX0dlbmVyaWNPcHRpb25zOgorCQkJCXRt cF9vYmogPSBkZXBhcnNlX0Zkd09wdGlvbnMoKExpc3QgKikgc3ViY21kLT5kZWYsIE5VTEwpOwor CQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmop KTsKKwkJCQlicmVhazsKKyNlbmRpZgorCQkJY2FzZSBBVF9BdHRhY2hQYXJ0aXRpb246CisJCQkJ dG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJBVFRBQ0ggUEFSVElUSU9OICV7cGFydGl0aW9uX2lk ZW50aXR5fUQiLCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImF0dGFjaCBw YXJ0aXRpb24iLAorCQkJCQkJCQkJCSJwYXJ0aXRpb25faWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0 LAorCQkJCQkJCQkJCW5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxhdGlvblJlbGF0aW9u SWQsCisJCQkJCQkJCQkJCQkJCQkJCXN1Yi0+YWRkcmVzcy5vYmplY3RJZCkpOworCisJCQkJaWYg KHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCQkJ CWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIle3BhcnRpdGlvbl9ib3VuZH1zIiwKKwkJ CQkJCQkJCQkgInBhcnRpdGlvbl9ib3VuZCIsCisJCQkJCQkJCQkJIFJlbGF0aW9uR2V0UGFydGl0 aW9uQm91bmQoc3ViLT5hZGRyZXNzLm9iamVjdElkKSk7CisKKwkJCQlzdWJjbWRzID0gbGFwcGVu ZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisJCQlj YXNlIEFUX0RldGFjaFBhcnRpdGlvbjoKKwkJCXsKKwkJCQlQYXJ0aXRpb25DbWQgKmNtZDsKKwor CQkJCUFzc2VydChJc0Eoc3ViY21kLT5kZWYsIFBhcnRpdGlvbkNtZCkpOworCQkJCWNtZCA9IChQ YXJ0aXRpb25DbWQgKikgc3ViY21kLT5kZWY7CisKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVf VkEoIkRFVEFDSCBQQVJUSVRJT04gJXtwYXJ0aXRpb25faWRlbnRpdHl9RCAle2NvbmN1cnJlbnR9 cyIsIDMsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCSJkZXRh Y2ggcGFydGl0aW9uIiwKKwkJCQkJCQkJCQkicGFydGl0aW9uX2lkZW50aXR5IiwgT2JqVHlwZU9i amVjdCwKKwkJCQkJCQkJCQluZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUmVsYXRpb25SZWxh dGlvbklkLAorCQkJCQkJCQkJCQkJCQkJCQlzdWItPmFkZHJlc3Mub2JqZWN0SWQpLAorCQkJCQkJ CQkJCWNtZC0+Y29uY3VycmVudCA/ICJDT05DVVJSRU5UTFkiIDogIiIpOworCQkJCXN1YmNtZHMg PSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVh azsKKwkJCX0KKwkJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CisJCQkJdG1wX29i aiA9IG5ld19vYmp0cmVlX1ZBKCJERVRBQ0ggUEFSVElUSU9OICV7cGFydGl0aW9uX2lkZW50aXR5 fUQgRklOQUxJWkUiLCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRldGFj aCBwYXJ0aXRpb24gZmluYWxpemUiLAorCQkJCQkJCQkJCSJwYXJ0aXRpb25faWRlbnRpdHkiLCBP YmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJCW5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxh dGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCQkJCXN1Yi0+YWRkcmVzcy5vYmplY3RJZCkp OworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9v YmopKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CisJCQkJeworCQkJCQlB dHRyTnVtYmVyCWF0dG51bTsKKwkJCQkJT2lkCQkJc2VxX3JlbGlkOworCQkJCQlPYmpUcmVlICAg ICpzZXFkZWY7CisJCQkJCUNvbHVtbkRlZiAgKmNvbGRlZiA9IChDb2x1bW5EZWYgKikgc3ViY21k LT5kZWY7CisKKwkJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBDT0xVTU4gJXtj b2x1bW59SSIsIDIsCisJCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImFkZCBpZGVu dGl0eSIsCisJCQkJCQkJCQkJCSJjb2x1bW4iLCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUp OworCisJCQkJCWF0dG51bSA9IGdldF9hdHRudW0oUmVsYXRpb25HZXRSZWxpZChyZWwpLCBzdWJj bWQtPm5hbWUpOworCQkJCQlzZXFfcmVsaWQgPSBnZXRJZGVudGl0eVNlcXVlbmNlKFJlbGF0aW9u R2V0UmVsaWQocmVsKSwgYXR0bnVtLCB0cnVlKTsKKworCQkJCQlpZiAoT2lkSXNWYWxpZChzZXFf cmVsaWQpKQorCQkJCQl7CisJCQkJCQlzZXFkZWYgPSBkZXBhcnNlX0NvbHVtbklkZW50aXR5KHNl cV9yZWxpZCwgY29sZGVmLT5pZGVudGl0eSwgZmFsc2UpOworCQkJCQkJYXBwZW5kX29iamVjdF9v YmplY3QodG1wX29iaiwgIkFERCAle2lkZW50aXR5X2NvbHVtbn1zIiwgc2VxZGVmKTsKKwkJCQkJ fQorCisJCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRt cF9vYmopKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQljYXNlIEFUX1NldElkZW50aXR5OgorCQkJ CXsKKwkJCQkJRGVmRWxlbSAgICAqZGVmZWw7CisJCQkJCWNoYXIJCWlkZW50aXR5ID0gMDsKKwkJ CQkJT2JqVHJlZSAgICAqc2VxZGVmOworCQkJCQlBdHRyTnVtYmVyCWF0dG51bTsKKwkJCQkJT2lk CQkJc2VxX3JlbGlkOworCisKKwkJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBD T0xVTU4gJXtjb2x1bW59SSIsIDIsCisJCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywg InNldCBpZGVudGl0eSIsCisJCQkJCQkJCQkJCSJjb2x1bW4iLCBPYmpUeXBlU3RyaW5nLCBzdWJj bWQtPm5hbWUpOworCisJCQkJCWlmIChzdWJjbWQtPmRlZikKKwkJCQkJeworCQkJCQkJTGlzdAkg ICAqZGVmID0gKExpc3QgKikgc3ViY21kLT5kZWY7CisKKwkJCQkJCUFzc2VydChJc0Eoc3ViY21k LT5kZWYsIExpc3QpKTsKKworCQkJCQkJZGVmZWwgPSBsaW5pdGlhbF9ub2RlKERlZkVsZW0sIGRl Zik7CisJCQkJCQlpZGVudGl0eSA9IGRlZkdldEludDMyKGRlZmVsKTsKKwkJCQkJfQorCisJCQkJ CWF0dG51bSA9IGdldF9hdHRudW0oUmVsYXRpb25HZXRSZWxpZChyZWwpLCBzdWJjbWQtPm5hbWUp OworCQkJCQlzZXFfcmVsaWQgPSBnZXRJZGVudGl0eVNlcXVlbmNlKFJlbGF0aW9uR2V0UmVsaWQo cmVsKSwgYXR0bnVtLCB0cnVlKTsKKworCQkJCQlpZiAoT2lkSXNWYWxpZChzZXFfcmVsaWQpKQor CQkJCQl7CisJCQkJCQlzZXFkZWYgPSBkZXBhcnNlX0NvbHVtbklkZW50aXR5KHNlcV9yZWxpZCwg aWRlbnRpdHksIHRydWUpOworCQkJCQkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7 ZGVmaW5pdGlvbn1zIiwgc2VxZGVmKTsKKwkJCQkJfQorCisJCQkJCXN1YmNtZHMgPSBsYXBwZW5k KHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQkJYnJlYWs7CisJCQkJ fQorCQkJY2FzZSBBVF9Ecm9wSWRlbnRpdHk6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZB KCJBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBEUk9QIElERU5USVRZIiwgMiwKKwkJCQkJCQkJCQki dHlwZSIsIE9ialR5cGVTdHJpbmcsICJkcm9wIGlkZW50aXR5IiwKKwkJCQkJCQkJCQkiY29sdW1u IiwgT2JqVHlwZVN0cmluZywgc3ViY21kLT5uYW1lKTsKKworCQkJCWFwcGVuZF9zdHJpbmdfb2Jq ZWN0KHRtcF9vYmosICIle2lmX2V4aXN0c31zIiwKKwkJCQkJCQkJCSAiaWZfZXhpc3RzIiwKKwkJ CQkJCQkJCSBzdWJjbWQtPm1pc3Npbmdfb2sgPyAiSUYgRVhJU1RTIiA6ICIiKTsKKworCQkJCXN1 YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJ CQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhXQVJOSU5HLCAidW5zdXBwb3J0ZWQgYWx0 ZXIgdGFibGUgc3VidHlwZSAlZCIsCisJCQkJCSBzdWJjbWQtPnN1YnR5cGUpOworCQkJCWJyZWFr OworCQl9CisKKwkJLyoKKwkJICogV2UgZG9uJ3Qgc3VwcG9ydCByZXBsaWNhdGluZyBBTFRFUiBU QUJMRSB3aGljaCBjb250YWlucyB2b2xhdGlsZQorCQkgKiBmdW5jdGlvbnMgYmVjYXVzZSBJdCdz IHBvc3NpYmxlIHRoZSBmdW5jdGlvbnMgY29udGFpbiBEREwvRE1MIGluCisJCSAqIHdoaWNoIGNh c2UgdGhlc2Ugb3BlcmF0aW9ucyB3aWxsIGJlIGV4ZWN1dGVkIHR3aWNlIGFuZCBjYXVzZQorCQkg KiBkdXBsaWNhdGUgZGF0YS4gSW4gYWRkaXRpb24sIHdlIGRvbid0IGtub3cgd2hldGhlciB0aGUg dGFibGVzIGJlaW5nCisJCSAqIGFjY2Vzc2VkIGJ5IHRoZXNlIERETC9ETUwgYXJlIHB1Ymxpc2hl ZCBvciBub3QuIFNvIGJsaW5kbHkgYWxsb3dpbmcKKwkJICogc3VjaCBmdW5jdGlvbnMgY2FuIGFs bG93IHVuaW50ZW5kZWQgY2xhdXNlcyBsaWtlIHRoZSB0YWJsZXMKKwkJICogYWNjZXNzZWQgaW4g dGhvc2UgZnVuY3Rpb25zIG1heSBub3QgZXZlbiBleGlzdCBvbiB0aGUgc3Vic2NyaWJlci4KKwkJ ICovCisJCWlmIChjb250YWluX3ZvbGF0aWxlX2Z1bmN0aW9ucygoTm9kZSAqKSBleHBycykpCisJ CQllbG9nKEVSUk9SLCAiQUxURVIgVEFCTEUgY29tbWFuZCB1c2luZyB2b2xhdGlsZSBmdW5jdGlv biBjYW5ub3QgYmUgcmVwbGljYXRlZCIpOworCisJCS8qCisJCSAqIENsZWFuIHRoZSBsaXN0IGFz IHdlIGFscmVhZHkgY29uZmlybWVkIHRoZXJlIGlzIG5vIHZvbGF0aWxlCisJCSAqIGZ1bmN0aW9u LgorCQkgKi8KKwkJbGlzdF9mcmVlKGV4cHJzKTsKKwkJZXhwcnMgPSBOSUw7CisJfQorCisJdGFi bGVfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJaWYgKGxpc3RfbGVuZ3RoKHN1YmNt ZHMpID09IDApCisJCXJldHVybiBOVUxMOworCisJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICIl e3N1YmNtZHM6LCB9cyIsIHN1YmNtZHMpOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIEhh bmRsZSBkZXBhcnNpbmcgb2YgRFJPUCBjb21tYW5kcy4KKyAqCisgKiBWZXJib3NlIHN5bnRheAor ICogRFJPUCAle29ianR5cGV9cyBJRiBFWElTVFMgJSV7b2JqaWRlbnRpdHl9cyAle2Nhc2NhZGV9 cworICovCitjaGFyICoKK2RlcGFyc2VfZHJvcF9jb21tYW5kKGNvbnN0IGNoYXIgKm9iamlkZW50 aXR5LCBjb25zdCBjaGFyICpvYmplY3R0eXBlLAorCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2aW9y KQoreworCVN0cmluZ0luZm9EYXRhIHN0cjsKKwljaGFyCSAgICpjb21tYW5kOworCWNoYXIJICAg KmlkZW50aXR5ID0gKGNoYXIgKikgb2JqaWRlbnRpdHk7CisJT2JqVHJlZSAgICAqc3RtdDsKKwlP YmpUcmVlICAgICp0bXBfb2JqOworCUpzb25iCSAgICpqc29uYjsKKworCWluaXRTdHJpbmdJbmZv KCZzdHIpOworCisJc3RtdCA9IG5ld19vYmp0cmVlX1ZBKCJEUk9QICV7b2JqdHlwZX1zIElGIEVY SVNUUyAle29iamlkZW50aXR5fXMiLCAyLAorCQkJCQkJICAib2JqdHlwZSIsIE9ialR5cGVTdHJp bmcsIG9iamVjdHR5cGUsCisJCQkJCQkgICJvYmppZGVudGl0eSIsIE9ialR5cGVTdHJpbmcsIGlk ZW50aXR5KTsKKworCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiQ0FTQ0FERSIsIDEsCisJCQkJ CQkJInByZXNlbnQiLCBPYmpUeXBlQm9vbCwgYmVoYXZpb3IgPT0gRFJPUF9DQVNDQURFKTsKKwlh cHBlbmRfb2JqZWN0X29iamVjdChzdG10LCAiJXtjYXNjYWRlfXMiLCB0bXBfb2JqKTsKKworCWpz b25iID0gb2JqdHJlZV90b19qc29uYihzdG10KTsKKwljb21tYW5kID0gSnNvbmJUb0NTdHJpbmco JnN0ciwgJmpzb25iLT5yb290LCBKU09OQl9FU1RJTUFURURfTEVOKTsKKworCXJldHVybiBjb21t YW5kOworfQorCisvKgorICogRGVwYXJzZSBhbiBBbHRlck9iamVjdFNjaGVtYVN0bXQgKEFMVEVS IC4uLiBTRVQgU0NIRU1BIGNvbW1hbmQpCisgKgorICogR2l2ZW4gdGhlIG9iamVjdCBhZGRyZXNz IGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbgorICogT2JqVHJl ZSByZXByZXNlbnRpbmcgdGhlIGFsdGVyIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgK KyAqIEFMVEVSICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9cyBTRVQgU0NIRU1BICV7bmV3c2NoZW1h fUkKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlck9iamVjdFNjaGVtYVN0bXQo T2JqZWN0QWRkcmVzcyBhZGRyZXNzLCBOb2RlICpwYXJzZXRyZWUsCisJCQkJCQkJICBPYmplY3RB ZGRyZXNzIG9sZF9zY2hlbWEpCit7CisJQWx0ZXJPYmplY3RTY2hlbWFTdG10ICpub2RlID0gKEFs dGVyT2JqZWN0U2NoZW1hU3RtdCAqKSBwYXJzZXRyZWU7CisJY2hhcgkgICAqaWRlbnRpdHk7CisJ Y2hhcgkgICAqbmV3X3NjaGVtYSA9IG5vZGUtPm5ld3NjaGVtYTsKKwljaGFyCSAgICpvbGRfc2No bmFtZTsKKwljaGFyCSAgICppZGVudDsKKworCS8qCisJICogU2luY2UgdGhlIGNvbW1hbmQgaGFz IGFscmVhZHkgdGFrZW4gcGxhY2UgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZgorCSAqIGNhdGFs b2dzLCBnZXRPYmplY3RJZGVudGl0eSByZXR1cm5zIHRoZSBvYmplY3QgbmFtZSB3aXRoIHRoZSBh bHJlYWR5CisJICogY2hhbmdlZCBzY2hlbWEuICBUaGUgb3V0cHV0IG9mIG91ciBkZXBhcnNpbmcg bXVzdCByZXR1cm4gdGhlIG9yaWdpbmFsCisJICogc2NoZW1hIG5hbWUsIGhvd2V2ZXIsIHNvIHdl IGNob3AgdGhlIHNjaGVtYSBuYW1lIG9mZiB0aGUgaWRlbnRpdHkKKwkgKiBzdHJpbmcgYW5kIHRo ZW4gcHJlcGVuZCB0aGUgcXVvdGVkIHNjaGVtYSBuYW1lLgorCSAqCisJICogWFhYIFRoaXMgaXMg cHJldHR5IGNsdW5reS4gQ2FuIHdlIGRvIGJldHRlcj8KKwkgKi8KKwlpZGVudGl0eSA9IGdldE9i amVjdElkZW50aXR5KCZhZGRyZXNzLCBmYWxzZSk7CisJb2xkX3NjaG5hbWUgPSBnZXRfbmFtZXNw YWNlX25hbWUob2xkX3NjaGVtYS5vYmplY3RJZCk7CisJaWYgKCFvbGRfc2NobmFtZSkKKwkJZWxv ZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNjaGVtYSB3aXRoIE9JRCAldSIsCisJ CQkgb2xkX3NjaGVtYS5vYmplY3RJZCk7CisKKwlpZGVudCA9IHBzcHJpbnRmKCIlcyVzIiwgcXVv dGVfaWRlbnRpZmllcihvbGRfc2NobmFtZSksCisJCQkJCSBpZGVudGl0eSArIHN0cmxlbihxdW90 ZV9pZGVudGlmaWVyKG5ld19zY2hlbWEpKSk7CisKKwlyZXR1cm4gbmV3X29ianRyZWVfVkEoIkFM VEVSICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9cyBTRVQgU0NIRU1BICV7bmV3c2NoZW1hfUkiLCAz LAorCQkJCQkJICAib2JqdHlwZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgIHN0cmluZ2lmeV9v Ymp0eXBlKG5vZGUtPm9iamVjdFR5cGUsIGZhbHNlKSwKKwkJCQkJCSAgImlkZW50aXR5IiwgT2Jq VHlwZVN0cmluZywgaWRlbnQsCisJCQkJCQkgICJuZXdzY2hlbWEiLCBPYmpUeXBlU3RyaW5nLCBu ZXdfc2NoZW1hKTsKK30KKworLyoKKyAqIERlcGFyc2UgYW4gQWx0ZXJPd25lclN0bXQgKEFMVEVS IC4uLiBPV05FUiBUTyAuLi4pLgorICoKKyAqIEdpdmVuIHRoZSBvYmplY3QgYWRkcmVzcyBhbmQg dGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4KKyAqIE9ialRyZWUgcmVw cmVzZW50aW5nIHRoZSBhbHRlciBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBB TFRFUiAle29ianR5cGV9cyAle2lkZW50aXR5fXMgT1dORVIgVE8gJXtuZXdvd25lcn1JCisgKi8K K3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJPd25lclN0bXQoT2JqZWN0QWRkcmVzcyBh ZGRyZXNzLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQWx0ZXJPd25lclN0bXQgKm5vZGUgPSAoQWx0 ZXJPd25lclN0bXQgKikgcGFyc2V0cmVlOworCisJcmV0dXJuIG5ld19vYmp0cmVlX1ZBKCJBTFRF UiAle29ianR5cGV9cyAle2lkZW50aXR5fXMgT1dORVIgVE8gJXtuZXdvd25lcn1JIiwgMywKKwkJ CQkJCSAgIm9ianR5cGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJICBzdHJpbmdpZnlfb2JqdHlw ZShub2RlLT5vYmplY3RUeXBlLCBmYWxzZSksCisJCQkJCQkgICJpZGVudGl0eSIsIE9ialR5cGVT dHJpbmcsCisJCQkJCQkgIGdldE9iamVjdElkZW50aXR5KCZhZGRyZXNzLCBmYWxzZSksCisJCQkJ CQkgICJuZXdvd25lciIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgIGdldF9yb2xlc3BlY19uYW1l KG5vZGUtPm5ld293bmVyKSk7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgUmVuYW1lU3RtdC4KKyAq CisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIgJXtvYmp0eXBlfXMgJXtpZl9leGlzdHN9cyAl e2lkZW50aXR5fUQgUkVOQU1FIFRPICV7bmV3bmFtZX1JCisgKiBPUgorICogQUxURVIgVEFCTEUg JXtvbmx5fXMgJXtpZGVudGl0eX1EIFJFTkFNRSBDT05TVFJBSU5UICV7b2xkbmFtZX1JIFRPICV7 bmV3bmFtZX1JCisgKiBPUgorICogQUxURVIgJXtvYmp0eXBlfXMgJXtpZl9leGlzdHN9cyAle29u bHl9cyAle2lkZW50aXR5fUQgUkVOQU1FIENPTFVNTiAle2NvbG5hbWV9SSBUTyAle25ld25hbWV9 SSAle2Nhc2NhZGV9cworICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX1JlbmFtZVN0bXQo T2JqZWN0QWRkcmVzcyBhZGRyZXNzLCBOb2RlICpwYXJzZXRyZWUpCit7CisJUmVuYW1lU3RtdCAq bm9kZSA9IChSZW5hbWVTdG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQ7CisJUmVs YXRpb24JcmVsYXRpb247CisJT2lkCQkJc2NoZW1hSWQ7CisKKwkvKgorCSAqIEluIGFuIEFMVEVS IC4uIFJFTkFNRSBjb21tYW5kLCB3ZSBkb24ndCBoYXZlIHRoZSBvcmlnaW5hbCBuYW1lIG9mIHRo ZQorCSAqIG9iamVjdCBpbiBzeXN0ZW0gY2F0YWxvZ3M6IHNpbmNlIHdlIGluc3BlY3QgdGhlbSBh ZnRlciB0aGUgY29tbWFuZCBoYXMKKwkgKiBleGVjdXRlZCwgdGhlIG9sZCBuYW1lIGlzIGFscmVh ZHkgZ29uZS4gIFRoZXJlZm9yZSwgd2UgZXh0cmFjdCBpdCBmcm9tCisJICogdGhlIHBhcnNlIG5v ZGUuICBOb3RlIHdlIHN0aWxsIGV4dHJhY3QgdGhlIHNjaGVtYSBuYW1lIGZyb20gdGhlIGNhdGFs b2cKKwkgKiAoaXQgbWlnaHQgbm90IGJlIHByZXNlbnQgaW4gdGhlIHBhcnNlIG5vZGUpOyBpdCBj YW5ub3QgcG9zc2libHkgaGF2ZQorCSAqIGNoYW5nZWQgYW55d2F5LgorCSAqLworCXN3aXRjaCAo bm9kZS0+cmVuYW1lVHlwZSkKKwl7CisJCWNhc2UgT0JKRUNUX1RBQkxFOgorCQkJcmVsYXRpb24g PSByZWxhdGlvbl9vcGVuKGFkZHJlc3Mub2JqZWN0SWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQlz Y2hlbWFJZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbGF0aW9uKTsKKwkJCXJldCA9IG5ld19v Ymp0cmVlX1ZBKCJBTFRFUiAle29ianR5cGV9cyAle2lmX2V4aXN0c31zICV7aWRlbnRpdHl9RCBS RU5BTUUgVE8gJXtuZXduYW1lfUkiLCA0LAorCQkJCQkJCQkgIm9ianR5cGUiLCBPYmpUeXBlU3Ry aW5nLAorCQkJCQkJCQkgc3RyaW5naWZ5X29ianR5cGUobm9kZS0+cmVuYW1lVHlwZSwgZmFsc2Up LAorCQkJCQkJCQkgImlmX2V4aXN0cyIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCSBub2RlLT5t aXNzaW5nX29rID8gIklGIEVYSVNUUyIgOiAiIiwKKwkJCQkJCQkJICJpZGVudGl0eSIsIE9ialR5 cGVPYmplY3QsCisJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUoc2NoZW1hSWQsCisJ CQkJCQkJCQkJCQkJCSAgbm9kZS0+cmVsYXRpb24tPnJlbG5hbWUpLAorCQkJCQkJCQkgIm5ld25h bWUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkgbm9kZS0+bmV3bmFtZSk7CisJCQlyZWxhdGlv bl9jbG9zZShyZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCWJyZWFrOworCisJCWNhc2Ug T0JKRUNUX1RBQkNPTlNUUkFJTlQ6CisJCQl7CisJCQkJSGVhcFR1cGxlCWNvbnN0cnR1cDsKKwkJ CQlGb3JtX3BnX2NvbnN0cmFpbnQgY29uc3Rmb3JtOworCisJCQkJY29uc3RydHVwID0gU2VhcmNo U3lzQ2FjaGUxKENPTlNUUk9JRCwKKwkJCQkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShhZGRyZXNz Lm9iamVjdElkKSk7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNvbnN0cnR1cCkpCisJCQkJ CWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBjb25zdHJhaW50IHdpdGggT0lE ICV1IiwKKwkJCQkJCSBhZGRyZXNzLm9iamVjdElkKTsKKwkJCQljb25zdGZvcm0gPSAoRm9ybV9w Z19jb25zdHJhaW50KSBHRVRTVFJVQ1QoY29uc3RydHVwKTsKKworCQkJCXJldCA9IG5ld19vYmp0 cmVlX1ZBKCJBTFRFUiBUQUJMRSAle29ubHl9cyAle2lkZW50aXR5fUQgUkVOQU1FIENPTlNUUkFJ TlQgJXtvbGRuYW1lfUkgVE8gJXtuZXduYW1lfUkiLCA0LAorCQkJCQkJCQkJIm9ubHkiLCAgT2Jq VHlwZVN0cmluZywKKwkJCQkJCQkJCW5vZGUtPnJlbGF0aW9uLT5pbmggPyAiIiA6ICJPTkxZIiwK KwkJCQkJCQkJCSJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCQluZXdfb2JqdHJl ZV9mb3JfcXVhbG5hbWVfaWQoUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkJCWNv bnN0Zm9ybS0+Y29ucmVsaWQpLAorCQkJCQkJCQkJIm9sZG5hbWUiLCBPYmpUeXBlU3RyaW5nLCBu b2RlLT5zdWJuYW1lLAorCQkJCQkJCQkJIm5ld25hbWUiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5u ZXduYW1lKTsKKwkJCQlSZWxlYXNlU3lzQ2FjaGUoY29uc3RydHVwKTsKKwkJCX0KKwkJCWJyZWFr OworCisJCWNhc2UgT0JKRUNUX0NPTFVNTjoKKwkJCXJlbGF0aW9uID0gcmVsYXRpb25fb3Blbihh ZGRyZXNzLm9iamVjdElkLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJc2NoZW1hSWQgPSBSZWxhdGlv bkdldE5hbWVzcGFjZShyZWxhdGlvbik7CisKKwkJCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRF UiAle29ianR5cGV9cyIsIDEsCisJCQkJCQkJCSAib2JqdHlwZSIsIE9ialR5cGVTdHJpbmcsCisJ CQkJCQkJCSBzdHJpbmdpZnlfb2JqdHlwZShub2RlLT5yZWxhdGlvblR5cGUsIGZhbHNlKSk7CisK KwkJCS8qIENvbXBvc2l0ZSB0eXBlcyBkbyBub3Qgc3VwcG9ydCBJRiBFWElTVFMgKi8KKwkJCWlm IChub2RlLT5yZW5hbWVUeXBlID09IE9CSkVDVF9DT0xVTU4pCisJCQkJYXBwZW5kX3N0cmluZ19v YmplY3QocmV0LCAiJXtpZl9leGlzdHN9cyIsCisJCQkJCQkJCQkgImlmX2V4aXN0cyIsCisJCQkJ CQkJCQkgbm9kZS0+bWlzc2luZ19vayA/ICJJRiBFWElTVFMiIDogIiIpOworCQkJaWYgKCFub2Rl LT5yZWxhdGlvbi0+aW5oKQorCQkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7b25seX1z IiwKKwkJCQkJCQkJCSAib25seSIsCisJCQkJCQkJCQkgIk9OTFkiKTsKKwkJCWFwcGVuZF9vYmpl Y3Rfb2JqZWN0KHJldCwgIiV7aWRlbnRpdHl9RCIsCisJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3Jf cXVhbG5hbWUoc2NoZW1hSWQsCisJCQkJCQkJCQkJCQkJCSAgbm9kZS0+cmVsYXRpb24tPnJlbG5h bWUpKTsKKwkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIlJFTkFNRSBDT0xVTU4gJXtjb2xu YW1lfUkiLAorCQkJCQkJCQkgImNvbG5hbWUiLCBub2RlLT5zdWJuYW1lKTsKKworCQkJYXBwZW5k X3N0cmluZ19vYmplY3QocmV0LCAiVE8gJXtuZXduYW1lfUkiLCAibmV3bmFtZSIsCisJCQkJCQkJ CSBub2RlLT5uZXduYW1lKTsKKworCQkJaWYgKG5vZGUtPnJlbmFtZVR5cGUgPT0gT0JKRUNUX0FU VFJJQlVURSkKKwkJCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle2Nhc2NhZGV9cyIsCisJ CQkJCQkJCQkgbmV3X29ianRyZWVfVkEoIkNBU0NBREUiLCAxLAorCQkJCQkJCQkJCQkJCSJwcmVz ZW50IiwgT2JqVHlwZUJvb2wsCisJCQkJCQkJCQkJCQkJbm9kZS0+YmVoYXZpb3IgPT0gRFJPUF9D QVNDQURFKSk7CisKKwkJCXJlbGF0aW9uX2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2sp OworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bnN1cHBvcnRlZCBv YmplY3QgdHlwZSAlZCIsIG5vZGUtPnJlbmFtZVR5cGUpOworCX0KKworCXJldHVybiByZXQ7Cit9 CisKKy8qCisgKiBIYW5kbGUgZGVwYXJzaW5nIG9mIHNpbXBsZSBjb21tYW5kcy4KKyAqCisgKiBU aGlzIGZ1bmN0aW9uIHNob3VsZCBjb3ZlciBhbGwgY2FzZXMgaGFuZGxlZCBpbiBQcm9jZXNzVXRp bGl0eVNsb3cuCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2Vfc2ltcGxlX2NvbW1hbmQo Q29sbGVjdGVkQ29tbWFuZCAqY21kKQoreworCU9pZAkJCW9iamVjdElkOworCU5vZGUJICAgKnBh cnNldHJlZTsKKworCUFzc2VydChjbWQtPnR5cGUgPT0gU0NUX1NpbXBsZSk7CisKKwlwYXJzZXRy ZWUgPSBjbWQtPnBhcnNldHJlZTsKKwlvYmplY3RJZCA9IGNtZC0+ZC5zaW1wbGUuYWRkcmVzcy5v YmplY3RJZDsKKworCWlmIChjbWQtPmluX2V4dGVuc2lvbiAmJiAobm9kZVRhZyhwYXJzZXRyZWUp ICE9IFRfQ3JlYXRlRXh0ZW5zaW9uU3RtdCkpCisJCXJldHVybiBOVUxMOworCisJLyogVGhpcyBz d2l0Y2ggbmVlZHMgdG8gaGFuZGxlIGV2ZXJ5dGhpbmcgdGhhdCBQcm9jZXNzVXRpbGl0eVNsb3cg ZG9lcyAqLworCXN3aXRjaCAobm9kZVRhZyhwYXJzZXRyZWUpKQorCXsKKwkJY2FzZSBUX0FsdGVy T2JqZWN0U2NoZW1hU3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX0FsdGVyT2JqZWN0U2NoZW1hU3Rt dChjbWQtPmQuc2ltcGxlLmFkZHJlc3MsCisJCQkJCQkJCQkJCQkgcGFyc2V0cmVlLAorCQkJCQkJ CQkJCQkJIGNtZC0+ZC5zaW1wbGUuc2Vjb25kYXJ5T2JqZWN0KTsKKworCQljYXNlIFRfQWx0ZXJP d25lclN0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9BbHRlck93bmVyU3RtdChjbWQtPmQuc2ltcGxl LmFkZHJlc3MsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0NyZWF0ZVN0bXQ6CisJCQlyZXR1cm4g ZGVwYXJzZV9DcmVhdGVTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9SZW5h bWVTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfUmVuYW1lU3RtdChjbWQtPmQuc2ltcGxlLmFkZHJl c3MsIHBhcnNldHJlZSk7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coTE9HLCAidW5yZWNvZ25pemVk IG5vZGUgdHlwZSBpbiBkZXBhcnNlIGNvbW1hbmQ6ICVkIiwKKwkJCQkgKGludCkgbm9kZVRhZyhw YXJzZXRyZWUpKTsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIFdvcmtob3JzZSB0 byBkZXBhcnNlIGEgQ29sbGVjdGVkQ29tbWFuZC4KKyAqLworY2hhciAqCitkZXBhcnNlX3V0aWxp dHlfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQsIGJvb2wgdmVyYm9zZV9tb2RlKQorewor CU92ZXJyaWRlU2VhcmNoUGF0aCAqb3ZlcnJpZGVQYXRoOworCU1lbW9yeUNvbnRleHQgb2xkY3h0 OworCU1lbW9yeUNvbnRleHQgdG1wY3h0OworCU9ialRyZWUgICAgKnRyZWU7CisJY2hhcgkgICAq Y29tbWFuZCA9IE5VTEw7CisJU3RyaW5nSW5mb0RhdGEgc3RyOworCisJLyoKKwkgKiBBbGxvY2F0 ZSBldmVyeXRoaW5nIGRvbmUgYnkgdGhlIGRlcGFyc2luZyByb3V0aW5lcyBpbnRvIGEgdGVtcCBj b250ZXh0LAorCSAqIHRvIGF2b2lkIGhhdmluZyB0byBzcHJpbmtsZSB0aGVtIHdpdGggbWVtb3J5 IGhhbmRsaW5nIGNvZGUsIGJ1dAorCSAqIGFsbG9jYXRlIHRoZSBvdXRwdXQgU3RyaW5nSW5mbyBi ZWZvcmUgc3dpdGNoaW5nLgorCSAqLworCWluaXRTdHJpbmdJbmZvKCZzdHIpOworCXRtcGN4dCA9 IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJICAg ImRlcGFyc2UgY3R4IiwKKwkJCQkJCQkJICAgQUxMT0NTRVRfREVGQVVMVF9NSU5TSVpFLAorCQkJ CQkJCQkgICBBTExPQ1NFVF9ERUZBVUxUX0lOSVRTSVpFLAorCQkJCQkJCQkgICBBTExPQ1NFVF9E RUZBVUxUX01BWFNJWkUpOworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyh0bXBjeHQp OworCisJLyoKKwkgKiBNYW55IHJvdXRpbmVzIHVuZGVybHlpbmcgdGhpcyBvbmUgd2lsbCBpbnZv a2UgcnVsZXV0aWxzLmMgZnVuY3Rpb25hbGl0eQorCSAqIHRvIG9idGFpbiBkZXBhcnNlZCB2ZXJz aW9ucyBvZiBleHByZXNzaW9ucy4gIEluIHN1Y2ggcmVzdWx0cywgd2Ugd2FudAorCSAqIGFsbCBv YmplY3QgbmFtZXMgdG8gYmUgcXVhbGlmaWVkLCBzbyB0aGF0IHJlc3VsdHMgYXJlICJwb3J0YWJs ZSIgdG8KKwkgKiBlbnZpcm9ubWVudHMgd2l0aCBkaWZmZXJlbnQgc2VhcmNoX3BhdGggc2V0dGlu Z3MuICBSYXRoZXIgdGhhbiBpbmplY3QKKwkgKiB3aGF0IHdvdWxkIGJlIHJlcGV0aXRpdmUgY2Fs bHMgdG8gb3ZlcnJpZGUgc2VhcmNoIHBhdGggYWxsIG92ZXIgdGhlCisJICogcGxhY2UsIHdlIGRv IGl0IGNlbnRyYWxseSBoZXJlLgorCSAqLworCW92ZXJyaWRlUGF0aCA9IEdldE92ZXJyaWRlU2Vh cmNoUGF0aChDdXJyZW50TWVtb3J5Q29udGV4dCk7CisJb3ZlcnJpZGVQYXRoLT5zY2hlbWFzID0g TklMOworCW92ZXJyaWRlUGF0aC0+YWRkQ2F0YWxvZyA9IGZhbHNlOworCW92ZXJyaWRlUGF0aC0+ YWRkVGVtcCA9IHRydWU7CisJUHVzaE92ZXJyaWRlU2VhcmNoUGF0aChvdmVycmlkZVBhdGgpOwor CisJdmVyYm9zZSA9IHZlcmJvc2VfbW9kZTsKKworCXN3aXRjaCAoY21kLT50eXBlKQorCXsKKwkJ Y2FzZSBTQ1RfU2ltcGxlOgorCQkJdHJlZSA9IGRlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoY21kKTsK KwkJCWJyZWFrOworCQljYXNlIFNDVF9BbHRlclRhYmxlOgorCQkJdHJlZSA9IGRlcGFyc2VfQWx0 ZXJSZWxhdGlvbihjbWQpOworCQkJYnJlYWs7CisJCWNhc2UgU0NUX0NyZWF0ZVRhYmxlQXM6CisJ CQl0cmVlID0gZGVwYXJzZV9DcmVhdGVUYWJsZUFzU3RtdChjbWQpOworCQkJYnJlYWs7CisJCWRl ZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBkZXBhcnNlIG5vZGUgdHlwZSAlZCIs IGNtZC0+dHlwZSk7CisJfQorCisJUG9wT3ZlcnJpZGVTZWFyY2hQYXRoKCk7CisKKwlpZiAodHJl ZSkKKwl7CisJCUpzb25iCSAgICpqc29uYjsKKworCQlqc29uYiA9IG9ianRyZWVfdG9fanNvbmIo dHJlZSk7CisJCWNvbW1hbmQgPSBKc29uYlRvQ1N0cmluZygmc3RyLCAmanNvbmItPnJvb3QsIEpT T05CX0VTVElNQVRFRF9MRU4pOworCX0KKworCS8qCisJICogQ2xlYW4gdXAuICBOb3RlIHRoYXQg c2luY2Ugd2UgY3JlYXRlZCB0aGUgU3RyaW5nSW5mbyBpbiB0aGUgY2FsbGVyJ3MKKwkgKiBjb250 ZXh0LCB0aGUgb3V0cHV0IHN0cmluZyBpcyBub3QgZGVsZXRlZCBoZXJlLgorCSAqLworCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCU1lbW9yeUNvbnRleHREZWxldGUodG1wY3h0KTsK KworCXJldHVybiBjb21tYW5kOworfQorCisvKgorICogR2l2ZW4gYSBDb2xsZWN0ZWRDb21tYW5k LCByZXR1cm4gYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGl0LgorICoKKyAqIFRoZSBjb21tYW5k IGlzIGV4cGFuZGVkIGZ1bGx5IHNvIHRoYXQgdGhlcmUgYXJlIG5vIGFtYmlndWl0aWVzIGV2ZW4g aW4gdGhlCisgKiBmYWNlIG9mIHNlYXJjaF9wYXRoIGNoYW5nZXMuCisgKi8KK0RhdHVtCitkZGxf ZGVwYXJzZV90b19qc29uKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJQ29sbGVjdGVkQ29tbWFuZCAq Y21kID0gKENvbGxlY3RlZENvbW1hbmQgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisJY2hhcgkg ICAqY29tbWFuZDsKKworCWNvbW1hbmQgPSBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChjbWQsIHRy dWUpOworCisJaWYgKGNvbW1hbmQpCisJCVBHX1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0 KGNvbW1hbmQpKTsKKworCVBHX1JFVFVSTl9OVUxMKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9kZGxfanNvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsX2pzb24u YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zYTU3ZDI2OTdjCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsX2pzb24uYwpAQCAtMCwwICsx LDc4MCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZGRsX2pzb24uYworICoJICBKU09O IGNvZGUgcmVsYXRlZCB0byBEREwgY29tbWFuZCBkZXBhcnNpbmcKKyAqCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDE5OTYtMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVy c2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tl bmQvY29tbWFuZHMvZGRsX2pzb24uYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5j bHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCisjaW5jbHVk ZSAidGNvcC9kZGxfZGVwYXJzZS5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5j bHVkZSAidXRpbHMvanNvbmIuaCIKKworCisvKgorICogQ29udmVyc2lvbiBzcGVjaWZpZXIgd2hp Y2ggZGV0ZXJtaW5lcyBob3cgdG8gZXhwYW5kIHRoZSBKU09OIGVsZW1lbnQKKyAqIGludG8gYSBz dHJpbmcuCisgKi8KK3R5cGVkZWYgZW51bQoreworCVNwZWNEb3R0ZWROYW1lLAorCVNwZWNJZGVu dGlmaWVyLAorCVNwZWNOdW1iZXIsCisJU3BlY09wZXJhdG9yTmFtZSwKKwlTcGVjUm9sZSwKKwlT cGVjU3RyaW5nLAorCVNwZWNTdHJpbmdMaXRlcmFsLAorCVNwZWNUeXBlTmFtZQorfSBjb252U3Bl Y2lmaWVyOworCisvKgorICogQSB0ZXJuYXJ5IHZhbHVlIHRoYXQgcmVwcmVzZW50cyBhIGJvb2xl YW4gdHlwZSBKc29uYlZhbHVlLgorICovCit0eXBlZGVmIGVudW0KK3sKKwl0dl9hYnNlbnQsCisJ dHZfdHJ1ZSwKKwl0dl9mYWxzZQorfQkJCWpzb25fdHJpdmFsdWU7CisKK3N0YXRpYyBib29sIGV4 cGFuZF9vbmVfanNvbmJfZWxlbWVudChTdHJpbmdJbmZvIGJ1ZiwgY2hhciAqcGFyYW0sCisJCQkJ CQkJCQkgSnNvbmJWYWx1ZSAqanNvbnZhbCwgY29udlNwZWNpZmllciBzcGVjaWZpZXIsCisJCQkJ CQkJCQkgY29uc3QgY2hhciAqZm10KTsKK3N0YXRpYyB2b2lkIGV4cGFuZF9qc29uYl9hcnJheShT dHJpbmdJbmZvIGJ1ZiwgY2hhciAqcGFyYW0sCisJCQkJCQkJICAgSnNvbmJWYWx1ZSAqanNvbmFy ciwgY2hhciAqYXJyYXlzZXAsCisJCQkJCQkJICAgY29udlNwZWNpZmllciBzcGVjaWZpZXIsIGNv bnN0IGNoYXIgKmZtdCk7CitzdGF0aWMgdm9pZCBmbXRzdHJfZXJyb3JfY2FsbGJhY2sodm9pZCAq YXJnKTsKKworLyoKKyAqIEdpdmVuIGEgSnNvbmJDb250YWluZXIsIGZpbmQgdGhlIEpzb25iVmFs dWUgd2l0aCB0aGUgZ2l2ZW4ga2V5IG5hbWUgaW4gaXQuCisgKiBJZiBpdCdzIG9mIGEgdHlwZSBv dGhlciB0aGFuIGpidkJvb2wsIGFuIGVycm9yIGlzIHJhaXNlZC4gSWYgaXQgZG9lc24ndAorICog ZXhpc3QsIHR2X2Fic2VudCBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlIHJldHVybiB0aGUgYWN0dWFs IGpzb25fdHJpdmFsdWUuCisgKi8KK3N0YXRpYyBqc29uX3RyaXZhbHVlCitmaW5kX2Jvb2xfaW5f anNvbmJjb250YWluZXIoSnNvbmJDb250YWluZXIgKmNvbnRhaW5lciwgY2hhciAqa2V5bmFtZSkK K3sKKwlKc29uYlZhbHVlCWtleTsKKwlKc29uYlZhbHVlICp2YWx1ZTsKKwlqc29uX3RyaXZhbHVl IHJlc3VsdDsKKworCWtleS50eXBlID0gamJ2U3RyaW5nOworCWtleS52YWwuc3RyaW5nLnZhbCA9 IGtleW5hbWU7CisJa2V5LnZhbC5zdHJpbmcubGVuID0gc3RybGVuKGtleW5hbWUpOworCXZhbHVl ID0gZmluZEpzb25iVmFsdWVGcm9tQ29udGFpbmVyKGNvbnRhaW5lciwKKwkJCQkJCQkJCQlKQl9G T0JKRUNULCAma2V5KTsKKwlpZiAodmFsdWUgPT0gTlVMTCkKKwkJcmV0dXJuIHR2X2Fic2VudDsK KwlpZiAodmFsdWUtPnR5cGUgIT0gamJ2Qm9vbCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygiZWxlbWVu dCBcIiVzXCIgaXMgbm90IG9mIHR5cGUgYm9vbGVhbiIsIGtleW5hbWUpKTsKKwlyZXN1bHQgPSB2 YWx1ZS0+dmFsLmJvb2xlYW4gPyB0dl90cnVlIDogdHZfZmFsc2U7CisJcGZyZWUodmFsdWUpOwor CisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEdpdmVuIGEgSnNvbmJDb250YWluZXIsIGZp bmQgdGhlIEpzb25iVmFsdWUgd2l0aCB0aGUgZ2l2ZW4ga2V5IG5hbWUgaW4gaXQuCisgKiBJZiBp dCdzIG9mIGEgdHlwZSBvdGhlciB0aGFuIGpidlN0cmluZywgYW4gZXJyb3IgaXMgcmFpc2VkLiAg SWYgaXQgZG9lc24ndAorICogZXhpc3QsIGFuIGVycm9yIGlzIHJhaXNlZCB1bmxlc3MgbWlzc2lu Z19vazsgb3RoZXJ3aXNlIHJldHVybiBOVUxMLgorICoKKyAqIElmIGl0IGV4aXN0cyBhbmQgaXMg YSBzdHJpbmcsIGEgZnJlc2hseSBwYWxsb2MnZWQgY29weSBpcyByZXR1cm5lZC4KKyAqCisgKiBJ ZiAqbGVuZ3RoIGlzIG5vdCBOVUxMLCBpdCBpcyBzZXQgdG8gdGhlIGxlbmd0aCBvZiB0aGUgc3Ry aW5nLgorICovCitzdGF0aWMgY2hhciAqCitmaW5kX3N0cmluZ19pbl9qc29uYmNvbnRhaW5lcihK c29uYkNvbnRhaW5lciAqY29udGFpbmVyLCBjaGFyICprZXluYW1lLAorCQkJCQkJCSAgYm9vbCBt aXNzaW5nX29rLCBpbnQgKmxlbmd0aCkKK3sKKwlKc29uYlZhbHVlCWtleTsKKwlKc29uYlZhbHVl ICp2YWx1ZTsKKwljaGFyCSAgICpzdHI7CisKKwkvKiBYWFggdmVyaWZ5IHRoYXQgdGhpcyBpcyBh biBvYmplY3QsIG5vdCBhbiBhcnJheSAqLworCisJa2V5LnR5cGUgPSBqYnZTdHJpbmc7CisJa2V5 LnZhbC5zdHJpbmcudmFsID0ga2V5bmFtZTsKKwlrZXkudmFsLnN0cmluZy5sZW4gPSBzdHJsZW4o a2V5bmFtZSk7CisJdmFsdWUgPSBmaW5kSnNvbmJWYWx1ZUZyb21Db250YWluZXIoY29udGFpbmVy LAorCQkJCQkJCQkJCUpCX0ZPQkpFQ1QsICZrZXkpOworCWlmICh2YWx1ZSA9PSBOVUxMKQorCXsK KwkJaWYgKG1pc3Npbmdfb2spCisJCQlyZXR1cm4gTlVMTDsKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygi bWlzc2luZyBlbGVtZW50IFwiJXNcIiBpbiBKU09OIG9iamVjdCIsIGtleW5hbWUpKTsKKwl9CisK KwlpZiAodmFsdWUtPnR5cGUgIT0gamJ2U3RyaW5nKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJZXJybXNnKCJlbGVt ZW50IFwiJXNcIiBpcyBub3Qgb2YgdHlwZSBzdHJpbmciLCBrZXluYW1lKSk7CisKKwlzdHIgPSBw bnN0cmR1cCh2YWx1ZS0+dmFsLnN0cmluZy52YWwsIHZhbHVlLT52YWwuc3RyaW5nLmxlbik7CisJ aWYgKGxlbmd0aCkKKwkJKmxlbmd0aCA9IHZhbHVlLT52YWwuc3RyaW5nLmxlbjsKKwlwZnJlZSh2 YWx1ZSk7CisJcmV0dXJuIHN0cjsKK30KKworI2RlZmluZSBBRFZBTkNFX1BBUlNFX1BPSU5URVIo cHRyLGVuZF9wdHIpIFwKKwlkbyB7IFwKKwkJaWYgKCsrKHB0cikgPj0gKGVuZF9wdHIpKSBcCisJ CQllcmVwb3J0KEVSUk9SLCBcCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRF Ul9WQUxVRSksIFwKKwkJCQkJZXJybXNnKCJ1bnRlcm1pbmF0ZWQgZm9ybWF0IHNwZWNpZmllciIp KTsgXAorCX0gd2hpbGUgKDApCisKKy8qCisgKiBSZWN1cnNpdmUgaGVscGVyIGZvciBkZXBhcnNl X2RkbF9qc29uX3RvX3N0cmluZy4KKyAqCisgKiBGaW5kIHRoZSAiZm10IiBlbGVtZW50IGluIHRo ZSBnaXZlbiBjb250YWluZXIsIGFuZCBleHBhbmQgaXQgaW50byB0aGUKKyAqIHByb3ZpZGVkIFN0 cmluZ0luZm8uCisgKi8KK3N0YXRpYyB2b2lkCitleHBhbmRfZm10X3JlY3Vyc2l2ZShTdHJpbmdJ bmZvIGJ1ZiwgSnNvbmJDb250YWluZXIgKmNvbnRhaW5lcikKK3sKKwlKc29uYlZhbHVlCWtleTsK KwlKc29uYlZhbHVlICp2YWx1ZTsKKwljb25zdCBjaGFyICpjcDsKKwljb25zdCBjaGFyICpzdGFy dF9wdHI7CisJY29uc3QgY2hhciAqZW5kX3B0cjsKKwlpbnQJCQlsZW47CisKKwlzdGFydF9wdHIg PSBmaW5kX3N0cmluZ19pbl9qc29uYmNvbnRhaW5lcihjb250YWluZXIsICJmbXQiLCBmYWxzZSwg Jmxlbik7CisJZW5kX3B0ciA9IHN0YXJ0X3B0ciArIGxlbjsKKworCWZvciAoY3AgPSBzdGFydF9w dHI7IGNwIDwgZW5kX3B0cjsgY3ArKykKKwl7CisJCWNvbnZTcGVjaWZpZXIgc3BlY2lmaWVyOwor CQlib29sCQlpc19hcnJheSA9IGZhbHNlOworCQljaGFyCSAgICpwYXJhbSA9IE5VTEw7CisJCWNo YXIJICAgKmFycmF5c2VwID0gTlVMTDsKKworCQlpZiAoKmNwICE9ICclJykKKwkJeworCQkJYXBw ZW5kU3RyaW5nSW5mb0NoYXJNYWNybyhidWYsICpjcCk7CisJCQljb250aW51ZTsKKwkJfQorCisJ CUFEVkFOQ0VfUEFSU0VfUE9JTlRFUihjcCwgZW5kX3B0cik7CisKKwkJLyogRWFzeSBjYXNlOiAl JSBvdXRwdXRzIGEgc2luZ2xlICUgKi8KKwkJaWYgKCpjcCA9PSAnJScpCisJCXsKKwkJCWFwcGVu ZFN0cmluZ0luZm9DaGFyTWFjcm8oYnVmLCAqY3ApOworCQkJY29udGludWU7CisJCX0KKworCQkv KgorCQkgKiBTY2FuIHRoZSBtYW5kYXRvcnkgZWxlbWVudCBuYW1lLiAgQWxsb3cgZm9yIGFuIGFy cmF5IHNlcGFyYXRvcgorCQkgKiAod2hpY2ggbWF5IGJlIHRoZSBlbXB0eSBzdHJpbmcpIHRvIGJl IHNwZWNpZmllZCBhZnRlciBhIGNvbG9uLgorCQkgKi8KKwkJaWYgKCpjcCA9PSAneycpCisJCXsK KwkJCVN0cmluZ0luZm9EYXRhIHBhcmJ1ZjsKKwkJCVN0cmluZ0luZm9EYXRhIGFycmF5c2VwYnVm OworCQkJU3RyaW5nSW5mbwlhcHBlbmRUbzsKKworCQkJaW5pdFN0cmluZ0luZm8oJnBhcmJ1Zik7 CisJCQlhcHBlbmRUbyA9ICZwYXJidWY7CisKKwkJCUFEVkFOQ0VfUEFSU0VfUE9JTlRFUihjcCwg ZW5kX3B0cik7CisJCQl3aGlsZSAoY3AgPCBlbmRfcHRyKQorCQkJeworCQkJCWlmICgqY3AgPT0g JzonKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogRm91bmQgYXJyYXkgc2VwYXJhdG9yIGRlbGlt aXRlcjsgZWxlbWVudCBuYW1lIGlzIG5vdworCQkJCQkgKiBjb21wbGV0ZSwgc3RhcnQgZmlsbGlu ZyB0aGUgc2VwYXJhdG9yLgorCQkJCQkgKi8KKwkJCQkJaW5pdFN0cmluZ0luZm8oJmFycmF5c2Vw YnVmKTsKKwkJCQkJYXBwZW5kVG8gPSAmYXJyYXlzZXBidWY7CisJCQkJCWlzX2FycmF5ID0gdHJ1 ZTsKKwkJCQkJQURWQU5DRV9QQVJTRV9QT0lOVEVSKGNwLCBlbmRfcHRyKTsKKwkJCQkJY29udGlu dWU7CisJCQkJfQorCisJCQkJaWYgKCpjcCA9PSAnfScpCisJCQkJeworCQkJCQlBRFZBTkNFX1BB UlNFX1BPSU5URVIoY3AsIGVuZF9wdHIpOworCQkJCQlicmVhazsKKwkJCQl9CisJCQkJYXBwZW5k U3RyaW5nSW5mb0NoYXJNYWNybyhhcHBlbmRUbywgKmNwKTsKKwkJCQlBRFZBTkNFX1BBUlNFX1BP SU5URVIoY3AsIGVuZF9wdHIpOworCQkJfQorCQkJcGFyYW0gPSBwYXJidWYuZGF0YTsKKwkJCWlm IChpc19hcnJheSkKKwkJCQlhcnJheXNlcCA9IGFycmF5c2VwYnVmLmRhdGE7CisJCX0KKwkJaWYg KHBhcmFtID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQllcnJtc2coIm1pc3NpbmcgY29udmVyc2lv biBuYW1lIGluIGNvbnZlcnNpb24gc3BlY2lmaWVyIikpOworCisJCXN3aXRjaCAoKmNwKQorCQl7 CisJCQljYXNlICdJJzoKKwkJCQlzcGVjaWZpZXIgPSBTcGVjSWRlbnRpZmllcjsKKwkJCQlicmVh azsKKwkJCWNhc2UgJ0QnOgorCQkJCXNwZWNpZmllciA9IFNwZWNEb3R0ZWROYW1lOworCQkJCWJy ZWFrOworCQkJY2FzZSAncyc6CisJCQkJc3BlY2lmaWVyID0gU3BlY1N0cmluZzsKKwkJCQlicmVh azsKKwkJCWNhc2UgJ0wnOgorCQkJCXNwZWNpZmllciA9IFNwZWNTdHJpbmdMaXRlcmFsOworCQkJ CWJyZWFrOworCQkJY2FzZSAnVCc6CisJCQkJc3BlY2lmaWVyID0gU3BlY1R5cGVOYW1lOworCQkJ CWJyZWFrOworCQkJY2FzZSAnTyc6CisJCQkJc3BlY2lmaWVyID0gU3BlY09wZXJhdG9yTmFtZTsK KwkJCQlicmVhazsKKwkJCWNhc2UgJ24nOgorCQkJCXNwZWNpZmllciA9IFNwZWNOdW1iZXI7CisJ CQkJYnJlYWs7CisJCQljYXNlICdSJzoKKwkJCQlzcGVjaWZpZXIgPSBTcGVjUm9sZTsKKwkJCQli cmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJtc2coImludmFsaWQgY29u dmVyc2lvbiBzcGVjaWZpZXIgXCIlY1wiIiwgKmNwKSk7CisJCX0KKworCQkvKgorCQkgKiBPYnRh aW4gdGhlIGVsZW1lbnQgdG8gYmUgZXhwYW5kZWQuCisJCSAqLworCQlrZXkudHlwZSA9IGpidlN0 cmluZzsKKwkJa2V5LnZhbC5zdHJpbmcudmFsID0gcGFyYW07CisJCWtleS52YWwuc3RyaW5nLmxl biA9IHN0cmxlbihwYXJhbSk7CisKKwkJdmFsdWUgPSBmaW5kSnNvbmJWYWx1ZUZyb21Db250YWlu ZXIoY29udGFpbmVyLCBKQl9GT0JKRUNULCAma2V5KTsKKwkJQXNzZXJ0KHZhbHVlICE9IE5VTEwp OworCisJCS8qCisJCSAqIEV4cGFuZCB0aGUgZGF0YSAocG9zc2libHkgYW4gYXJyYXkpIGludG8g dGhlIG91dHB1dCBTdHJpbmdJbmZvLgorCQkgKi8KKwkJaWYgKGlzX2FycmF5KQorCQkJZXhwYW5k X2pzb25iX2FycmF5KGJ1ZiwgcGFyYW0sIHZhbHVlLCBhcnJheXNlcCwgc3BlY2lmaWVyLCBzdGFy dF9wdHIpOworCQllbHNlCisJCQlleHBhbmRfb25lX2pzb25iX2VsZW1lbnQoYnVmLCBwYXJhbSwg dmFsdWUsIHNwZWNpZmllciwgc3RhcnRfcHRyKTsKKwl9Cit9CisKKy8qCisgKiBFeHBhbmQgYSBq c29uIHZhbHVlIGFzIGEgcXVvdGVkIGlkZW50aWZpZXIuICBUaGUgdmFsdWUgbXVzdCBiZSBvZiB0 eXBlIHN0cmluZy4KKyAqLworc3RhdGljIHZvaWQKK2V4cGFuZF9qc29udmFsX2lkZW50aWZpZXIo U3RyaW5nSW5mbyBidWYsIEpzb25iVmFsdWUgKmpzb252YWwpCit7CisJY2hhcgkgICAqc3RyOwor CisJQXNzZXJ0KGpzb252YWwtPnR5cGUgPT0gamJ2U3RyaW5nKTsKKworCXN0ciA9IHBuc3RyZHVw KGpzb252YWwtPnZhbC5zdHJpbmcudmFsLCBqc29udmFsLT52YWwuc3RyaW5nLmxlbik7CisJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZpZXIoc3RyKSk7CisJcGZyZWUo c3RyKTsKK30KKworLyoKKyAqIEV4cGFuZCBhIGpzb24gdmFsdWUgYXMgYSBkb3Qtc2VwYXJhdGVk LW5hbWUuICBUaGUgdmFsdWUgbXVzdCBiZSBvZiB0eXBlCisgKiBiaW5hcnkgYW5kIG1heSBjb250 YWluIGVsZW1lbnRzICJzY2hlbWFuYW1lIiAob3B0aW9uYWwpLCAib2JqbmFtZSIKKyAqIChtYW5k YXRvcnkpLCAiYXR0cm5hbWUiIChvcHRpb25hbCkuICBEb3VibGUgcXVvdGVzIGFyZSBhZGRlZCB0 byBlYWNoIGVsZW1lbnQKKyAqIGFzIG5lY2Vzc2FyeSwgYW5kIGRvdCBzZXBhcmF0b3JzIHdoZXJl IG5lZWRlZC4KKyAqCisgKiBPbmUgZGF5IHdlIG1pZ2h0IG5lZWQgYSAiY2F0YWxvZyIgZWxlbWVu dCBhcyB3ZWxsLCBidXQgbm8gY3VycmVudCB1c2UgY2FzZQorICogbmVlZHMgdGhhdC4KKyAqLwor c3RhdGljIHZvaWQKK2V4cGFuZF9qc29udmFsX2RvdHRlZG5hbWUoU3RyaW5nSW5mbyBidWYsIEpz b25iVmFsdWUgKmpzb252YWwpCit7CisJY2hhcgkgICAqc3RyOworCUpzb25iQ29udGFpbmVyICpk YXRhID0ganNvbnZhbC0+dmFsLmJpbmFyeS5kYXRhOworCisJQXNzZXJ0KGpzb252YWwtPnR5cGUg PT0gamJ2QmluYXJ5KTsKKworCXN0ciA9IGZpbmRfc3RyaW5nX2luX2pzb25iY29udGFpbmVyKGRh dGEsICJzY2hlbWFuYW1lIiwgdHJ1ZSwgTlVMTCk7CisJaWYgKHN0cikKKwl7CisJCWFwcGVuZFN0 cmluZ0luZm8oYnVmLCAiJXMuIiwgcXVvdGVfaWRlbnRpZmllcihzdHIpKTsKKwkJcGZyZWUoc3Ry KTsKKwl9CisKKwlzdHIgPSBmaW5kX3N0cmluZ19pbl9qc29uYmNvbnRhaW5lcihkYXRhLCAib2Jq bmFtZSIsIGZhbHNlLCBOVUxMKTsKKwlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzIiwgcXVvdGVf aWRlbnRpZmllcihzdHIpKTsKKwlwZnJlZShzdHIpOworCisJc3RyID0gZmluZF9zdHJpbmdfaW5f anNvbmJjb250YWluZXIoZGF0YSwgImF0dHJuYW1lIiwgdHJ1ZSwgTlVMTCk7CisJaWYgKHN0cikK Kwl7CisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLiVzIiwgcXVvdGVfaWRlbnRpZmllcihzdHIp KTsKKwkJcGZyZWUoc3RyKTsKKwl9Cit9CisKKy8qCisgKiBFeHBhbmQgYSBKU09OIHZhbHVlIGFz IGEgdHlwZSBuYW1lLgorICovCitzdGF0aWMgdm9pZAorZXhwYW5kX2pzb252YWxfdHlwZW5hbWUo U3RyaW5nSW5mbyBidWYsIEpzb25iVmFsdWUgKmpzb252YWwpCit7CisJY2hhcgkgICAqc2NoZW1h ID0gTlVMTDsKKwljaGFyCSAgICp0eXBlbmFtZTsKKwljaGFyCSAgICp0eXBtb2RzdHI7CisJanNv bl90cml2YWx1ZSBpc19hcnJheTsKKwljaGFyCSAgICphcnJheV9kZWNvcjsKKwlKc29uYkNvbnRh aW5lciAqZGF0YSA9IGpzb252YWwtPnZhbC5iaW5hcnkuZGF0YTsKKworCS8qCisJICogV2Ugb21p dCBzY2hlbWEtcXVhbGlmeWluZyB0aGUgb3V0cHV0IG5hbWUgaWYgdGhlIHNjaGVtYSBlbGVtZW50 IGlzCisJICogZWl0aGVyIHRoZSBlbXB0eSBzdHJpbmcgb3IgTlVMTDsgdGhlIGRpZmZlcmVuY2Ug YmV0d2VlbiB0aG9zZSB0d28gY2FzZXMKKwkgKiBpcyB0aGF0IGluIHRoZSBsYXR0ZXIgd2UgcXVv dGUgdGhlIHR5cGUgbmFtZSwgaW4gdGhlIGZvcm1lciB3ZSBkb24ndC4KKwkgKiBUaGlzIGFsbG93 cyBmb3IgdHlwZXMgd2l0aCBzcGVjaWFsIHR5cG1vZCBuZWVkcywgc3VjaCBhcyBpbnRlcnZhbCBh bmQKKwkgKiB0aW1lc3RhbXAgKHNlZSBmb3JtYXRfdHlwZV9kZXRhaWxlZCksIHdoaWxlIGF0IHRo ZSBzYW1lIHRpbWUgYWxsb3dpbmcKKwkgKiBmb3IgdGhlIHNjaGVtYSBuYW1lIHRvIGJlIG9taXR0 ZWQgZnJvbSB0eXBlIG5hbWVzIHRoYXQgcmVxdWlyZSBxdW90ZXMKKwkgKiBidXQgYXJlIHRvIGJl IG9idGFpbmVkIGZyb20gYSB1c2VyIHNjaGVtYS4KKwkgKi8KKworCXNjaGVtYSA9IGZpbmRfc3Ry aW5nX2luX2pzb25iY29udGFpbmVyKGRhdGEsICJzY2hlbWFuYW1lIiwgdHJ1ZSwgTlVMTCk7CisJ dHlwZW5hbWUgPSBmaW5kX3N0cmluZ19pbl9qc29uYmNvbnRhaW5lcihkYXRhLCAidHlwZW5hbWUi LCBmYWxzZSwgTlVMTCk7CisJdHlwbW9kc3RyID0gZmluZF9zdHJpbmdfaW5fanNvbmJjb250YWlu ZXIoZGF0YSwgInR5cG1vZCIsIHRydWUsIE5VTEwpOworCWlzX2FycmF5ID0gZmluZF9ib29sX2lu X2pzb25iY29udGFpbmVyKGRhdGEsICJ0eXBhcnJheSIpOworCXN3aXRjaCAoaXNfYXJyYXkpCisJ eworCQljYXNlIHR2X3RydWU6CisJCQlhcnJheV9kZWNvciA9ICJbXSI7CisJCQlicmVhazsKKwor CQljYXNlIHR2X2ZhbHNlOgorCQkJYXJyYXlfZGVjb3IgPSAiIjsKKwkJCWJyZWFrOworCisJCWNh c2UgdHZfYWJzZW50OgorCQlkZWZhdWx0OgorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJZXJybXNnKCJtaXNzaW5n IHR5cGFycmF5IGVsZW1lbnQiKSk7CisJfQorCisJaWYgKHNjaGVtYSA9PSBOVUxMKQorCQlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgIiVzIiwgcXVvdGVfaWRlbnRpZmllcih0eXBlbmFtZSkpOworCWVs c2UgaWYgKHNjaGVtYVswXSA9PSAnXDAnKQorCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzIiwg dHlwZW5hbWUpOwkvKiBTcGVjaWFsIHR5cG1vZCBuZWVkcyAqLworCWVsc2UKKwkJYXBwZW5kU3Ry aW5nSW5mbyhidWYsICIlcy4lcyIsIHF1b3RlX2lkZW50aWZpZXIoc2NoZW1hKSwKKwkJCQkJCSBx dW90ZV9pZGVudGlmaWVyKHR5cGVuYW1lKSk7CisKKwlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVz JXMiLCB0eXBtb2RzdHIgPyB0eXBtb2RzdHIgOiAiIiwgYXJyYXlfZGVjb3IpOworCXBmcmVlKHNj aGVtYSk7CisJcGZyZWUodHlwZW5hbWUpOworCXBmcmVlKHR5cG1vZHN0cik7Cit9CisKKy8qCisg KiBFeHBhbmQgYSBKU09OIHZhbHVlIGFzIGFuIG9wZXJhdG9yIG5hbWUuIFRoZSB2YWx1ZSBtYXkg Y29udGFpbiBlbGVtZW50CisgKiAic2NoZW1hbmFtZSIgKG9wdGlvbmFsKS4KKyAqLworc3RhdGlj IHZvaWQKK2V4cGFuZF9qc29udmFsX29wZXJhdG9yKFN0cmluZ0luZm8gYnVmLCBKc29uYlZhbHVl ICpqc29udmFsKQoreworCWNoYXIJICAgKnN0cjsKKwlKc29uYkNvbnRhaW5lciAqZGF0YSA9IGpz b252YWwtPnZhbC5iaW5hcnkuZGF0YTsKKworCXN0ciA9IGZpbmRfc3RyaW5nX2luX2pzb25iY29u dGFpbmVyKGRhdGEsICJzY2hlbWFuYW1lIiwgdHJ1ZSwgTlVMTCk7CisJLyogU2NoZW1hIG1pZ2h0 IGJlIE5VTEwgb3IgZW1wdHkgKi8KKwlpZiAoc3RyICE9IE5VTEwgJiYgc3RyWzBdICE9ICdcMCcp CisJeworCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzLiIsIHF1b3RlX2lkZW50aWZpZXIoc3Ry KSk7CisJCXBmcmVlKHN0cik7CisJfQorCisJc3RyID0gZmluZF9zdHJpbmdfaW5fanNvbmJjb250 YWluZXIoZGF0YSwgIm9iam5hbWUiLCBmYWxzZSwgTlVMTCk7CisJaWYgKCFzdHIpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwK KwkJCQllcnJtc2coIm1pc3Npbmcgb3BlcmF0b3IgbmFtZSIpKTsKKworCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCBzdHIpOworCXBmcmVlKHN0cik7Cit9CisKKy8qCisgKiBFeHBhbmQgYSBK U09OIHZhbHVlIGFzIGEgc3RyaW5nLiAgVGhlIHZhbHVlIG11c3QgYmUgb2YgdHlwZSBzdHJpbmcg b3Igb2YKKyAqIHR5cGUgQmluYXJ5LiAgSW4gdGhlIGxhdHRlciBjYXNlLCBpdCBtdXN0IGNvbnRh aW4gYSAiZm10IiBlbGVtZW50IHdoaWNoIHdpbGwKKyAqIGJlIHJlY3Vyc2l2ZWx5IGV4cGFuZGVk OyBhbHNvLCBpZiB0aGUgb2JqZWN0IGNvbnRhaW5zIGFuIGVsZW1lbnQgInByZXNlbnQiCisgKiBh bmQgaXQgaXMgc2V0IHRvIGZhbHNlLCB0aGUgZXhwYW5zaW9uIGlzIHRoZSBlbXB0eSBzdHJpbmcu CisgKgorICogUmV0dXJucyBmYWxzZSBpZiBubyBhY3R1YWwgZXhwYW5zaW9uIHdhcyBtYWRlIGR1 ZSB0byB0aGUgInByZXNlbnQiIGZsYWcKKyAqIGJlaW5nIHNldCB0byAiZmFsc2UiLgorICoKKyAq IFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgdG8gY2hlY2sganNvbnZhbCBpcyBvZiB0eXBlIGpi dlN0cmluZyBvciBqYnZCaW5hcnkuCisgKi8KK3N0YXRpYyBib29sCitleHBhbmRfanNvbnZhbF9z dHJpbmcoU3RyaW5nSW5mbyBidWYsIEpzb25iVmFsdWUgKmpzb252YWwpCit7CisJYm9vbCBleHBh bmRlZCA9IGZhbHNlOworCisJaWYgKGpzb252YWwtPnR5cGUgPT0gamJ2U3RyaW5nKQorCXsKKwkJ YXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhidWYsIGpzb252YWwtPnZhbC5zdHJpbmcudmFsLAorCQkJ CQkJCSAgIGpzb252YWwtPnZhbC5zdHJpbmcubGVuKTsKKwkJZXhwYW5kZWQgPSB0cnVlOworCX0K KwllbHNlIGlmIChqc29udmFsLT50eXBlID09IGpidkJpbmFyeSkKKwl7CisJCWpzb25fdHJpdmFs dWUgcHJlc2VudDsKKworCQlwcmVzZW50ID0gZmluZF9ib29sX2luX2pzb25iY29udGFpbmVyKGpz b252YWwtPnZhbC5iaW5hcnkuZGF0YSwKKwkJCQkJCQkJCQkJICAicHJlc2VudCIpOworCisJCS8q CisJCSAqIElmICJwcmVzZW50IiBpcyBzZXQgdG8gZmFsc2UsIHRoaXMgZWxlbWVudCBleHBhbmRz IHRvIGVtcHR5OworCQkgKiBvdGhlcndpc2UgKGVpdGhlciB0cnVlIG9yIGFic2VudCksIGV4cGFu ZCAiZm10Ii4KKwkJICovCisJCWlmIChwcmVzZW50ICE9IHR2X2ZhbHNlKQorCQl7CisJCQlleHBh bmRfZm10X3JlY3Vyc2l2ZShidWYsIGpzb252YWwtPnZhbC5iaW5hcnkuZGF0YSk7CisJCQlleHBh bmRlZCA9IHRydWU7CisJCX0KKwl9CisKKwlyZXR1cm4gZXhwYW5kZWQ7Cit9CisKKy8qCisgKiBF eHBhbmQgYSBKU09OIHZhbHVlIGFzIGEgc3RyaW5nIGxpdGVyYWwuCisgKi8KK3N0YXRpYyB2b2lk CitleHBhbmRfanNvbnZhbF9zdHJsaXQoU3RyaW5nSW5mbyBidWYsIEpzb25iVmFsdWUgKmpzb252 YWwpCit7CisJY2hhcgkgICAqc3RyOworCVN0cmluZ0luZm9EYXRhIGRxZGVsaW07CisJc3RhdGlj IGNvbnN0IGNoYXIgZHFzdWZmaXhlc1tdID0gIl9YWVpaWVhfIjsKKwlpbnQJCQlkcW5leHRjaGFy ID0gMDsKKworCXN0ciA9IHBuc3RyZHVwKGpzb252YWwtPnZhbC5zdHJpbmcudmFsLCBqc29udmFs LT52YWwuc3RyaW5nLmxlbik7CisKKwkvKiBFYXN5IGNhc2U6IGlmIHRoZXJlIGFyZSBubyAnIGFu ZCBubyBcLCBqdXN0IHVzZSBhIHNpbmdsZSBxdW90ZSAqLworCWlmIChzdHJwYnJrKHN0ciwgIlwn XFwiKSA9PSBOVUxMKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICInJXMnIiwgc3RyKTsK KwkJcGZyZWUoc3RyKTsKKwkJcmV0dXJuOworCX0KKworCS8qIE90aGVyd2lzZSBuZWVkIHRvIGZp bmQgYSB1c2VmdWwgZG9sbGFyLXF1b3RlIGRlbGltaXRlciAqLworCWluaXRTdHJpbmdJbmZvKCZk cWRlbGltKTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZkcWRlbGltLCAiJCIpOworCXdoaWxl IChzdHJzdHIoc3RyLCBkcWRlbGltLmRhdGEpICE9IE5VTEwpCisJeworCQlhcHBlbmRTdHJpbmdJ bmZvQ2hhcigmZHFkZWxpbSwgZHFzdWZmaXhlc1tkcW5leHRjaGFyKytdKTsKKwkJZHFuZXh0Y2hh ciA9IGRxbmV4dGNoYXIgJSAoc2l6ZW9mKGRxc3VmZml4ZXMpIC0gMSk7CisJfQorCS8qIEFkZCB0 cmFpbGluZyAkICovCisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmRxZGVsaW0sICckJyk7CisKKwkv KiBBbmQgZmluYWxseSBwcm9kdWNlIHRoZSBxdW90ZWQgbGl0ZXJhbCBpbnRvIHRoZSBvdXRwdXQg U3RyaW5nSW5mbyAqLworCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMlcyVzIiwgZHFkZWxpbS5k YXRhLCBzdHIsIGRxZGVsaW0uZGF0YSk7CisJcGZyZWUoZHFkZWxpbS5kYXRhKTsKKwlwZnJlZShz dHIpOworfQorCisvKgorICogRXhwYW5kIGEgSlNPTiB2YWx1ZSBhcyBhbiBpbnRlZ2VyIHF1YW50 aXR5LgorICovCitzdGF0aWMgdm9pZAorZXhwYW5kX2pzb252YWxfbnVtYmVyKFN0cmluZ0luZm8g YnVmLCBKc29uYlZhbHVlICpqc29udmFsKQoreworCWNoYXIJICAgKnN0cmRhdHVtOworCisJQXNz ZXJ0KGpzb252YWwtPnR5cGUgPT0gamJ2TnVtZXJpYyk7CisKKwlzdHJkYXR1bSA9IERhdHVtR2V0 Q1N0cmluZyhEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfb3V0LAorCQkJCQkJCQkJCQkJICAg TnVtZXJpY0dldERhdHVtKGpzb252YWwtPnZhbC5udW1lcmljKSkpOworCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCBzdHJkYXR1bSk7CisJcGZyZWUoc3RyZGF0dW0pOworfQorCisvKgorICog RXhwYW5kIGEgSlNPTiB2YWx1ZSBhcyBhIHJvbGUgbmFtZS4gIElmIHRoZSAnaXNfcHVibGljJyBl bGVtZW50IGlzIHNldCB0bworICogdHJ1ZSwgUFVCTElDIGlzIGV4cGFuZGVkIChubyBxdW90ZXMp OyBvdGhlcndpc2UsIGV4cGFuZCB0aGUgZ2l2ZW4gcm9sZSBuYW1lLAorICogcXVvdGluZyBhcyBh biBpZGVudGlmaWVyLgorICovCitzdGF0aWMgdm9pZAorZXhwYW5kX2pzb252YWxfcm9sZShTdHJp bmdJbmZvIGJ1ZiwgSnNvbmJWYWx1ZSAqanNvbnZhbCkKK3sKKwlqc29uX3RyaXZhbHVlIGlzX3B1 YmxpYzsKKworCWlzX3B1YmxpYyA9IGZpbmRfYm9vbF9pbl9qc29uYmNvbnRhaW5lcihqc29udmFs LT52YWwuYmluYXJ5LmRhdGEsCisJCQkJCQkJCQkJCSJpc19wdWJsaWMiKTsKKwlpZiAoaXNfcHVi bGljID09IHR2X3RydWUpCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiUFVCTElDIik7 CisJZWxzZQorCXsKKwkJY2hhcgkgICAqcm9sZW5hbWU7CisKKwkJcm9sZW5hbWUgPSBmaW5kX3N0 cmluZ19pbl9qc29uYmNvbnRhaW5lcihqc29udmFsLT52YWwuYmluYXJ5LmRhdGEsCisJCQkJCQkJ CQkJCQkgInJvbGVuYW1lIiwgZmFsc2UsIE5VTEwpOworCQlpZiAocm9sZW5hbWUpCisJCXsKKwkJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90ZV9pZGVudGlmaWVyKHJvbGVuYW1lKSk7 CisJCQlwZnJlZShyb2xlbmFtZSk7CisJCX0KKwl9Cit9CisKKy8qCisgKiBFeHBhbmQgb25lIEpT T04gZWxlbWVudCBpbnRvIHRoZSBvdXRwdXQgU3RyaW5nSW5mbyBhY2NvcmRpbmcgdG8gdGhlCisg KiBjb252ZXJzaW9uIHNwZWNpZmllci4gIFRoZSBlbGVtZW50IHR5cGUgaXMgdmFsaWRhdGVkLCBh bmQgYW4gZXJyb3IgaXMgcmFpc2VkCisgKiBpZiBpdCBkb2Vzbid0IG1hdGNoIHdoYXQgd2UgZXhw ZWN0IGZvciB0aGUgY29udmVyc2lvbiBzcGVjaWZpZXIuCisgKgorICogUmV0dXJucyB0cnVlLCBl eGNlcHQgZm9yIHRoZSBmb3JtYXR0ZWQgc3RyaW5nIGNhc2UgaWYgbm8gYWN0dWFsIGV4cGFuc2lv bgorICogd2FzIG1hZGUgKGR1ZSB0byB0aGUgInByZXNlbnQiIGZsYWcgYmVpbmcgc2V0IHRvICJm YWxzZSIpLgorICovCitzdGF0aWMgYm9vbAorZXhwYW5kX29uZV9qc29uYl9lbGVtZW50KFN0cmlu Z0luZm8gYnVmLCBjaGFyICpwYXJhbSwgSnNvbmJWYWx1ZSAqanNvbnZhbCwKKwkJCQkJCSBjb252 U3BlY2lmaWVyIHNwZWNpZmllciwgY29uc3QgY2hhciAqZm10KQoreworCWJvb2wJCXN0cmluZ19l eHBhbmRlZCA9IHRydWU7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgc3FsZXJyY29udGV4dDsKKwor CS8qIElmIHdlIHdlcmUgZ2l2ZW4gYSBmb3JtYXQgc3RyaW5nLCBzZXR1cCBhbiBlcmVwb3J0KCkg Y29udGV4dCBjYWxsYmFjayAqLworCWlmIChmbXQpCisJeworCQlzcWxlcnJjb250ZXh0LmNhbGxi YWNrID0gZm10c3RyX2Vycm9yX2NhbGxiYWNrOworCQlzcWxlcnJjb250ZXh0LmFyZyA9ICh2b2lk ICopIGZtdDsKKwkJc3FsZXJyY29udGV4dC5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7 CisJCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmc3FsZXJyY29udGV4dDsKKwl9CisKKwlpZiAoIWpz b252YWwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coImVsZW1lbnQgXCIlc1wiIG5vdCBmb3VuZCIsIHBh cmFtKSk7CisKKwlzd2l0Y2ggKHNwZWNpZmllcikKKwl7CisJCWNhc2UgU3BlY0lkZW50aWZpZXI6 CisJCQlpZiAoanNvbnZhbC0+dHlwZSAhPSBqYnZTdHJpbmcpCisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQll cnJtc2coImV4cGVjdGVkIEpTT04gc3RyaW5nIGZvciAlJUkgZWxlbWVudCBcIiVzXCIsIGdvdCAl ZCIsCisJCQkJCQkJICAgcGFyYW0sIGpzb252YWwtPnR5cGUpKTsKKwkJCWV4cGFuZF9qc29udmFs X2lkZW50aWZpZXIoYnVmLCBqc29udmFsKTsKKwkJCWJyZWFrOworCisJCWNhc2UgU3BlY0RvdHRl ZE5hbWU6CisJCQlpZiAoanNvbnZhbC0+dHlwZSAhPSBqYnZCaW5hcnkpCisJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJ CQkJCQllcnJtc2coImV4cGVjdGVkIEpTT04gc3RydWN0IGZvciAlJUQgZWxlbWVudCBcIiVzXCIs IGdvdCAlZCIsCisJCQkJCQkJICAgcGFyYW0sIGpzb252YWwtPnR5cGUpKTsKKwkJCWV4cGFuZF9q c29udmFsX2RvdHRlZG5hbWUoYnVmLCBqc29udmFsKTsKKwkJCWJyZWFrOworCisJCWNhc2UgU3Bl Y1N0cmluZzoKKwkJCWlmIChqc29udmFsLT50eXBlICE9IGpidlN0cmluZyAmJgorCQkJCWpzb252 YWwtPnR5cGUgIT0gamJ2QmluYXJ5KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJZXJybXNnKCJleHBlY3Rl ZCBKU09OIHN0cmluZyBvciBzdHJ1Y3QgZm9yICUlcyBlbGVtZW50IFwiJXNcIiwgZ290ICVkIiwK KwkJCQkJCQkgICBwYXJhbSwganNvbnZhbC0+dHlwZSkpOworCQkJc3RyaW5nX2V4cGFuZGVkID0g ZXhwYW5kX2pzb252YWxfc3RyaW5nKGJ1ZiwganNvbnZhbCk7CisJCQlicmVhazsKKworCQljYXNl IFNwZWNTdHJpbmdMaXRlcmFsOgorCQkJaWYgKGpzb252YWwtPnR5cGUgIT0gamJ2U3RyaW5nKQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCQkJZXJybXNnKCJleHBlY3RlZCBKU09OIHN0cmluZyBmb3IgJSVMIGVs ZW1lbnQgXCIlc1wiLCBnb3QgJWQiLAorCQkJCQkJCSAgIHBhcmFtLCBqc29udmFsLT50eXBlKSk7 CisJCQlleHBhbmRfanNvbnZhbF9zdHJsaXQoYnVmLCBqc29udmFsKTsKKwkJCWJyZWFrOworCisJ CWNhc2UgU3BlY1R5cGVOYW1lOgorCQkJaWYgKGpzb252YWwtPnR5cGUgIT0gamJ2QmluYXJ5KQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCQkJZXJybXNnKCJleHBlY3RlZCBKU09OIHN0cnVjdCBmb3IgJSVUIGVs ZW1lbnQgXCIlc1wiLCBnb3QgJWQiLAorCQkJCQkJCSAgIHBhcmFtLCBqc29udmFsLT50eXBlKSk7 CisJCQlleHBhbmRfanNvbnZhbF90eXBlbmFtZShidWYsIGpzb252YWwpOworCQkJYnJlYWs7CisK KwkJY2FzZSBTcGVjT3BlcmF0b3JOYW1lOgorCQkJaWYgKGpzb252YWwtPnR5cGUgIT0gamJ2Qmlu YXJ5KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCQkJZXJybXNnKCJleHBlY3RlZCBKU09OIHN0cnVjdCBmb3Ig JSVPIGVsZW1lbnQgXCIlc1wiLCBnb3QgJWQiLAorCQkJCQkJCSAgIHBhcmFtLCBqc29udmFsLT50 eXBlKSk7CisJCQlleHBhbmRfanNvbnZhbF9vcGVyYXRvcihidWYsIGpzb252YWwpOworCQkJYnJl YWs7CisKKwkJY2FzZSBTcGVjTnVtYmVyOgorCQkJaWYgKGpzb252YWwtPnR5cGUgIT0gamJ2TnVt ZXJpYykKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURf UEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCWVycm1zZygiZXhwZWN0ZWQgSlNPTiBudW1lcmljIGZv ciAlJW4gZWxlbWVudCBcIiVzXCIsIGdvdCAlZCIsCisJCQkJCQkJICAgcGFyYW0sIGpzb252YWwt PnR5cGUpKTsKKwkJCWV4cGFuZF9qc29udmFsX251bWJlcihidWYsIGpzb252YWwpOworCQkJYnJl YWs7CisKKwkJY2FzZSBTcGVjUm9sZToKKwkJCWlmIChqc29udmFsLT50eXBlICE9IGpidkJpbmFy eSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKKwkJCQkJCWVycm1zZygiZXhwZWN0ZWQgSlNPTiBzdHJ1Y3QgZm9yICUl UiBlbGVtZW50IFwiJXNcIiwgZ290ICVkIiwKKwkJCQkJCQkgICBwYXJhbSwganNvbnZhbC0+dHlw ZSkpOworCQkJZXhwYW5kX2pzb252YWxfcm9sZShidWYsIGpzb252YWwpOworCQkJYnJlYWs7CisJ fQorCisJaWYgKGZtdCkKKwkJZXJyb3JfY29udGV4dF9zdGFjayA9IHNxbGVycmNvbnRleHQucHJl dmlvdXM7CisKKwlyZXR1cm4gc3RyaW5nX2V4cGFuZGVkOworfQorCisvKgorICogSXRlcmF0ZSBv biB0aGUgZWxlbWVudHMgb2YgYSBKU09OIGFycmF5LCBleHBhbmRpbmcgZWFjaCBvbmUgaW50byB0 aGUgb3V0cHV0CisgKiBTdHJpbmdJbmZvIHBlciB0aGUgZ2l2ZW4gY29udmVyc2lvbiBzcGVjaWZp ZXIsIHNlcGFyYXRlZCBieSB0aGUgZ2l2ZW4KKyAqIHNlcGFyYXRvci4KKyAqLworc3RhdGljIHZv aWQKK2V4cGFuZF9qc29uYl9hcnJheShTdHJpbmdJbmZvIGJ1ZiwgY2hhciAqcGFyYW0sCisJCQkJ ICAgSnNvbmJWYWx1ZSAqanNvbmFyciwgY2hhciAqYXJyYXlzZXAsIGNvbnZTcGVjaWZpZXIgc3Bl Y2lmaWVyLAorCQkJCSAgIGNvbnN0IGNoYXIgKmZtdCkKK3sKKwlFcnJvckNvbnRleHRDYWxsYmFj ayBzcWxlcnJjb250ZXh0OworCUpzb25iQ29udGFpbmVyICpjb250YWluZXI7CisJSnNvbmJJdGVy YXRvciAqaXQ7CisJSnNvbmJWYWx1ZQl2OworCWludAkJCXR5cGU7CisJYm9vbAkJZmlyc3QgPSB0 cnVlOworCVN0cmluZ0luZm9EYXRhIGFycmF5ZWxlbTsKKworCS8qIElmIHdlIHdlcmUgZ2l2ZW4g YSBmb3JtYXQgc3RyaW5nLCBzZXR1cCBhbiBlcmVwb3J0KCkgY29udGV4dCBjYWxsYmFjayAqLwor CWlmIChmbXQpCisJeworCQlzcWxlcnJjb250ZXh0LmNhbGxiYWNrID0gZm10c3RyX2Vycm9yX2Nh bGxiYWNrOworCQlzcWxlcnJjb250ZXh0LmFyZyA9ICh2b2lkICopIGZtdDsKKwkJc3FsZXJyY29u dGV4dC5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJCWVycm9yX2NvbnRleHRfc3Rh Y2sgPSAmc3FsZXJyY29udGV4dDsKKwl9CisKKwlpZiAoIWpzb25hcnIpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQll cnJtc2coImVsZW1lbnQgXCIlc1wiIG5vdCBmb3VuZCIsIHBhcmFtKSk7CisKKwlpZiAoanNvbmFy ci0+dHlwZSAhPSBqYnZCaW5hcnkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coImVsZW1lbnQgXCIlc1wi IGlzIG5vdCBhIEpTT04gYXJyYXkiLCBwYXJhbSkpOworCisJY29udGFpbmVyID0ganNvbmFyci0+ dmFsLmJpbmFyeS5kYXRhOworCWlmICghSnNvbkNvbnRhaW5lcklzQXJyYXkoY29udGFpbmVyKSkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLAorCQkJCWVycm1zZygiZWxlbWVudCBcIiVzXCIgaXMgbm90IGEgSlNPTiBhcnJheSIs IHBhcmFtKSk7CisKKwlpbml0U3RyaW5nSW5mbygmYXJyYXllbGVtKTsKKworCWl0ID0gSnNvbmJJ dGVyYXRvckluaXQoY29udGFpbmVyKTsKKwl3aGlsZSAoKHR5cGUgPSBKc29uYkl0ZXJhdG9yTmV4 dCgmaXQsICZ2LCB0cnVlKSkgIT0gV0pCX0RPTkUpCisJeworCQlpZiAodHlwZSA9PSBXSkJfRUxF TSkKKwkJeworCQkJcmVzZXRTdHJpbmdJbmZvKCZhcnJheWVsZW0pOworCisJCQlpZiAoZXhwYW5k X29uZV9qc29uYl9lbGVtZW50KCZhcnJheWVsZW0sIHBhcmFtLCAmdiwgc3BlY2lmaWVyLCBOVUxM KSkKKwkJCXsKKwkJCQlpZiAoIWZpcnN0KQorCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1 ZiwgYXJyYXlzZXApOworCisJCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhidWYsIGFycmF5ZWxl bS5kYXRhLCBhcnJheWVsZW0ubGVuKTsKKwkJCQlmaXJzdCA9IGZhbHNlOworCQkJfQorCQl9CisJ fQorCisJaWYgKGZtdCkKKwkJZXJyb3JfY29udGV4dF9zdGFjayA9IHNxbGVycmNvbnRleHQucHJl dmlvdXM7Cit9CisKKy8qCisgKiBXb3JraG9yc2UgZm9yIGRkbF9kZXBhcnNlX2V4cGFuZF9jb21t YW5kLgorICovCitjaGFyICoKK2RlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nKGNoYXIgKmpzb25f c3RyKQoreworCURhdHVtCQlkOworCUpzb25iCSAgICpqc29uYjsKKwlTdHJpbmdJbmZvCWJ1ZiA9 IChTdHJpbmdJbmZvKSBwYWxsb2MwKHNpemVvZihTdHJpbmdJbmZvRGF0YSkpOworCisJaW5pdFN0 cmluZ0luZm8oYnVmKTsKKworCWQgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKGpzb25iX2luLCBQb2lu dGVyR2V0RGF0dW0oanNvbl9zdHIpKTsKKwlqc29uYiA9IChKc29uYiAqKSBEYXR1bUdldFBvaW50 ZXIoZCk7CisKKwlleHBhbmRfZm10X3JlY3Vyc2l2ZShidWYsICZqc29uYi0+cm9vdCk7CisKKwly ZXR1cm4gYnVmLT5kYXRhOworfQorCisvKi0tLS0tLQorICogUmV0dXJucyBhIGZvcm1hdHRlZCBz dHJpbmcgZnJvbSBhIEpTT04gb2JqZWN0LgorICoKKyAqIFRoZSBzdGFydGluZyBwb2ludCBpcyB0 aGUgZWxlbWVudCBuYW1lZCAiZm10IiAod2hpY2ggbXVzdCBiZSBhIHN0cmluZykuCisgKiBUaGlz IGZvcm1hdCBzdHJpbmcgbWF5IGNvbnRhaW4gemVybyBvciBtb3JlICUtZXNjYXBlcywgd2hpY2gg Y29uc2lzdCBvZiBhbgorICogZWxlbWVudCBuYW1lIGVuY2xvc2VkIGluIHsgfSwgcG9zc2libHkg Zm9sbG93ZWQgYnkgYSBjb252ZXJzaW9uIG1vZGlmaWVyLAorICogZm9sbG93ZWQgYnkgYSBjb252 ZXJzaW9uIHNwZWNpZmllci4gIFBvc3NpYmxlIGNvbnZlcnNpb24gc3BlY2lmaWVycyBhcmU6Cisg KgorICogJQkJZXhwYW5kIHRvIGEgbGl0ZXJhbCAlCisgKiBJCQlleHBhbmQgYXMgYSBzaW5nbGUs IG5vbi1xdWFsaWZpZWQgaWRlbnRpZmllcgorICogRAkJZXhwYW5kIGFzIGEgcG9zc2libHktcXVh bGlmaWVkIGlkZW50aWZpZXIKKyAqIFQJCWV4cGFuZCBhcyBhIHR5cGUgbmFtZQorICogTwkJZXhw YW5kIGFzIGFuIG9wZXJhdG9yIG5hbWUKKyAqIEwJCWV4cGFuZCBhcyBhIHN0cmluZyBsaXRlcmFs IChxdW90ZSB1c2luZyBzaW5nbGUgcXVvdGVzKQorICogcwkJZXhwYW5kIGFzIGEgc2ltcGxlIHN0 cmluZyAobm8gcXVvdGluZykKKyAqIG4JCWV4cGFuZCBhcyBhIHNpbXBsZSBudW1iZXIgKG5vIHF1 b3RpbmcpCisgKiBSCQlleHBhbmQgYXMgYSByb2xlIG5hbWUgKHBvc3NpYmx5IHF1b3RlZCBuYW1l LCBvciBQVUJMSUMpCisgKgorICogVGhlIGVsZW1lbnQgbmFtZSBtYXkgaGF2ZSBhbiBvcHRpb25h bCBzZXBhcmF0b3Igc3BlY2lmaWNhdGlvbiBwcmVjZWRlZAorICogYnkgYSBjb2xvbi4gIEl0cyBw cmVzZW5jZSBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBpcyBleHBlY3RlZCB0byBiZQorICog YW4gYXJyYXk7IHRoZSBzcGVjaWZpZWQgc2VwYXJhdG9yIGlzIHVzZWQgdG8gam9pbiB0aGUgYXJy YXkgZWxlbWVudHMuCisgKi0tLS0tLQorICovCitEYXR1bQorZGRsX2RlcGFyc2VfZXhwYW5kX2Nv bW1hbmQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwl0ZXh0CSAgICpqc29uID0gUEdfR0VUQVJHX1RF WFRfUCgwKTsKKwljaGFyCSAgICpqc29uX3N0cjsKKworCWpzb25fc3RyID0gdGV4dF90b19jc3Ry aW5nKGpzb24pOworCisJUEdfUkVUVVJOX1RFWFRfUChjc3RyaW5nX3RvX3RleHQoZGVwYXJzZV9k ZGxfanNvbl90b19zdHJpbmcoanNvbl9zdHIpKSk7Cit9CisKKy8qCisgKiBFcnJvciBjb250ZXh0 IGNhbGxiYWNrIGZvciBKU09OIGZvcm1hdCBzdHJpbmcgZXhwYW5zaW9uLgorICoKKyAqIFhYWDog aW5kaWNhdGUgd2hpY2ggZWxlbWVudCB3ZSdyZSBleHBhbmRpbmcsIGlmIGFwcGxpY2FibGUuCisg Ki8KK3N0YXRpYyB2b2lkCitmbXRzdHJfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKQoreworCWVy cmNvbnRleHQoIndoaWxlIGV4cGFuZGluZyBmb3JtYXQgc3RyaW5nIFwiJXNcIiIsIChjaGFyICop IGFyZyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2Vy LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5kZXggZDRiMDBkMWE4 Mi4uY2ZjMzZiMDJkMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJp Z2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtMzYs OCArMzYsMTAgQEAKICNpbmNsdWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZnVuYy5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJz ZXIuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJ0Y29wL2RlcGFyc2VfdXRpbGl0 eS5oIgorI2luY2x1ZGUgInRjb3AvZGRsX2RlcGFyc2UuaCIKICNpbmNsdWRlICJ0Y29wL3V0aWxp dHkuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5o IgpAQCAtNDgsNDUgKzUwLDcgQEAKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIgogCi10eXBlZGVmIHN0cnVjdCBFdmVudFRyaWdnZXJRdWVyeVN0YXRl Ci17Ci0JLyogbWVtb3J5IGNvbnRleHQgZm9yIHRoaXMgc3RhdGUncyBvYmplY3RzICovCi0JTWVt b3J5Q29udGV4dCBjeHQ7Ci0KLQkvKiBzcWxfZHJvcCAqLwotCXNsaXN0X2hlYWQJU1FMRHJvcExp c3Q7Ci0JYm9vbAkJaW5fc3FsX2Ryb3A7Ci0KLQkvKiB0YWJsZV9yZXdyaXRlICovCi0JT2lkCQkJ dGFibGVfcmV3cml0ZV9vaWQ7CS8qIEludmFsaWRPaWQsIG9yIHNldCBmb3IgdGFibGVfcmV3cml0 ZQotCQkJCQkJCQkJICogZXZlbnQgKi8KLQlpbnQJCQl0YWJsZV9yZXdyaXRlX3JlYXNvbjsJLyog QVRfUkVXUklURSByZWFzb24gKi8KLQotCS8qIFN1cHBvcnQgZm9yIGNvbW1hbmQgY29sbGVjdGlv biAqLwotCWJvb2wJCWNvbW1hbmRDb2xsZWN0aW9uSW5oaWJpdGVkOwotCUNvbGxlY3RlZENvbW1h bmQgKmN1cnJlbnRDb21tYW5kOwotCUxpc3QJICAgKmNvbW1hbmRMaXN0OwkvKiBsaXN0IG9mIENv bGxlY3RlZENvbW1hbmQ7IHNlZQotCQkJCQkJCQkgKiBkZXBhcnNlX3V0aWxpdHkuaCAqLwotCXN0 cnVjdCBFdmVudFRyaWdnZXJRdWVyeVN0YXRlICpwcmV2aW91czsKLX0gRXZlbnRUcmlnZ2VyUXVl cnlTdGF0ZTsKLQotc3RhdGljIEV2ZW50VHJpZ2dlclF1ZXJ5U3RhdGUgKmN1cnJlbnRFdmVudFRy aWdnZXJTdGF0ZSA9IE5VTEw7Ci0KLS8qIFN1cHBvcnQgZm9yIGRyb3BwZWQgb2JqZWN0cyAqLwot dHlwZWRlZiBzdHJ1Y3QgU1FMRHJvcE9iamVjdAotewotCU9iamVjdEFkZHJlc3MgYWRkcmVzczsK LQljb25zdCBjaGFyICpzY2hlbWFuYW1lOwotCWNvbnN0IGNoYXIgKm9iam5hbWU7Ci0JY29uc3Qg Y2hhciAqb2JqaWRlbnRpdHk7Ci0JY29uc3QgY2hhciAqb2JqZWN0dHlwZTsKLQlMaXN0CSAgICph ZGRybmFtZXM7Ci0JTGlzdAkgICAqYWRkcmFyZ3M7Ci0JYm9vbAkJb3JpZ2luYWw7Ci0JYm9vbAkJ bm9ybWFsOwotCWJvb2wJCWlzdGVtcDsKLQlzbGlzdF9ub2RlCW5leHQ7Ci19IFNRTERyb3BPYmpl Y3Q7CitFdmVudFRyaWdnZXJRdWVyeVN0YXRlICpjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUgPSBO VUxMOwogCiBzdGF0aWMgdm9pZCBBbHRlckV2ZW50VHJpZ2dlck93bmVyX2ludGVybmFsKFJlbGF0 aW9uIHJlbCwKIAkJCQkJCQkJCQkJSGVhcFR1cGxlIHR1cCwKQEAgLTEzMCw3ICs5NCw4IEBAIENy ZWF0ZUV2ZW50VHJpZ2dlcihDcmVhdGVFdmVudFRyaWdTdG10ICpzdG10KQogCWlmIChzdHJjbXAo c3RtdC0+ZXZlbnRuYW1lLCAiZGRsX2NvbW1hbmRfc3RhcnQiKSAhPSAwICYmCiAJCXN0cmNtcChz dG10LT5ldmVudG5hbWUsICJkZGxfY29tbWFuZF9lbmQiKSAhPSAwICYmCiAJCXN0cmNtcChzdG10 LT5ldmVudG5hbWUsICJzcWxfZHJvcCIpICE9IDAgJiYKLQkJc3RyY21wKHN0bXQtPmV2ZW50bmFt ZSwgInRhYmxlX3Jld3JpdGUiKSAhPSAwKQorCQlzdHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCAidGFi bGVfcmV3cml0ZSIpICE9IDAgJiYKKwkJc3RyY21wKHN0bXQtPmV2ZW50bmFtZSwgInRhYmxlX2lu aXRfd3JpdGUiKSAhPSAwKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgZXZlbnQgbmFtZSBcIiVz XCIiLApAQCAtMTU2LDcgKzEyMSw4IEBAIENyZWF0ZUV2ZW50VHJpZ2dlcihDcmVhdGVFdmVudFRy aWdTdG10ICpzdG10KQogCS8qIFZhbGlkYXRlIHRhZyBsaXN0LCBpZiBhbnkuICovCiAJaWYgKChz dHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCAiZGRsX2NvbW1hbmRfc3RhcnQiKSA9PSAwIHx8CiAJCSBz dHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCAiZGRsX2NvbW1hbmRfZW5kIikgPT0gMCB8fAotCQkgc3Ry Y21wKHN0bXQtPmV2ZW50bmFtZSwgInNxbF9kcm9wIikgPT0gMCkKKwkJIHN0cmNtcChzdG10LT5l dmVudG5hbWUsICJzcWxfZHJvcCIpID09IDAgfHwKKwkJIHN0cmNtcChzdG10LT5ldmVudG5hbWUs ICJ0YWJsZV9pbml0X3dyaXRlIikgPT0gMCkKIAkJJiYgdGFncyAhPSBOVUxMKQogCQl2YWxpZGF0 ZV9kZGxfdGFncygidGFnIiwgdGFncyk7CiAJZWxzZSBpZiAoc3RyY21wKHN0bXQtPmV2ZW50bmFt ZSwgInRhYmxlX3Jld3JpdGUiKSA9PSAwCkBAIC01NjAsNiArNTI2LDcgQEAgRXZlbnRUcmlnZ2Vy Q29tbW9uU2V0dXAoTm9kZSAqcGFyc2V0cmVlLAogCUxpc3QJICAgKmNhY2hlbGlzdDsKIAlMaXN0 Q2VsbCAgICpsYzsKIAlMaXN0CSAgICpydW5saXN0ID0gTklMOworCWludAkJCXB1Yl9kZXBhcnNl X2Z1bmNfY250ID0gMDsKIAogCS8qCiAJICogV2Ugd2FudCB0aGUgbGlzdCBvZiBjb21tYW5kIHRh Z3MgZm9yIHdoaWNoIHRoaXMgcHJvY2VkdXJlIGlzIGFjdHVhbGx5CkBAIC01ODIsNyArNTQ5LDgg QEAgRXZlbnRUcmlnZ2VyQ29tbW9uU2V0dXAoTm9kZSAqcGFyc2V0cmVlLAogCQlkYmd0YWcgPSBD cmVhdGVDb21tYW5kVGFnKHBhcnNldHJlZSk7CiAJCWlmIChldmVudCA9PSBFVlRfRERMQ29tbWFu ZFN0YXJ0IHx8CiAJCQlldmVudCA9PSBFVlRfRERMQ29tbWFuZEVuZCB8fAotCQkJZXZlbnQgPT0g RVZUX1NRTERyb3ApCisJCQlldmVudCA9PSBFVlRfU1FMRHJvcCB8fAorCQkJZXZlbnQgPT0gRVZU X1RhYmxlSW5pdFdyaXRlKQogCQl7CiAJCQlpZiAoIWNvbW1hbmRfdGFnX2V2ZW50X3RyaWdnZXJf b2soZGJndGFnKSkKIAkJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBjb21tYW5kIHRhZyBcIiVz XCIiLCBHZXRDb21tYW5kVGFnTmFtZShkYmd0YWcpKTsKQEAgLTYwOSw2ICs1NzcsMTIgQEAgRXZl bnRUcmlnZ2VyQ29tbW9uU2V0dXAoTm9kZSAqcGFyc2V0cmVlLAogCSAqIG9uY2Ugd2UgZG8gYW55 dGhpbmcgYXQgYWxsIHRoYXQgdG91Y2hlcyB0aGUgY2F0YWxvZ3MsIGFuIGludmFsaWRhdGlvbgog CSAqIG1pZ2h0IGxlYXZlIGNhY2hlbGlzdCBwb2ludGluZyBhdCBnYXJiYWdlLCBzbyB3ZSBtdXN0 IGRvIHRoaXMgYmVmb3JlIHdlCiAJICogY2FuIGRvIG11Y2ggZWxzZS4KKwkgKgorCSAqIFNwZWNp YWwgaGFuZGxpbmcgZm9yIGV2ZW50IHRyaWdnZXJzIGNyZWF0ZWQgYXMgcGFydCBvZiBwdWJsaWNh dGlvbnMuCisJICogSWYgdGhlcmUgYXJlIG11bHRpcGxlIHB1YmxpY2F0aW9ucyB3aGljaCBwdWJs aXNoIGRkbHMsIG9ubHkgb25lIHNldCBvZiB0aGUKKwkgKiBldmVudCB0cmlnZ2VyIGZ1bmN0aW9u cyBuZWVkIHRvIGJlIGludm9rZWQuIFRoZSBkZGwgZGVwYXJzZSBldmVudCB0cmlnZ2VycworCSAq IHdyaXRlIHRvIFdBTCwgc28gbm8gbmVlZCB0byBkdXBsaWNhdGUgaXQgYXMgYWxsIHdhbHNlbmRl cnMgd2lsbCByZWFkIHRoZSBzYW1lCisJICogV0FMLgogCSAqLwogCWZvcmVhY2gobGMsIGNhY2hl bGlzdCkKIAl7CkBAIC02MTYsOCArNTkwLDI1IEBAIEV2ZW50VHJpZ2dlckNvbW1vblNldHVwKE5v ZGUgKnBhcnNldHJlZSwKIAogCQlpZiAoZmlsdGVyX2V2ZW50X3RyaWdnZXIodGFnLCBpdGVtKSkK IAkJewotCQkJLyogV2UgbXVzdCBwbGFuIHRvIGZpcmUgdGhpcyB0cmlnZ2VyLiAqLwotCQkJcnVu bGlzdCA9IGxhcHBlbmRfb2lkKHJ1bmxpc3QsIGl0ZW0tPmZub2lkKTsKKwkJCXN0YXRpYyBjb25z dCBjaGFyICp0cmlnZ2VyX2Z1bmNfcHJlZml4ID0gInB1YmxpY2F0aW9uX2RlcGFyc2VfJXMiOwor CQkJY2hhcgkJdHJpZ2dlcl9mdW5jX25hbWVbTkFNRURBVEFMRU5dOworCQkJT2lkCQkJcHViX2Z1 bmNvaWQ7CisJCQlMaXN0IAkJKnB1YmZ1bmNuYW1lOworCisJCQkvKiBHZXQgZnVuY3Rpb24gb2lk IG9mIHRoZSBwdWJsaWNhdGlvbidzIGRkbCBkZXBhcnNlIGV2ZW50IHRyaWdnZXIgKi8KKwkJCXNu cHJpbnRmKHRyaWdnZXJfZnVuY19uYW1lLCBzaXplb2YodHJpZ2dlcl9mdW5jX25hbWUpLCB0cmln Z2VyX2Z1bmNfcHJlZml4LAorCQkJCQkgZXZlbnRzdHIpOworCQkJcHViZnVuY25hbWUgPSBTeXN0 ZW1GdW5jTmFtZSh0cmlnZ2VyX2Z1bmNfbmFtZSk7CisJCQlwdWJfZnVuY29pZCA9IExvb2t1cEZ1 bmNOYW1lKHB1YmZ1bmNuYW1lLCAwLCBOVUxMLCB0cnVlKTsKKworCQkJaWYgKGl0ZW0tPmZub2lk ICE9IHB1Yl9mdW5jb2lkKQorCQkJCXJ1bmxpc3QgPSBsYXBwZW5kX29pZChydW5saXN0LCBpdGVt LT5mbm9pZCk7CisJCQllbHNlCisJCQl7CisJCQkJLyogT25seSB0aGUgZmlyc3QgZGRsIGRlcGFy c2UgZXZlbnQgdHJpZ2dlciBuZWVkcyB0byBiZSBpbnZva2VkICovCisJCQkJaWYgKHB1Yl9kZXBh cnNlX2Z1bmNfY250KysgPT0gMCkKKwkJCQkJcnVubGlzdCA9IGxhcHBlbmRfb2lkKHJ1bmxpc3Qs IGl0ZW0tPmZub2lkKTsKKwkJCX0KIAkJfQogCX0KIApAQCAtODY1LDYgKzg1NiwxNDAgQEAgRXZl bnRUcmlnZ2VyVGFibGVSZXdyaXRlKE5vZGUgKnBhcnNldHJlZSwgT2lkIHRhYmxlT2lkLCBpbnQg cmVhc29uKQogCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiB9CiAKKy8qCisgKiBFdmVudFRy aWdnZXJUYWJsZUluaXRXcml0ZVN0YXJ0CisgKiAgICAgUHJlcGFyZSB0byByZWNlaXZlIGRhdGEg b24gYW4gQ1JFQVRFIFRBQkxFIEFTL1NFTEVUIElOVE8gY29tbWFuZCBhYm91dAorICogICAgIHRv IGJlIGV4ZWN1dGVkLgorICovCit2b2lkCitFdmVudFRyaWdnZXJUYWJsZUluaXRXcml0ZVN0YXJ0 KE5vZGUgKnBhcnNldHJlZSkKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKwlDb2xsZWN0ZWRD b21tYW5kICpjb21tYW5kOworCUNyZWF0ZVRhYmxlQXNTdG10ICpzdG10ID0gKENyZWF0ZVRhYmxl QXNTdG10ICopcGFyc2V0cmVlOworCisJLyogaWdub3JlIGlmIGV2ZW50IHRyaWdnZXIgY29udGV4 dCBub3Qgc2V0LCBvciBjb2xsZWN0aW9uIGRpc2FibGVkICovCisJaWYgKCFjdXJyZW50RXZlbnRU cmlnZ2VyU3RhdGUgfHwKKwkJY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jb21tYW5kQ29sbGVj dGlvbkluaGliaXRlZCkKKwkJcmV0dXJuOworCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3h0KTsKKworCWNvbW1hbmQgPSBwYWxsb2Mo c2l6ZW9mKENvbGxlY3RlZENvbW1hbmQpKTsKKworCWNvbW1hbmQtPnR5cGUgPSAoc3RtdC0+b2Jq dHlwZSA9PSBPQkpFQ1RfVEFCTEUpID8gU0NUX0NyZWF0ZVRhYmxlQXMgOiBTQ1RfU2ltcGxlOwor CWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9IGNyZWF0aW5nX2V4dGVuc2lvbjsKKwljb21tYW5kLT5k LmN0YXMuYWRkcmVzcyA9IEludmFsaWRPYmplY3RBZGRyZXNzOworCWNvbW1hbmQtPmQuY3Rhcy5y ZWFsX2NyZWF0ZSA9IE5VTEw7CisJY29tbWFuZC0+cGFyc2V0cmVlID0gY29weU9iamVjdChwYXJz ZXRyZWUpOworCisJY29tbWFuZC0+cGFyZW50ID0gY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5j dXJyZW50Q29tbWFuZDsKKwljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRDb21tYW5k ID0gY29tbWFuZDsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworfQorCisvKgor ICogRXZlbnRUcmlnZ2VyVGFibGVJbml0V3JpdGVFbmQKKyAqCQlGaW5pc2ggdXAgc2F2aW5nIGFu IENSRUFURSBUQUJMRSBBUy9TRUxFQ1QgSU5UTyBjb21tYW5kLgorICoKKyAqIEZJWE1FIHRoaXMg QVBJIGlzbid0IGNvbnNpZGVyaW5nIHRoZSBwb3NzaWJpbGl0eSB0aGF0IGFuIHhhY3Qvc3VieGFj dCBpcworICogYWJvcnRlZCBwYXJ0d2F5IHRocm91Z2guICBQcm9iYWJseSBpdCdzIGJlc3QgdG8g YWRkIGFuCisgKiBBdEVPU3ViWGFjdF9FdmVudFRyaWdnZXJzKCkgdG8gZml4IHRoaXMuCisgKi8K K3ZvaWQKK0V2ZW50VHJpZ2dlclRhYmxlSW5pdFdyaXRlRW5kKE9iamVjdEFkZHJlc3MgYWRkcmVz cykKK3sKKwlDb2xsZWN0ZWRDb21tYW5kICpwYXJlbnQ7CisJQ3JlYXRlVGFibGVBc1N0bXQgKnN0 bXQ7CisKKwkvKiBpZ25vcmUgaWYgZXZlbnQgdHJpZ2dlciBjb250ZXh0IG5vdCBzZXQsIG9yIGNv bGxlY3Rpb24gZGlzYWJsZWQgKi8KKwlpZiAoIWN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZSB8fAor CQljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmNvbW1hbmRDb2xsZWN0aW9uSW5oaWJpdGVkKQor CQlyZXR1cm47CisKKwlzdG10ID0gIChDcmVhdGVUYWJsZUFzU3RtdCAqKWN1cnJlbnRFdmVudFRy aWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQtPnBhcnNldHJlZTsKKworCWlmIChzdG10LT5vYmp0 eXBlID09IE9CSkVDVF9UQUJMRSkKKwl7CisJCXBhcmVudCA9IGN1cnJlbnRFdmVudFRyaWdnZXJT dGF0ZS0+Y3VycmVudENvbW1hbmQtPnBhcmVudDsKKworCQlwZnJlZShjdXJyZW50RXZlbnRUcmln Z2VyU3RhdGUtPmN1cnJlbnRDb21tYW5kKTsKKworCQljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUt PmN1cnJlbnRDb21tYW5kID0gcGFyZW50OworCX0KKwllbHNlCisJeworCQlNZW1vcnlDb250ZXh0 IG9sZGN4dDsKKworCQlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY3VycmVudEV2ZW50 VHJpZ2dlclN0YXRlLT5jeHQpOworCisJCWN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVu dENvbW1hbmQtPmQuc2ltcGxlLmFkZHJlc3MgPSBhZGRyZXNzOworCQljdXJyZW50RXZlbnRUcmln Z2VyU3RhdGUtPmNvbW1hbmRMaXN0ID0KKwkJCWxhcHBlbmQoY3VycmVudEV2ZW50VHJpZ2dlclN0 YXRlLT5jb21tYW5kTGlzdCwKKwkJCQkJY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50 Q29tbWFuZCk7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisJfQorfQorCisv KgorICogRmlyZSB0YWJsZV9pbml0X3Jld3JpdGUgdHJpZ2dlcnMuCisgKi8KK3ZvaWQKK0V2ZW50 VHJpZ2dlclRhYmxlSW5pdFdyaXRlKE5vZGUgKnJlYWxfY3JlYXRlLCBPYmplY3RBZGRyZXNzIGFk ZHJlc3MpCit7CisJTGlzdAkgICAqcnVubGlzdDsKKwlFdmVudFRyaWdnZXJEYXRhIHRyaWdkYXRh OworCUNvbGxlY3RlZENvbW1hbmQgKmNvbW1hbmQ7CisKKwkvKgorCSAqIFNlZSBFdmVudFRyaWdn ZXJERExDb21tYW5kU3RhcnQgZm9yIGEgZGlzY3Vzc2lvbiBhYm91dCB3aHkgZXZlbnQKKwkgKiB0 cmlnZ2VycyBhcmUgZGlzYWJsZWQgaW4gc2luZ2xlIHVzZXIgbW9kZS4KKwkgKi8KKwlpZiAoIUlz VW5kZXJQb3N0bWFzdGVyKQorCQlyZXR1cm47CisKKwkvKgorCSAqIEFsc28gZG8gbm90aGluZyBp ZiBvdXIgc3RhdGUgaXNuJ3Qgc2V0IHVwLCB3aGljaCBpdCB3b24ndCBiZSBpZiB0aGVyZQorCSAq IHdlcmVuJ3QgYW55IHJlbGV2YW50IGV2ZW50IHRyaWdnZXJzIGF0IHRoZSBzdGFydCBvZiB0aGUg Y3VycmVudCBEREwKKwkgKiBjb21tYW5kLiAgVGhpcyB0ZXN0IG1pZ2h0IHRoZXJlZm9yZSBzZWVt IG9wdGlvbmFsLCBidXQgaXQncworCSAqICpuZWNlc3NhcnkqLCBiZWNhdXNlIEV2ZW50VHJpZ2dl ckNvbW1vblNldHVwIG1pZ2h0IGZpbmQgdHJpZ2dlcnMgdGhhdAorCSAqIGRpZG4ndCBleGlzdCBh dCB0aGUgdGltZSB0aGUgY29tbWFuZCBzdGFydGVkLgorCSAqLworCWlmICghY3VycmVudEV2ZW50 VHJpZ2dlclN0YXRlKQorCQlyZXR1cm47CisKKwkvKiBEbyBub3RoaW5nIGlmIG5vIGNvbW1hbmQg d2FzIGNvbGxlY3RlZC4gKi8KKwlpZiAoIWN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVu dENvbW1hbmQpCisJCXJldHVybjsKKworCWNvbW1hbmQgPSBjdXJyZW50RXZlbnRUcmlnZ2VyU3Rh dGUtPmN1cnJlbnRDb21tYW5kOworCisJcnVubGlzdCA9IEV2ZW50VHJpZ2dlckNvbW1vblNldHVw KGNvbW1hbmQtPnBhcnNldHJlZSwKKwkJCQkJCQkJCSAgRVZUX1RhYmxlSW5pdFdyaXRlLAorCQkJ CQkJCQkJICAidGFibGVfaW5pdF93cml0ZSIsCisJCQkJCQkJCQkgICZ0cmlnZGF0YSk7CisJaWYg KHJ1bmxpc3QgPT0gTklMKQorCQlyZXR1cm47CisKKwkvKiBTZXQgdGhlIHJlYWwgQ3JlYXRlVGFi bGUgc3RhdG1lbnQgYW5kIG9iamVjdCBhZGRyZXNzICovCisJY29tbWFuZC0+ZC5jdGFzLnJlYWxf Y3JlYXRlID0gcmVhbF9jcmVhdGU7CisJY29tbWFuZC0+ZC5jdGFzLmFkZHJlc3MgPSBhZGRyZXNz OworCisJLyogUnVuIHRoZSB0cmlnZ2Vycy4gKi8KKwlFdmVudFRyaWdnZXJJbnZva2UocnVubGlz dCwgJnRyaWdkYXRhKTsKKworCS8qIENsZWFudXAuICovCisJbGlzdF9mcmVlKHJ1bmxpc3QpOwor CisJLyoKKwkgKiBNYWtlIHN1cmUgYW55dGhpbmcgdGhlIGV2ZW50IHRyaWdnZXJzIGRpZCB3aWxs IGJlIHZpc2libGUgdG8gdGhlIG1haW4KKwkgKiBjb21tYW5kLgorCSAqLworCUNvbW1hbmRDb3Vu dGVySW5jcmVtZW50KCk7Cit9CisKIC8qCiAgKiBJbnZva2UgZWFjaCBldmVudCB0cmlnZ2VyIGlu IGEgbGlzdCBvZiBldmVudCB0cmlnZ2Vycy4KICAqLwpAQCAtMTE0Niw3ICsxMjcxLDggQEAgdHJh Y2tEcm9wcGVkT2JqZWN0c05lZWRlZCh2b2lkKQogCSAqLwogCXJldHVybiAoRXZlbnRDYWNoZUxv b2t1cChFVlRfU1FMRHJvcCkgIT0gTklMKSB8fAogCQkoRXZlbnRDYWNoZUxvb2t1cChFVlRfVGFi bGVSZXdyaXRlKSAhPSBOSUwpIHx8Ci0JCShFdmVudENhY2hlTG9va3VwKEVWVF9ERExDb21tYW5k RW5kKSAhPSBOSUwpOworCQkoRXZlbnRDYWNoZUxvb2t1cChFVlRfRERMQ29tbWFuZEVuZCkgIT0g TklMKSB8fAorCQkoRXZlbnRDYWNoZUxvb2t1cChFVlRfVGFibGVJbml0V3JpdGUpICE9IE5JTCk7 CiB9CiAKIC8qCkBAIC0xNTM3LDYgKzE2NjMsNyBAQCBFdmVudFRyaWdnZXJBbHRlclRhYmxlU3Rh cnQoTm9kZSAqcGFyc2V0cmVlKQogCiAJY29tbWFuZC0+ZC5hbHRlclRhYmxlLmNsYXNzSWQgPSBS ZWxhdGlvblJlbGF0aW9uSWQ7CiAJY29tbWFuZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkID0gSW52 YWxpZE9pZDsKKwljb21tYW5kLT5kLmFsdGVyVGFibGUucmV3cml0ZSA9IGZhbHNlOwogCWNvbW1h bmQtPmQuYWx0ZXJUYWJsZS5zdWJjbWRzID0gTklMOwogCWNvbW1hbmQtPnBhcnNldHJlZSA9IGNv cHlPYmplY3QocGFyc2V0cmVlKTsKIApAQCAtMTU3MCw3ICsxNjk3LDcgQEAgRXZlbnRUcmlnZ2Vy QWx0ZXJUYWJsZVJlbGlkKE9pZCBvYmplY3RJZCkKICAqIGludGVybmFsbHksIHNvIHRoYXQncyBh bGwgdGhhdCB0aGlzIGNvZGUgbmVlZHMgdG8gaGFuZGxlIGF0IHRoZSBtb21lbnQuCiAgKi8KIHZv aWQKLUV2ZW50VHJpZ2dlckNvbGxlY3RBbHRlclRhYmxlU3ViY21kKE5vZGUgKnN1YmNtZCwgT2Jq ZWN0QWRkcmVzcyBhZGRyZXNzKQorRXZlbnRUcmlnZ2VyQ29sbGVjdEFsdGVyVGFibGVTdWJjbWQo Tm9kZSAqc3ViY21kLCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsIGJvb2wgcmV3cml0ZSkKIHsKIAlN ZW1vcnlDb250ZXh0IG9sZGN4dDsKIAlDb2xsZWN0ZWRBVFN1YmNtZCAqbmV3c3ViOwpAQCAtMTU5 MCwxMiArMTcxNywxNDAgQEAgRXZlbnRUcmlnZ2VyQ29sbGVjdEFsdGVyVGFibGVTdWJjbWQoTm9k ZSAqc3ViY21kLCBPYmplY3RBZGRyZXNzIGFkZHJlc3MpCiAJbmV3c3ViLT5hZGRyZXNzID0gYWRk cmVzczsKIAluZXdzdWItPnBhcnNldHJlZSA9IGNvcHlPYmplY3Qoc3ViY21kKTsKIAorCWN1cnJl bnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQtPmQuYWx0ZXJUYWJsZS5yZXdyaXRl IHw9IHJld3JpdGU7CisJY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFuZC0+ ZC5hbHRlclRhYmxlLnN1YmNtZHMgPQorCQlsYXBwZW5kKGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0 ZS0+Y3VycmVudENvbW1hbmQtPmQuYWx0ZXJUYWJsZS5zdWJjbWRzLCBuZXdzdWIpOworCisJTWVt b3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisKKy8qCisgKiBFdmVudFRyaWdnZXJBbHRl clR5cGVTdGFydAorICoJCVNhdmUgZGF0YSBhYm91dCBhIHNpbmdsZSBwYXJ0IG9mIGFuIEFMVEVS IFRZUEUuCisgKgorICogQUxURVIgVEFCTEUgY2FuIGhhdmUgbXVsdGlwbGUgc3ViY29tbWFuZHMg d2hpY2ggbWlnaHQgaW5jbHVkZSBEUk9QIENPTFVNTgorICogY29tbWFuZCBhbmQgQUxURVIgVFlQ RSByZWZlcnJpbmcgdGhlIGRyb3AgY29sdW1uIGluIFVTSU5HIGV4cHJlc3Npb24uCisgKiBBcyB0 aGUgZHJvcHBlZCBjb2x1bW4gY2Fubm90IGJlIGFjY2Vzc2VkIGFmdGVyIHRoZSBleGVjdXRpb24g b2YgRFJPUCBDT0xVTU4sCisgKiBhIHNwZWNpYWwgdHJpZ2dlciBpcyByZXF1aXJlZCB0byBoYW5k bGUgdGhpcyBjYXNlIGJlZm9yZSB0aGUgZHJvcCBjb2x1bW4gaXMKKyAqIGV4ZWN1dGVkLgorICov Cit2b2lkCitFdmVudFRyaWdnZXJBbHRlclR5cGVTdGFydChBbHRlclRhYmxlQ21kICpzdWJjbWQs IFJlbGF0aW9uIHJlbCkKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKwlDb2xsZWN0ZWRBVFN1 YmNtZCAqbmV3c3ViOworCUNvbHVtbkRlZiAgKmRlZjsKKwlSZWxhdGlvbglhdHRyZWxhdGlvbjsK KwlIZWFwVHVwbGUJaGVhcFR1cDsKKwlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRUdXA7CisJQXR0ck51 bWJlcglhdHRudW07CisJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOworCisJLyogaWdub3JlIGlmIGV2 ZW50IHRyaWdnZXIgY29udGV4dCBub3Qgc2V0LCBvciBjb2xsZWN0aW9uIGRpc2FibGVkICovCisJ aWYgKCFjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUgfHwKKwkJY3VycmVudEV2ZW50VHJpZ2dlclN0 YXRlLT5jb21tYW5kQ29sbGVjdGlvbkluaGliaXRlZCkKKwkJcmV0dXJuOworCisJQXNzZXJ0KElz QShzdWJjbWQsIEFsdGVyVGFibGVDbWQpKTsKKwlBc3NlcnQoc3ViY21kLT5zdWJ0eXBlID09IEFU X0FsdGVyQ29sdW1uVHlwZSk7CisJQXNzZXJ0KGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3Vy cmVudENvbW1hbmQgIT0gTlVMTCk7CisJQXNzZXJ0KE9pZElzVmFsaWQoY3VycmVudEV2ZW50VHJp Z2dlclN0YXRlLT5jdXJyZW50Q29tbWFuZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkKSk7CisKKwlk ZWYgPSAoQ29sdW1uRGVmICopIHN1YmNtZC0+ZGVmOworCUFzc2VydChJc0EoZGVmLCBDb2x1bW5E ZWYpKTsKKworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjdXJyZW50RXZlbnRUcmln Z2VyU3RhdGUtPmN4dCk7CisKKwluZXdzdWIgPSBwYWxsb2Moc2l6ZW9mKENvbGxlY3RlZEFUU3Vi Y21kKSk7CisJbmV3c3ViLT5wYXJzZXRyZWUgPSAoTm9kZSAqKWNvcHlPYmplY3Qoc3ViY21kKTsK KworCWF0dHJlbGF0aW9uID0gdGFibGVfb3BlbihBdHRyaWJ1dGVSZWxhdGlvbklkLCBSb3dFeGNs dXNpdmVMb2NrKTsKKworCS8qIExvb2sgdXAgdGhlIHRhcmdldCBjb2x1bW4gKi8KKwloZWFwVHVw ID0gU2VhcmNoU3lzQ2FjaGVDb3B5QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHN1YmNt ZC0+bmFtZSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGhlYXBUdXApKSAvKiBzaG91bGRuJ3Qg aGFwcGVuICovCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5F RF9DT0xVTU4pLAorCQkJCWVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIg ZG9lcyBub3QgZXhpc3QiLAorCQkJCQkgICBzdWJjbWQtPm5hbWUsIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbCkpKTsKKwlhdHRUdXAgPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVCho ZWFwVHVwKTsKKwlhdHRudW0gPSBhdHRUdXAtPmF0dG51bTsKKworCU9iamVjdEFkZHJlc3NTdWJT ZXQoYWRkcmVzcywgUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJUmVsYXRpb25HZXRSZWxpZChy ZWwpLCBhdHRudW0pOworCWhlYXBfZnJlZXR1cGxlKGhlYXBUdXApOworCXRhYmxlX2Nsb3NlKGF0 dHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwluZXdzdWItPmFkZHJlc3MgPSBhZGRyZXNz OworCisJaWYgKGRlZi0+cmF3X2RlZmF1bHQpCisJeworCQljaGFyCSAgICpkZWZleHByOworCisJ CWRlZmV4cHIgPSBub2RlVG9TdHJpbmcoZGVmLT5jb29rZWRfZGVmYXVsdCk7CisJCW5ld3N1Yi0+ dXNpbmdleHByID0gVGV4dERhdHVtR2V0Q1N0cmluZyhEaXJlY3RGdW5jdGlvbkNhbGwyKHBnX2dl dF9leHByLAorCQkJCQkJCQkJCQkJCQkJCQlDU3RyaW5nR2V0VGV4dERhdHVtKGRlZmV4cHIpLAor CQkJCQkJCQkJCQkJCQkJCQlSZWxhdGlvbkdldFJlbGlkKHJlbCkpKTsKKwl9CisJZWxzZQorCQlu ZXdzdWItPnVzaW5nZXhwciA9IE5VTEw7CisKIAljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1 cnJlbnRDb21tYW5kLT5kLmFsdGVyVGFibGUuc3ViY21kcyA9CiAJCWxhcHBlbmQoY3VycmVudEV2 ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFuZC0+ZC5hbHRlclRhYmxlLnN1YmNtZHMsIG5l d3N1Yik7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIH0KIAorLyoKKyAqIEV2 ZW50VHJpZ2dlckFsdGVyVHlwZUVuZAorICoJCUZpbmlzaCB1cCBzYXZpbmcgYW4gQUxURVIgVFlQ RSBjb21tYW5kLCBhbmQgYWRkIGl0IHRvIGNvbW1hbmQgbGlzdC4KKyAqLwordm9pZAorRXZlbnRU cmlnZ2VyQWx0ZXJUeXBlRW5kKE5vZGUgKnN1YmNtZCwgT2JqZWN0QWRkcmVzcyBhZGRyZXNzLCBi b29sIHJld3JpdGUpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisJQ29sbGVjdGVkQVRTdWJj bWQgKm5ld3N1YjsKKwlMaXN0Q2VsbCAgICpjZWxsOworCUNvbGxlY3RlZENvbW1hbmQgKmNtZDsK KwlBbHRlclRhYmxlQ21kICphbHRzdWJjbWQgPSAoQWx0ZXJUYWJsZUNtZCAqKXN1YmNtZDsKKwor CS8qIGlnbm9yZSBpZiBldmVudCB0cmlnZ2VyIGNvbnRleHQgbm90IHNldCwgb3IgY29sbGVjdGlv biBkaXNhYmxlZCAqLworCWlmICghY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlIHx8CisJCWN1cnJl bnRFdmVudFRyaWdnZXJTdGF0ZS0+Y29tbWFuZENvbGxlY3Rpb25JbmhpYml0ZWQpCisJCXJldHVy bjsKKworCWNtZCA9IGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQ7CisK KwlBc3NlcnQoSXNBKHN1YmNtZCwgQWx0ZXJUYWJsZUNtZCkpOworCUFzc2VydChjbWQgIT0gTlVM TCk7CisJQXNzZXJ0KE9pZElzVmFsaWQoY21kLT5kLmFsdGVyVGFibGUub2JqZWN0SWQpKTsKKwor CWZvcmVhY2goY2VsbCwgY21kLT5kLmFsdGVyVGFibGUuc3ViY21kcykKKwl7CisJCUNvbGxlY3Rl ZEFUU3ViY21kICpzdWIgPSAoQ29sbGVjdGVkQVRTdWJjbWQgKikgbGZpcnN0KGNlbGwpOworCQlB bHRlclRhYmxlQ21kICpjb2xsY21kID0gKEFsdGVyVGFibGVDbWQgKikgc3ViLT5wYXJzZXRyZWU7 CisKKwkJaWYgKGNvbGxjbWQtPnN1YnR5cGUgPT0gYWx0c3ViY21kLT5zdWJ0eXBlICYmCisJCQlh ZGRyZXNzLmNsYXNzSWQgPT0gc3ViLT5hZGRyZXNzLmNsYXNzSWQgJiYKKwkJCWFkZHJlc3Mub2Jq ZWN0SWQgPT0gc3ViLT5hZGRyZXNzLm9iamVjdElkICYmCisJCQlhZGRyZXNzLm9iamVjdFN1Yklk ID09IHN1Yi0+YWRkcmVzcy5vYmplY3RTdWJJZCkKKwkJeworCQkJY21kLT5kLmFsdGVyVGFibGUu cmV3cml0ZSB8PSByZXdyaXRlOworCQkJcmV0dXJuOworCQl9CisJfQorCisJb2xkY3h0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3h0KTsKKworCW5l d3N1YiA9IHBhbGxvYyhzaXplb2YoQ29sbGVjdGVkQVRTdWJjbWQpKTsKKwluZXdzdWItPmFkZHJl c3MgPSBhZGRyZXNzOworCW5ld3N1Yi0+cGFyc2V0cmVlID0gY29weU9iamVjdChzdWJjbWQpOwor CisJY21kLT5kLmFsdGVyVGFibGUucmV3cml0ZSB8PSByZXdyaXRlOworCWNtZC0+ZC5hbHRlclRh YmxlLnN1YmNtZHMgPSBsYXBwZW5kKGNtZC0+ZC5hbHRlclRhYmxlLnN1YmNtZHMsIG5ld3N1Yik7 CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKK30KKwogLyoKICAqIEV2ZW50VHJp Z2dlckFsdGVyVGFibGVFbmQKICAqCQlGaW5pc2ggdXAgc2F2aW5nIGFuIEFMVEVSIFRBQkxFIGNv bW1hbmQsIGFuZCBhZGQgaXQgdG8gY29tbWFuZCBsaXN0LgpAQCAtMTg2Myw2ICsyMTE4LDcgQEAg cGdfZXZlbnRfdHJpZ2dlcl9kZGxfY29tbWFuZHMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWNhc2Ug U0NUX0FsdGVyT3BGYW1pbHk6CiAJCQljYXNlIFNDVF9DcmVhdGVPcENsYXNzOgogCQkJY2FzZSBT Q1RfQWx0ZXJUU0NvbmZpZzoKKwkJCWNhc2UgU0NUX0NyZWF0ZVRhYmxlQXM6CiAJCQkJewogCQkJ CQljaGFyCSAgICppZGVudGl0eTsKIAkJCQkJY2hhcgkgICAqdHlwZTsKQEAgLTE4ODAsNiArMjEz Niw4IEBAIHBnX2V2ZW50X3RyaWdnZXJfZGRsX2NvbW1hbmRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CQkJCQlhZGRyID0gY21kLT5kLmNyZWF0ZW9wYy5hZGRyZXNzOwogCQkJCQllbHNlIGlmIChjbWQt PnR5cGUgPT0gU0NUX0FsdGVyVFNDb25maWcpCiAJCQkJCQlhZGRyID0gY21kLT5kLmF0c2NmZy5h ZGRyZXNzOworCQkJCQllbHNlIGlmIChjbWQtPnR5cGUgPT0gU0NUX0NyZWF0ZVRhYmxlQXMpCisJ CQkJCQlhZGRyID0gY21kLT5kLmN0YXMuYWRkcmVzczsKIAogCQkJCQkvKgogCQkJCQkgKiBJZiBh biBvYmplY3Qgd2FzIGRyb3BwZWQgaW4gdGhlIHNhbWUgY29tbWFuZCB3ZSBtYXkgZW5kCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL21lc29uLmJ1aWxkCmluZGV4IDQyY2NlZDllYmUuLjI4NDRkMzY1MjEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL21lc29uLmJ1aWxkCkBAIC0xNyw2ICsxNyw4IEBAIGJhY2tlbmRfc291cmNlcyArPSBm aWxlcygKICAgJ2NvcHl0by5jJywKICAgJ2NyZWF0ZWFzLmMnLAogICAnZGJjb21tYW5kcy5jJywK KyAgJ2RkbF9kZXBhcnNlLmMnLAorICAnZGRsX2pzb24uYycsCiAgICdkZWZpbmUuYycsCiAgICdk aXNjYXJkLmMnLAogICAnZHJvcGNtZHMuYycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9zZXF1ZW5jZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwppbmRleCBi ZmUyNzljZGRmLi4yOTY5ZDNkZjAxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9z ZXF1ZW5jZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKQEAgLTE3MDgs NiArMTcwOCw0OSBAQCBwcm9jZXNzX293bmVkX2J5KFJlbGF0aW9uIHNlcXJlbCwgTGlzdCAqb3du ZWRfYnksIGJvb2wgZm9yX2lkZW50aXR5KQogCQlyZWxhdGlvbl9jbG9zZSh0YWJsZXJlbCwgTm9M b2NrKTsKIH0KIAorLyoKKyAqIFJldHVybiBzZXF1ZW5jZSBwYXJhbWV0ZXJzLCBkZXRhaWxlZAor ICovCitTZXF1ZW5jZV92YWx1ZXMgKgorZ2V0X3NlcXVlbmNlX3ZhbHVlcyhPaWQgc2VxdWVuY2VJ ZCkKK3sKKwlCdWZmZXIgICAgICBidWY7CisJU2VxVGFibGUgICAgZWxtOworCVJlbGF0aW9uICAg IHNlcXJlbDsKKwlIZWFwVHVwbGUJc2VxdHVwbGU7CisJSGVhcFR1cGxlRGF0YSBzZXF0dXBsZWRh dGE7CisJRm9ybV9wZ19zZXF1ZW5jZSBzZXFmb3JtOworCUZvcm1fcGdfc2VxdWVuY2VfZGF0YSBz ZXE7CisJU2VxdWVuY2VfdmFsdWVzICpzZXF2YWx1ZXM7CisKKwlzZXF0dXBsZSA9IFNlYXJjaFN5 c0NhY2hlMShTRVFSRUxJRCwgc2VxdWVuY2VJZCk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHNl cXR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNlcXVlbmNl ICV1Iiwgc2VxdWVuY2VJZCk7CisJc2VxZm9ybSA9IChGb3JtX3BnX3NlcXVlbmNlKSBHRVRTVFJV Q1Qoc2VxdHVwbGUpOworCisJUmVsZWFzZVN5c0NhY2hlKHNlcXR1cGxlKTsKKworCS8qIE9wZW4g YW5kIGxvY2sgc2VxdWVuY2UgKi8KKwlpbml0X3NlcXVlbmNlKHNlcXVlbmNlSWQsICZlbG0sICZz ZXFyZWwpOworCisJaWYgKHBnX2NsYXNzX2FjbGNoZWNrKHNlcXVlbmNlSWQsIEdldFVzZXJJZCgp LAorCQlBQ0xfU0VMRUNUIHwgQUNMX1VTQUdFKSAhPSBBQ0xDSEVDS19PSykKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJ ZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2VxdWVuY2UgJXMiLAorCQkJCQkgICBSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShzZXFyZWwpKSk7CisKKwlzZXEgPSByZWFkX3NlcV90dXBsZShz ZXFyZWwsICZidWYsICZzZXF0dXBsZWRhdGEpOworCisJc2VxdmFsdWVzID0gKFNlcXVlbmNlX3Zh bHVlcyAqKSBwYWxsb2Moc2l6ZW9mKFNlcXVlbmNlX3ZhbHVlcykpOworCXNlcXZhbHVlcy0+bGFz dF92YWx1ZSA9IHNlcS0+bGFzdF92YWx1ZTsKKwlzZXF2YWx1ZXMtPnNlcWZvcm0gPSBzZXFmb3Jt OworCisJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWYpOworCXJlbGF0aW9uX2Nsb3NlKHNlcXJlbCwg Tm9Mb2NrKTsKKworCXJldHVybiBzZXF2YWx1ZXM7Cit9CiAKIC8qCiAgKiBSZXR1cm4gc2VxdWVu Y2UgcGFyYW1ldGVycyBpbiBhIGxpc3Qgb2YgdGhlIGZvcm0gY3JlYXRlZCBieSB0aGUgcGFyc2Vy LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA3ODA4MjQxZDNmLi5iNDRhY2M0ODkxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNDcyNyw2ICs0NzI3LDkgQEAgQVRQcmVwQ21k KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJsZUNtZCAqY21kLAogCQkJY21k ID0gQVRQYXJzZVRyYW5zZm9ybUNtZCh3cXVldWUsIHRhYiwgcmVsLCBjbWQsIHJlY3Vyc2UsIGxv Y2ttb2RlLAogCQkJCQkJCQkJICBBVF9QQVNTX1VOU0VULCBjb250ZXh0KTsKIAkJCUFzc2VydChj bWQgIT0gTlVMTCk7CisKKwkJCUV2ZW50VHJpZ2dlckFsdGVyVHlwZVN0YXJ0KGNtZCwgcmVsKTsK KwogCQkJLyogUGVyZm9ybXMgb3duIHJlY3Vyc2lvbiAqLwogCQkJQVRQcmVwQWx0ZXJDb2x1bW5U eXBlKHdxdWV1ZSwgdGFiLCByZWwsIHJlY3Vyc2UsIHJlY3Vyc2luZywgY21kLAogCQkJCQkJCQkg IGxvY2ttb2RlLCBjb250ZXh0KTsKQEAgLTQ5OTgsNiArNTAwMSw3IEBAIEFURXhlY0NtZChMaXN0 ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsCiB7CiAJT2JqZWN0QWRkcmVzcyBhZGRy ZXNzID0gSW52YWxpZE9iamVjdEFkZHJlc3M7CiAJUmVsYXRpb24JcmVsID0gdGFiLT5yZWw7CisJ Ym9vbAkJY29tbWFuZENvbGxlY3RlZCA9IGZhbHNlOwogCiAJc3dpdGNoIChjbWQtPnN1YnR5cGUp CiAJewpAQCAtNTEyMSw2ICs1MTI1LDggQEAgQVRFeGVjQ21kKExpc3QgKip3cXVldWUsIEFsdGVy ZWRUYWJsZUluZm8gKnRhYiwKIAkJY2FzZSBBVF9BbHRlckNvbHVtblR5cGU6CS8qIEFMVEVSIENP TFVNTiBUWVBFICovCiAJCQkvKiBwYXJzZSB0cmFuc2Zvcm1hdGlvbiB3YXMgZG9uZSBlYXJsaWVy ICovCiAJCQlhZGRyZXNzID0gQVRFeGVjQWx0ZXJDb2x1bW5UeXBlKHRhYiwgcmVsLCBjbWQsIGxv Y2ttb2RlKTsKKwkJCUV2ZW50VHJpZ2dlckFsdGVyVHlwZUVuZCgoTm9kZSAqKSBjbWQsIGFkZHJl c3MsIHRhYi0+cmV3cml0ZSk7CisJCQljb21tYW5kQ29sbGVjdGVkID0gdHJ1ZTsKIAkJCWJyZWFr OwogCQljYXNlIEFUX0FsdGVyQ29sdW1uR2VuZXJpY09wdGlvbnM6CS8qIEFMVEVSIENPTFVNTiBP UFRJT05TICovCiAJCQlhZGRyZXNzID0KQEAgLTUyOTMsOCArNTI5OSw4IEBAIEFURXhlY0NtZChM aXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsCiAJLyoKIAkgKiBSZXBvcnQgdGhl IHN1YmNvbW1hbmQgdG8gaW50ZXJlc3RlZCBldmVudCB0cmlnZ2Vycy4KIAkgKi8KLQlpZiAoY21k KQotCQlFdmVudFRyaWdnZXJDb2xsZWN0QWx0ZXJUYWJsZVN1YmNtZCgoTm9kZSAqKSBjbWQsIGFk ZHJlc3MpOworCWlmIChjbWQgJiYgIWNvbW1hbmRDb2xsZWN0ZWQpCisJCUV2ZW50VHJpZ2dlckNv bGxlY3RBbHRlclRhYmxlU3ViY21kKChOb2RlICopIGNtZCwgYWRkcmVzcywgdGFiLT5yZXdyaXRl KTsKIAogCS8qCiAJICogQnVtcCB0aGUgY29tbWFuZCBjb3VudGVyIHRvIGVuc3VyZSB0aGUgbmV4 dCBzdWJjb21tYW5kIGluIHRoZSBzZXF1ZW5jZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMK aW5kZXggYjBmNmZlNGZhNi4uMjFhOWNhZTc3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNt ZC5jCkBAIC0xMzk1LDYgKzEzOTUsNyBAQCBleHBhbmRUYWJsZUxpa2VDbGF1c2UoUmFuZ2VWYXIg KmhlYXBSZWwsIFRhYmxlTGlrZUNsYXVzZSAqdGFibGVfbGlrZV9jbGF1c2UpCiAJCWF0Y21kLT5j bWRzID0gYXRzdWJjbWRzOwogCQlhdGNtZC0+b2JqdHlwZSA9IE9CSkVDVF9UQUJMRTsKIAkJYXRj bWQtPm1pc3Npbmdfb2sgPSBmYWxzZTsKKwkJYXRjbWQtPnRhYmxlX2xpa2UgPSB0cnVlOwogCQly ZXN1bHQgPSBsY29ucyhhdGNtZCwgcmVzdWx0KTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggMzBi NTFiZjRkMy4uNDUwMWNjMzM3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5 LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTE2NzUsOCArMTY3NSwxMSBA QCBQcm9jZXNzVXRpbGl0eVNsb3coUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCWJyZWFrOwogCiAJ CQljYXNlIFRfQ3JlYXRlVGFibGVBc1N0bXQ6CisJCQkJRXZlbnRUcmlnZ2VyVGFibGVJbml0V3Jp dGVTdGFydChwYXJzZXRyZWUpOwogCQkJCWFkZHJlc3MgPSBFeGVjQ3JlYXRlVGFibGVBcyhwc3Rh dGUsIChDcmVhdGVUYWJsZUFzU3RtdCAqKSBwYXJzZXRyZWUsCiAJCQkJCQkJCQkJCXBhcmFtcywg cXVlcnlFbnYsIHFjKTsKKwkJCQlFdmVudFRyaWdnZXJUYWJsZUluaXRXcml0ZUVuZChhZGRyZXNz KTsKKwkJCQljb21tYW5kQ29sbGVjdGVkID0gdHJ1ZTsKIAkJCQlicmVhazsKIAogCQkJY2FzZSBU X1JlZnJlc2hNYXRWaWV3U3RtdDoKQEAgLTIyMDYsNiArMjIwOSwxMTIgQEAgVXRpbGl0eUNvbnRh aW5zUXVlcnkoTm9kZSAqcGFyc2V0cmVlKQogCX0KIH0KIAorLyoKKyAqIFJldHVybiB0aGUgZ2l2 ZW4gb2JqZWN0IHR5cGUgYXMgYSBzdHJpbmcuCisgKgorICogSWYgaXNncmFudCBpcyB0cnVlLCB0 aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoaWxlIGRlcGFyc2luZyBHUkFOVAorICogc3Rh dGVtZW50IGFuZCBzb21lIG9iamVjdCBuYW1lcyBhcmUgcmVwbGFjZWQuCisgKi8KK2NvbnN0IGNo YXIgKgorc3RyaW5naWZ5X29ianR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlLCBib29sIGlzZ3JhbnQp Cit7CisJc3dpdGNoIChvYmp0eXBlKQorCXsKKwkJY2FzZSBPQkpFQ1RfQUdHUkVHQVRFOgorCQkJ cmV0dXJuICJBR0dSRUdBVEUiOworCQljYXNlIE9CSkVDVF9DQVNUOgorCQkJcmV0dXJuICJDQVNU IjsKKwkJY2FzZSBPQkpFQ1RfQ09MTEFUSU9OOgorCQkJcmV0dXJuICJDT0xMQVRJT04iOworCQlj YXNlIE9CSkVDVF9DT0xVTU46CisJCQlyZXR1cm4gaXNncmFudCA/ICJUQUJMRSIgOiAiQ09MVU1O IjsKKwkJY2FzZSBPQkpFQ1RfQ09OVkVSU0lPTjoKKwkJCXJldHVybiAiQ09OVkVSU0lPTiI7CisJ CWNhc2UgT0JKRUNUX0RBVEFCQVNFOgorCQkJcmV0dXJuICJEQVRBQkFTRSI7CisJCWNhc2UgT0JK RUNUX0RPTUFJTjoKKwkJCXJldHVybiAiRE9NQUlOIjsKKwkJY2FzZSBPQkpFQ1RfRVZFTlRfVFJJ R0dFUjoKKwkJCXJldHVybiAiRVZFTlQgVFJJR0dFUiI7CisJCWNhc2UgT0JKRUNUX0VYVEVOU0lP TjoKKwkJCXJldHVybiAiRVhURU5TSU9OIjsKKwkJY2FzZSBPQkpFQ1RfRkRXOgorCQkJcmV0dXJu ICJGT1JFSUdOIERBVEEgV1JBUFBFUiI7CisJCWNhc2UgT0JKRUNUX0ZPUkVJR05fU0VSVkVSOgor CQkJcmV0dXJuIGlzZ3JhbnQgPyAiRk9SRUlHTiBTRVJWRVIiIDogIlNFUlZFUiI7CisJCWNhc2Ug T0JKRUNUX0ZPUkVJR05fVEFCTEU6CisJCQlyZXR1cm4gIkZPUkVJR04gVEFCTEUiOworCQljYXNl IE9CSkVDVF9GVU5DVElPTjoKKwkJCXJldHVybiAiRlVOQ1RJT04iOworCQljYXNlIE9CSkVDVF9J TkRFWDoKKwkJCXJldHVybiAiSU5ERVgiOworCQljYXNlIE9CSkVDVF9MQU5HVUFHRToKKwkJCXJl dHVybiAiTEFOR1VBR0UiOworCQljYXNlIE9CSkVDVF9MQVJHRU9CSkVDVDoKKwkJCXJldHVybiAi TEFSR0UgT0JKRUNUIjsKKwkJY2FzZSBPQkpFQ1RfTUFUVklFVzoKKwkJCXJldHVybiAiTUFURVJJ QUxJWkVEIFZJRVciOworCQljYXNlIE9CSkVDVF9PUENMQVNTOgorCQkJcmV0dXJuICJPUEVSQVRP UiBDTEFTUyI7CisJCWNhc2UgT0JKRUNUX09QRVJBVE9SOgorCQkJcmV0dXJuICJPUEVSQVRPUiI7 CisJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgorCQkJcmV0dXJuICJPUEVSQVRPUiBGQU1JTFkiOwor CQljYXNlIE9CSkVDVF9QT0xJQ1k6CisJCQlyZXR1cm4gIlBPTElDWSI7CisJCWNhc2UgT0JKRUNU X1BST0NFRFVSRToKKwkJCXJldHVybiAiUFJPQ0VEVVJFIjsKKwkJY2FzZSBPQkpFQ1RfUk9MRToK KwkJCXJldHVybiAiUk9MRSI7CisJCWNhc2UgT0JKRUNUX1JPVVRJTkU6CisJCQlyZXR1cm4gIlJP VVRJTkUiOworCQljYXNlIE9CSkVDVF9SVUxFOgorCQkJcmV0dXJuICJSVUxFIjsKKwkJY2FzZSBP QkpFQ1RfU0NIRU1BOgorCQkJcmV0dXJuICJTQ0hFTUEiOworCQljYXNlIE9CSkVDVF9TRVFVRU5D RToKKwkJCXJldHVybiAiU0VRVUVOQ0UiOworCQljYXNlIE9CSkVDVF9TVEFUSVNUSUNfRVhUOgor CQkJcmV0dXJuICJTVEFUSVNUSUNTIjsKKwkJY2FzZSBPQkpFQ1RfVEFCTEU6CisJCQlyZXR1cm4g IlRBQkxFIjsKKwkJY2FzZSBPQkpFQ1RfVEFCTEVTUEFDRToKKwkJCXJldHVybiAiVEFCTEVTUEFD RSI7CisJCWNhc2UgT0JKRUNUX1RSSUdHRVI6CisJCQlyZXR1cm4gIlRSSUdHRVIiOworCQljYXNl IE9CSkVDVF9UU0NPTkZJR1VSQVRJT046CisJCQlyZXR1cm4gIlRFWFQgU0VBUkNIIENPTkZJR1VS QVRJT04iOworCQljYXNlIE9CSkVDVF9UU0RJQ1RJT05BUlk6CisJCQlyZXR1cm4gIlRFWFQgU0VB UkNIIERJQ1RJT05BUlkiOworCQljYXNlIE9CSkVDVF9UU1BBUlNFUjoKKwkJCXJldHVybiAiVEVY VCBTRUFSQ0ggUEFSU0VSIjsKKwkJY2FzZSBPQkpFQ1RfVFNURU1QTEFURToKKwkJCXJldHVybiAi VEVYVCBTRUFSQ0ggVEVNUExBVEUiOworCQljYXNlIE9CSkVDVF9UWVBFOgorCQkJcmV0dXJuICJU WVBFIjsKKwkJY2FzZSBPQkpFQ1RfVVNFUl9NQVBQSU5HOgorCQkJcmV0dXJuICJVU0VSIE1BUFBJ TkciOworCQljYXNlIE9CSkVDVF9WSUVXOgorCQkJcmV0dXJuICJWSUVXIjsKKwkJY2FzZSBPQkpF Q1RfQUNDRVNTX01FVEhPRDoKKwkJY2FzZSBPQkpFQ1RfQU1PUDoKKwkJY2FzZSBPQkpFQ1RfQU1Q Uk9DOgorCQljYXNlIE9CSkVDVF9BVFRSSUJVVEU6CisJCWNhc2UgT0JKRUNUX0RFRkFVTFQ6CisJ CWNhc2UgT0JKRUNUX0RFRkFDTDoKKwkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKKwkJY2Fz ZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT046CisJCWNh c2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKKwkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJ T05fUkVMOgorCQljYXNlIE9CSkVDVF9TVUJTQ1JJUFRJT046CisJCWNhc2UgT0JKRUNUX1RBQkNP TlNUUkFJTlQ6CisJCWNhc2UgT0JKRUNUX1RSQU5TRk9STToKKwkJCWVsb2coRVJST1IsICJ1bnN1 cHBvcnRlZCBvYmplY3QgdHlwZSAlZCIsIG9ianR5cGUpOworCX0KKworCXJldHVybiAiPz8/IjsJ CQkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworfQogCiAvKgogICogQWx0ZXJPYmplY3RUeXBl Q29tbWFuZFRhZwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdF90eXBl LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0X3R5cGUuYwppbmRleCAxMjQwMmEwNjM3 Li43YjQ3NmFkYjIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0X3R5 cGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0X3R5cGUuYwpAQCAtMjcsOCAr MjcsNiBAQAogI2luY2x1ZGUgInV0aWxzL251bWVyaWMuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNj YWNoZS5oIgogCi1zdGF0aWMgY2hhciAqcHJpbnRUeXBtb2QoY29uc3QgY2hhciAqdHlwbmFtZSwg aW50MzIgdHlwbW9kLCBPaWQgdHlwbW9kb3V0KTsKLQogCiAvKgogICogU1FMIGZ1bmN0aW9uOiBm b3JtYXRfdHlwZSh0eXBlX29pZCwgdHlwZW1vZCkKQEAgLTM2Myw3ICszNjEsNyBAQCBmb3JtYXRf dHlwZV93aXRoX3R5cGVtb2QoT2lkIHR5cGVfb2lkLCBpbnQzMiB0eXBlbW9kKQogLyoKICAqIEFk ZCB0eXBtb2QgZGVjb3JhdGlvbiB0byB0aGUgYmFzaWMgdHlwZSBuYW1lCiAgKi8KLXN0YXRpYyBj aGFyICoKK2NoYXIgKgogcHJpbnRUeXBtb2QoY29uc3QgY2hhciAqdHlwbmFtZSwgaW50MzIgdHlw bW9kLCBPaWQgdHlwbW9kb3V0KQogewogCWNoYXIJICAgKnJlczsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYwppbmRleCA0NjE3MzVlODRmLi5jOGY1NDcxYjE4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jCkBAIC00OTksMjIgKzQ5OSwxNSBAQCBzdGF0aWMgdm9pZCBnZXRfZnJvbV9jbGF1 c2VfY29sZGVmbGlzdChSYW5nZVRibEZ1bmN0aW9uICpydGZ1bmMsCiAJCQkJCQkJCQkgICBkZXBh cnNlX2NvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIHZvaWQgZ2V0X3RhYmxlc2FtcGxlX2RlZihU YWJsZVNhbXBsZUNsYXVzZSAqdGFibGVzYW1wbGUsCiAJCQkJCQkJCWRlcGFyc2VfY29udGV4dCAq Y29udGV4dCk7Ci1zdGF0aWMgdm9pZCBnZXRfb3BjbGFzc19uYW1lKE9pZCBvcGNsYXNzLCBPaWQg YWN0dWFsX2RhdGF0eXBlLAotCQkJCQkJCSBTdHJpbmdJbmZvIGJ1Zik7CiBzdGF0aWMgTm9kZSAq cHJvY2Vzc0luZGlyZWN0aW9uKE5vZGUgKm5vZGUsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCk7 CiBzdGF0aWMgdm9pZCBwcmludFN1YnNjcmlwdHMoU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsIGRl cGFyc2VfY29udGV4dCAqY29udGV4dCk7CiBzdGF0aWMgY2hhciAqZ2V0X3JlbGF0aW9uX25hbWUo T2lkIHJlbGlkKTsKIHN0YXRpYyBjaGFyICpnZW5lcmF0ZV9yZWxhdGlvbl9uYW1lKE9pZCByZWxp ZCwgTGlzdCAqbmFtZXNwYWNlcyk7CiBzdGF0aWMgY2hhciAqZ2VuZXJhdGVfcXVhbGlmaWVkX3Jl bGF0aW9uX25hbWUoT2lkIHJlbGlkKTsKLXN0YXRpYyBjaGFyICpnZW5lcmF0ZV9mdW5jdGlvbl9u YW1lKE9pZCBmdW5jaWQsIGludCBuYXJncywKLQkJCQkJCQkJCUxpc3QgKmFyZ25hbWVzLCBPaWQg KmFyZ3R5cGVzLAotCQkJCQkJCQkJYm9vbCBoYXNfdmFyaWFkaWMsIGJvb2wgKnVzZV92YXJpYWRp Y19wLAotCQkJCQkJCQkJUGFyc2VFeHByS2luZCBzcGVjaWFsX2V4cHJraW5kKTsKIHN0YXRpYyBj aGFyICpnZW5lcmF0ZV9vcGVyYXRvcl9uYW1lKE9pZCBvcGVyaWQsIE9pZCBhcmcxLCBPaWQgYXJn Mik7CiBzdGF0aWMgdm9pZCBhZGRfY2FzdF90byhTdHJpbmdJbmZvIGJ1ZiwgT2lkIHR5cGlkKTsK IHN0YXRpYyBjaGFyICpnZW5lcmF0ZV9xdWFsaWZpZWRfdHlwZV9uYW1lKE9pZCB0eXBpZCk7CiBz dGF0aWMgdGV4dCAqc3RyaW5nX3RvX3RleHQoY2hhciAqc3RyKTsKLXN0YXRpYyBjaGFyICpmbGF0 dGVuX3JlbG9wdGlvbnMoT2lkIHJlbGlkKTsKIHN0YXRpYyB2b2lkIGdldF9yZWxvcHRpb25zKFN0 cmluZ0luZm8gYnVmLCBEYXR1bSByZWxvcHRpb25zKTsKIAogI2RlZmluZSBvbmx5X21hcmtlcihy dGUpICAoKHJ0ZSktPmluaCA/ICIiIDogIk9OTFkgIikKQEAgLTE4ODMsNiArMTg3NiwxNCBAQCBw Z19nZXRfcGFydGtleWRlZl9jb2x1bW5zKE9pZCByZWxpZCwgYm9vbCBwcmV0dHkpCiAJcmV0dXJu IHBnX2dldF9wYXJ0a2V5ZGVmX3dvcmtlcihyZWxpZCwgcHJldHR5RmxhZ3MsIHRydWUsIGZhbHNl KTsKIH0KIAorLyogSW50ZXJuYWwgdmVyc2lvbiB0aGF0IHJlcG9ydHMgdGhlIGZ1bGwgcGFydGl0 aW9uIGtleSBkZWZpbml0aW9uICovCitjaGFyICoKK3BnX2dldF9wYXJ0a2V5ZGVmX3N0cmluZyhP aWQgcmVsaWQpCit7CisJcmV0dXJuIHBnX2dldF9wYXJ0a2V5ZGVmX3dvcmtlcihyZWxpZCwgR0VU X1BSRVRUWV9GTEFHUyhmYWxzZSksIGZhbHNlLAorCQkJCQkJCQkJZmFsc2UpOworfQorCiAvKgog ICogSW50ZXJuYWwgd29ya2hvcnNlIHRvIGRlY29tcGlsZSBhIHBhcnRpdGlvbiBrZXkgZGVmaW5p dGlvbi4KICAqLwpAQCAtMjEzMCw2ICsyMTMxLDE2IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX2V4 dChQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9URVhUX1Aoc3RyaW5nX3RvX3RleHQocmVz KSk7CiB9CiAKKy8qCisgKiBJbnRlcm5hbCB2ZXJzaW9uIHRoYXQgcmV0dXJucyB0aGUgZGVmaW5p dGlvbiBvZiBhIENPTlNUUkFJTlQgY29tbWFuZAorICovCitjaGFyICoKK3BnX2dldF9jb25zdHJh aW50ZGVmX3N0cmluZyhPaWQgY29uc3RyYWludElkKQoreworCXJldHVybiBwZ19nZXRfY29uc3Ry YWludGRlZl93b3JrZXIoY29uc3RyYWludElkLCBmYWxzZSwKKwkJCQkJCQkJCSAgIEdFVF9QUkVU VFlfRkxBR1MoZmFsc2UpLCBmYWxzZSk7Cit9CisKIC8qCiAgKiBJbnRlcm5hbCB2ZXJzaW9uIHRo YXQgcmV0dXJucyBhIGZ1bGwgQUxURVIgVEFCTEUgLi4uIEFERCBDT05TVFJBSU5UIGNvbW1hbmQK ICAqLwpAQCAtMTE2MTYsNyArMTE2MjcsNyBAQCBnZXRfdGFibGVzYW1wbGVfZGVmKFRhYmxlU2Ft cGxlQ2xhdXNlICp0YWJsZXNhbXBsZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogICogYWN0 dWFsX2RhdGF0eXBlLiAgKElmIHlvdSBkb24ndCB3YW50IHRoaXMgYmVoYXZpb3IsIGp1c3QgcGFz cwogICogSW52YWxpZE9pZCBmb3IgYWN0dWFsX2RhdGF0eXBlLikKICAqLwotc3RhdGljIHZvaWQK K3ZvaWQKIGdldF9vcGNsYXNzX25hbWUoT2lkIG9wY2xhc3MsIE9pZCBhY3R1YWxfZGF0YXR5cGUs CiAJCQkJIFN0cmluZ0luZm8gYnVmKQogewpAQCAtMTIwMTAsNyArMTIwMjEsNyBAQCBnZW5lcmF0 ZV9xdWFsaWZpZWRfcmVsYXRpb25fbmFtZShPaWQgcmVsaWQpCiAgKgogICogVGhlIHJlc3VsdCBp bmNsdWRlcyBhbGwgbmVjZXNzYXJ5IHF1b3RpbmcgYW5kIHNjaGVtYS1wcmVmaXhpbmcuCiAgKi8K LXN0YXRpYyBjaGFyICoKK2NoYXIgKgogZ2VuZXJhdGVfZnVuY3Rpb25fbmFtZShPaWQgZnVuY2lk LCBpbnQgbmFyZ3MsIExpc3QgKmFyZ25hbWVzLCBPaWQgKmFyZ3R5cGVzLAogCQkJCQkgICBib29s IGhhc192YXJpYWRpYywgYm9vbCAqdXNlX3ZhcmlhZGljX3AsCiAJCQkJCSAgIFBhcnNlRXhwcktp bmQgc3BlY2lhbF9leHBya2luZCkKQEAgLTEyMzk2LDcgKzEyNDA3LDcgQEAgZ2V0X3JlbG9wdGlv bnMoU3RyaW5nSW5mbyBidWYsIERhdHVtIHJlbG9wdGlvbnMpCiAvKgogICogR2VuZXJhdGUgYSBD IHN0cmluZyByZXByZXNlbnRpbmcgYSByZWxhdGlvbidzIHJlbG9wdGlvbnMsIG9yIE5VTEwgaWYg bm9uZS4KICAqLwotc3RhdGljIGNoYXIgKgorY2hhciAqCiBmbGF0dGVuX3JlbG9wdGlvbnMoT2lk IHJlbGlkKQogewogCWNoYXIJICAgKnJlc3VsdCA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9ldnRjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0 Y2FjaGUuYwppbmRleCAxZjVlN2ViNGM2Li5mMmE5ZjVkY2MyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9ldnRjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L2V2dGNhY2hlLmMKQEAgLTE2Nyw2ICsxNjcsOCBAQCBCdWlsZEV2ZW50VHJpZ2dlckNhY2hlKHZv aWQpCiAJCQlldmVudCA9IEVWVF9TUUxEcm9wOwogCQllbHNlIGlmIChzdHJjbXAoZXZ0ZXZlbnQs ICJ0YWJsZV9yZXdyaXRlIikgPT0gMCkKIAkJCWV2ZW50ID0gRVZUX1RhYmxlUmV3cml0ZTsKKwkJ ZWxzZSBpZiAoc3RyY21wKGV2dGV2ZW50LCAidGFibGVfaW5pdF93cml0ZSIpID09IDApCisJCQll dmVudCA9IEVWVF9UYWJsZUluaXRXcml0ZTsKIAkJZWxzZQogCQkJY29udGludWU7CiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CmluZGV4IGY5ZjI2NDIyMDEuLjc0MmRmNDczODEgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtMTIwNTMsNCArMTIwNTMsMTEgQEAKICAgcHJvbmFtZSA9PiAnYW55 X3ZhbHVlX3RyYW5zZm4nLCBwcm9yZXR0eXBlID0+ICdhbnllbGVtZW50JywKICAgcHJvYXJndHlw ZXMgPT4gJ2FueWVsZW1lbnQgYW55ZWxlbWVudCcsIHByb3NyYyA9PiAnYW55X3ZhbHVlX3RyYW5z Zm4nIH0sCiAKK3sgb2lkID0+ICc0NjQyJywgZGVzY3IgPT4gJ2RlcGFyc2UgdGhlIERETCBjb21t YW5kIGludG8gYSBKU09OIGZvcm1hdCBzdHJpbmcnLAorICBwcm9uYW1lID0+ICdkZGxfZGVwYXJz ZV90b19qc29uJywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCisgIHByb2FyZ3R5cGVzID0+ICdwZ19k ZGxfY29tbWFuZCcsIHByb3NyYyA9PiAnZGRsX2RlcGFyc2VfdG9fanNvbicgfSwKK3sgb2lkID0+ ICc0NjQzJywgZGVzY3IgPT4gJ2V4cGFuZCBKU09OIGZvcm1hdCBEREwgdG8gYSBwbGFpbiB0ZXh0 IERETCBjb21tYW5kJywKKyAgcHJvbmFtZSA9PiAnZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQn LCBwcm9yZXR0eXBlID0+ICd0ZXh0JywKKyAgcHJvYXJndHlwZXMgPT4gJ3RleHQnLCBwcm9zcmMg PT4gJ2RkbF9kZXBhcnNlX2V4cGFuZF9jb21tYW5kJyB9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9l dmVudF90cmlnZ2VyLmgKaW5kZXggNWVkNmVjZTU1NS4uY2JhNGU3MjQ1NSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oCisrKyBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2V2ZW50X3RyaWdnZXIuaApAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgImNhdGFs b2cvZGVwZW5kZW5jeS5oIgogI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfZXZlbnRfdHJpZ2dlci5oIgorI2luY2x1ZGUgImxpYi9pbGlzdC5o IgogI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKICNpbmNsdWRlICJ0Y29wL2NtZHRhZy5o IgogI2luY2x1ZGUgInRjb3AvZGVwYXJzZV91dGlsaXR5LmgiCkBAIC0yOSw2ICszMCw0NCBAQCB0 eXBlZGVmIHN0cnVjdCBFdmVudFRyaWdnZXJEYXRhCiAJQ29tbWFuZFRhZwl0YWc7CiB9IEV2ZW50 VHJpZ2dlckRhdGE7CiAKK3R5cGVkZWYgc3RydWN0IEV2ZW50VHJpZ2dlclF1ZXJ5U3RhdGUKK3sK KwkvKiBtZW1vcnkgY29udGV4dCBmb3IgdGhpcyBzdGF0ZSdzIG9iamVjdHMgKi8KKwlNZW1vcnlD b250ZXh0IGN4dDsKKworCS8qIHNxbF9kcm9wICovCisJc2xpc3RfaGVhZAlTUUxEcm9wTGlzdDsK Kwlib29sCQlpbl9zcWxfZHJvcDsKKworCS8qIHRhYmxlX3Jld3JpdGUgKi8KKwlPaWQJCQl0YWJs ZV9yZXdyaXRlX29pZDsJLyogSW52YWxpZE9pZCwgb3Igc2V0IGZvciB0YWJsZV9yZXdyaXRlCisJ CQkJCQkJCQkgKiBldmVudCAqLworCWludAkJCXRhYmxlX3Jld3JpdGVfcmVhc29uOwkvKiBBVF9S RVdSSVRFIHJlYXNvbiAqLworCisJLyogU3VwcG9ydCBmb3IgY29tbWFuZCBjb2xsZWN0aW9uICov CisJYm9vbAkJY29tbWFuZENvbGxlY3Rpb25JbmhpYml0ZWQ7CisJQ29sbGVjdGVkQ29tbWFuZCAq Y3VycmVudENvbW1hbmQ7CisJTGlzdAkgICAqY29tbWFuZExpc3Q7CS8qIGxpc3Qgb2YgQ29sbGVj dGVkQ29tbWFuZDsgc2VlCisJCQkJCQkJCSAqIGRlcGFyc2VfdXRpbGl0eS5oICovCisJc3RydWN0 IEV2ZW50VHJpZ2dlclF1ZXJ5U3RhdGUgKnByZXZpb3VzOworfSBFdmVudFRyaWdnZXJRdWVyeVN0 YXRlOworCisvKiBTdXBwb3J0IGZvciBkcm9wcGVkIG9iamVjdHMgKi8KK3R5cGVkZWYgc3RydWN0 IFNRTERyb3BPYmplY3QKK3sKKwlPYmplY3RBZGRyZXNzIGFkZHJlc3M7CisJY29uc3QgY2hhciAq c2NoZW1hbmFtZTsKKwljb25zdCBjaGFyICpvYmpuYW1lOworCWNvbnN0IGNoYXIgKm9iamlkZW50 aXR5OworCWNvbnN0IGNoYXIgKm9iamVjdHR5cGU7CisJTGlzdAkgICAqYWRkcm5hbWVzOworCUxp c3QJICAgKmFkZHJhcmdzOworCWJvb2wJCW9yaWdpbmFsOworCWJvb2wJCW5vcm1hbDsKKwlib29s CQlpc3RlbXA7CisJc2xpc3Rfbm9kZQluZXh0OworfSBTUUxEcm9wT2JqZWN0OworCiAjZGVmaW5l IEFUX1JFV1JJVEVfQUxURVJfUEVSU0lTVEVOQ0UJMHgwMQogI2RlZmluZSBBVF9SRVdSSVRFX0RF RkFVTFRfVkFMCQkJMHgwMgogI2RlZmluZSBBVF9SRVdSSVRFX0NPTFVNTl9SRVdSSVRFCQkweDA0 CkBAIC01NSw2ICs5NCwxMCBAQCBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJERExDb21tYW5kRW5k KE5vZGUgKnBhcnNldHJlZSk7CiBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJTUUxEcm9wKE5vZGUg KnBhcnNldHJlZSk7CiBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJUYWJsZVJld3JpdGUoTm9kZSAq cGFyc2V0cmVlLCBPaWQgdGFibGVPaWQsIGludCByZWFzb24pOwogCitleHRlcm4gdm9pZCBFdmVu dFRyaWdnZXJUYWJsZUluaXRXcml0ZVN0YXJ0KE5vZGUgKnBhcnNldHJlZSk7CitleHRlcm4gdm9p ZCBFdmVudFRyaWdnZXJUYWJsZUluaXRXcml0ZShOb2RlICpwYXJzZXRyZWUsIE9iamVjdEFkZHJl c3MgYWRkcmVzcyk7CitleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJUYWJsZUluaXRXcml0ZUVuZChP YmplY3RBZGRyZXNzIGFkZHJlc3MpOworCiBleHRlcm4gYm9vbCBFdmVudFRyaWdnZXJCZWdpbkNv bXBsZXRlUXVlcnkodm9pZCk7CiBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJFbmRDb21wbGV0ZVF1 ZXJ5KHZvaWQpOwogZXh0ZXJuIGJvb2wgdHJhY2tEcm9wcGVkT2JqZWN0c05lZWRlZCh2b2lkKTsK QEAgLTcxLDcgKzExNCwxMiBAQCBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJDb2xsZWN0U2ltcGxl Q29tbWFuZChPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJB bHRlclRhYmxlU3RhcnQoTm9kZSAqcGFyc2V0cmVlKTsKIGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dl ckFsdGVyVGFibGVSZWxpZChPaWQgb2JqZWN0SWQpOwogZXh0ZXJuIHZvaWQgRXZlbnRUcmlnZ2Vy Q29sbGVjdEFsdGVyVGFibGVTdWJjbWQoTm9kZSAqc3ViY21kLAotCQkJCQkJCQkJCQkJT2JqZWN0 QWRkcmVzcyBhZGRyZXNzKTsKKwkJCQkJCQkJCQkJCU9iamVjdEFkZHJlc3MgYWRkcmVzcywKKwkJ CQkJCQkJCQkJCWJvb2wgcmV3cml0ZSk7CisKK2V4dGVybiB2b2lkIEV2ZW50VHJpZ2dlckFsdGVy VHlwZVN0YXJ0KEFsdGVyVGFibGVDbWQgKnN1YmNtZCwgUmVsYXRpb24gcmVsKTsKK2V4dGVybiB2 b2lkIEV2ZW50VHJpZ2dlckFsdGVyVHlwZUVuZChOb2RlICpzdWJjbWQsIE9iamVjdEFkZHJlc3Mg YWRkcmVzcywKKwkJCQkJCQkJCSBib29sIHJld3JpdGUpOwogZXh0ZXJuIHZvaWQgRXZlbnRUcmln Z2VyQWx0ZXJUYWJsZUVuZCh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgRXZlbnRUcmlnZ2VyQ29sbGVj dEdyYW50KEludGVybmFsR3JhbnQgKmlzdG10KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3NlcXVlbmNlLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oCmluZGV4 IDdkYjdiM2RhN2IuLmMwYTM5NTk2YWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3NlcXVlbmNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaApAQCAtMTUs NiArMTUsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWFkZXIuaCIKICNpbmNsdWRlICJj YXRhbG9nL29iamVjdGFkZHJlc3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3NlcXVlbmNlLmgi CiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCiAjaW5jbHVk ZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgpAQCAtNTEsOSArNTIsMTcgQEAgdHlwZWRlZiBzdHJ1Y3Qg eGxfc2VxX3JlYwogCS8qIFNFUVVFTkNFIFRVUExFIERBVEEgRk9MTE9XUyBBVCBUSEUgRU5EICov CiB9IHhsX3NlcV9yZWM7CiAKKy8qIEluZm9ybWF0aW9uIG5lZWRlZCB0byBkZWZpbmUgYSBzZXF1 ZW5jZS4gKi8KK3R5cGVkZWYgc3RydWN0IFNlcXVlbmNlX3ZhbHVlcworeworCUZvcm1fcGdfc2Vx dWVuY2Ugc2VxZm9ybTsKKwlpbnQ2NAkJbGFzdF92YWx1ZTsKK30gU2VxdWVuY2VfdmFsdWVzOwor CiBleHRlcm4gaW50NjQgbmV4dHZhbF9pbnRlcm5hbChPaWQgcmVsaWQsIGJvb2wgY2hlY2tfcGVy bWlzc2lvbnMpOwogZXh0ZXJuIERhdHVtIG5leHR2YWwoUEdfRlVOQ1RJT05fQVJHUyk7CiBleHRl cm4gTGlzdCAqc2VxdWVuY2Vfb3B0aW9ucyhPaWQgcmVsaWQpOworZXh0ZXJuIFNlcXVlbmNlX3Zh bHVlcyAqZ2V0X3NlcXVlbmNlX3ZhbHVlcyhPaWQgc2VxdWVuY2VJZCk7CiAKIGV4dGVybiBPYmpl Y3RBZGRyZXNzIERlZmluZVNlcXVlbmNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU2VxU3Rt dCAqc2VxKTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIEFsdGVyU2VxdWVuY2UoUGFyc2VTdGF0ZSAq cHN0YXRlLCBBbHRlclNlcVN0bXQgKnN0bXQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGNj N2IzMmIyNzkuLjE1M2JhMjk3YjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTIxNjcsNiAr MjE2Nyw3IEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyVGFibGVTdG10CiAJTGlzdAkgICAqY21kczsJ CQkvKiBsaXN0IG9mIHN1YmNvbW1hbmRzICovCiAJT2JqZWN0VHlwZQlvYmp0eXBlOwkJLyogdHlw ZSBvZiBvYmplY3QgKi8KIAlib29sCQltaXNzaW5nX29rOwkJLyogc2tpcCBlcnJvciBpZiB0YWJs ZSBtaXNzaW5nICovCisJYm9vbCAgICAgICAgdGFibGVfbGlrZTsJCS8qIGludGVybmFsbHkgZ2Vu ZXJhdGVkIGZvciBUYWJsZUxpa2VDbGF1c2UgKi8KIH0gQWx0ZXJUYWJsZVN0bXQ7CiAKIHR5cGVk ZWYgZW51bSBBbHRlclRhYmxlVHlwZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC9kZGxf ZGVwYXJzZS5oIGIvc3JjL2luY2x1ZGUvdGNvcC9kZGxfZGVwYXJzZS5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjFhMjcwMmM1YWMKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvaW5jbHVkZS90Y29wL2RkbF9kZXBhcnNlLmgKQEAgLTAsMCArMSwyMiBAQAorLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgorICogZGRsX2RlcGFyc2UuaAorICoKKyAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMTk5Ni0yMDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICog UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9m IENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS90Y29wL2RkbF9kZXBhcnNlLmgKKyAqCisg Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBERExfREVQQVJTRV9ICisjZGVmaW5lIERE TF9ERVBBUlNFX0gKKworI2luY2x1ZGUgInRjb3AvZGVwYXJzZV91dGlsaXR5LmgiCisKK2V4dGVy biBjaGFyICpkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQsIGJv b2wgdmVyYm9zZV9tb2RlKTsKK2V4dGVybiBjaGFyICpkZXBhcnNlX2RkbF9qc29uX3RvX3N0cmlu ZyhjaGFyICpqc29uYik7CitleHRlcm4gY2hhciAqZGVwYXJzZV9kcm9wX2NvbW1hbmQoY29uc3Qg Y2hhciAqb2JqaWRlbnRpdHksIGNvbnN0IGNoYXIgKm9iamVjdHR5cGUsCisJCQkJCQkJCSAgRHJv cEJlaGF2aW9yIGJlaGF2aW9yKTsKKworI2VuZGlmCQkJCQkJCS8qIERETF9ERVBBUlNFX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5LmggYi9zcmMvaW5j bHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oCmluZGV4IGI1ODU4MTBiOWEuLmE0YTEyMzc3Yjgg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5LmgKKysrIGIvc3Jj L2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaApAQCAtMjksNyArMjksOCBAQCB0eXBlZGVm IGVudW0gQ29sbGVjdGVkQ29tbWFuZFR5cGUKIAlTQ1RfQWx0ZXJPcEZhbWlseSwKIAlTQ1RfQWx0 ZXJEZWZhdWx0UHJpdmlsZWdlcywKIAlTQ1RfQ3JlYXRlT3BDbGFzcywKLQlTQ1RfQWx0ZXJUU0Nv bmZpZworCVNDVF9BbHRlclRTQ29uZmlnLAorCVNDVF9DcmVhdGVUYWJsZUFzCiB9IENvbGxlY3Rl ZENvbW1hbmRUeXBlOwogCiAvKgpAQCAtMzksNiArNDAsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb2xs ZWN0ZWRBVFN1YmNtZAogewogCU9iamVjdEFkZHJlc3MgYWRkcmVzczsJCS8qIGFmZmVjdGVkIGNv bHVtbiwgY29uc3RyYWludCwgaW5kZXgsIC4uLiAqLwogCU5vZGUJICAgKnBhcnNldHJlZTsKKwlj aGFyCSAgICp1c2luZ2V4cHI7CiB9IENvbGxlY3RlZEFUU3ViY21kOwogCiB0eXBlZGVmIHN0cnVj dCBDb2xsZWN0ZWRDb21tYW5kCkBAIC02Miw2ICs2NCw3IEBAIHR5cGVkZWYgc3RydWN0IENvbGxl Y3RlZENvbW1hbmQKIAkJewogCQkJT2lkCQkJb2JqZWN0SWQ7CiAJCQlPaWQJCQljbGFzc0lkOwor CQkJYm9vbAkJcmV3cml0ZTsKIAkJCUxpc3QJICAgKnN1YmNtZHM7CiAJCX0JCQlhbHRlclRhYmxl OwogCkBAIC0xMDAsNiArMTAzLDEzIEBAIHR5cGVkZWYgc3RydWN0IENvbGxlY3RlZENvbW1hbmQK IAkJewogCQkJT2JqZWN0VHlwZQlvYmp0eXBlOwogCQl9CQkJZGVmcHJpdnM7CisKKwkJLyogQ1JF QVRFIFRBQkxFIEFTICovCisJCXN0cnVjdAorCQl7CisJCQlPYmplY3RBZGRyZXNzIGFkZHJlc3M7 CisJCQlOb2RlCQkgKnJlYWxfY3JlYXRlOworCQl9CQkJY3RhczsKIAl9CQkJZDsKIAogCXN0cnVj dCBDb2xsZWN0ZWRDb21tYW5kICpwYXJlbnQ7CS8qIHdoZW4gbmVzdGVkICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS90Y29wL3V0aWxpdHkuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5o CmluZGV4IDU5ZTY0YWVhMDcuLmE2OGNlM2QzMzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rj b3AvdXRpbGl0eS5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5oCkBAIC05OSw2ICs5 OSw4IEBAIGV4dGVybiBRdWVyeSAqVXRpbGl0eUNvbnRhaW5zUXVlcnkoTm9kZSAqcGFyc2V0cmVl KTsKIAogZXh0ZXJuIENvbW1hbmRUYWcgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUp OwogCitleHRlcm4gY29uc3QgY2hhciAqc3RyaW5naWZ5X29ianR5cGUoT2JqZWN0VHlwZSBvYmp0 eXBlLCBib29sIGlzZ3JhbnQpOworCiBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKgogQ3JlYXRl Q29tbWFuZE5hbWUoTm9kZSAqcGFyc2V0cmVlKQogewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvYnVpbHRpbnMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5zLmgKaW5kZXggMmY4 YjQ2ZDZkYS4uYzkwYzMyYmZmMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRp bnMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9idWlsdGlucy5oCkBAIC0xMjcsNiArMTI3LDcg QEAgZXh0ZXJuIGNoYXIgKmZvcm1hdF90eXBlX2V4dGVuZGVkKE9pZCB0eXBlX29pZCwgaW50MzIg dHlwZW1vZCwgYml0czE2IGZsYWdzKTsKIGV4dGVybiBjaGFyICpmb3JtYXRfdHlwZV9iZShPaWQg dHlwZV9vaWQpOwogZXh0ZXJuIGNoYXIgKmZvcm1hdF90eXBlX2JlX3F1YWxpZmllZChPaWQgdHlw ZV9vaWQpOwogZXh0ZXJuIGNoYXIgKmZvcm1hdF90eXBlX3dpdGhfdHlwZW1vZChPaWQgdHlwZV9v aWQsIGludDMyIHR5cGVtb2QpOworZXh0ZXJuIGNoYXIgKnByaW50VHlwbW9kKGNvbnN0IGNoYXIg KnR5cG5hbWUsIGludDMyIHR5cG1vZCwgT2lkIHR5cG1vZG91dCk7CiAKIGV4dGVybiBpbnQzMiB0 eXBlX21heGltdW1fc2l6ZShPaWQgdHlwZV9vaWQsIGludDMyIHR5cGVtb2QpOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS91dGlscy9ldnRjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvZXZ0 Y2FjaGUuaAppbmRleCBkMzQwMDI2NTE4Li45MWQ0YmRkNmIzIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS91dGlscy9ldnRjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2V2dGNhY2hlLmgK QEAgLTIyLDcgKzIyLDggQEAgdHlwZWRlZiBlbnVtCiAJRVZUX0RETENvbW1hbmRTdGFydCwKIAlF VlRfRERMQ29tbWFuZEVuZCwKIAlFVlRfU1FMRHJvcCwKLQlFVlRfVGFibGVSZXdyaXRlCisJRVZU X1RhYmxlUmV3cml0ZSwKKwlFVlRfVGFibGVJbml0V3JpdGUKIH0gRXZlbnRUcmlnZ2VyRXZlbnQ7 CiAKIHR5cGVkZWYgc3RydWN0CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRp bHMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCmluZGV4IDFhNDJkOWYzOWIuLjlh ZGM1ODkxNzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCisrKyBi L3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCkBAIC0yNiw5ICsyNiwxMSBAQCBleHRlcm4g Y2hhciAqcGdfZ2V0X2luZGV4ZGVmX2NvbHVtbnMoT2lkIGluZGV4cmVsaWQsIGJvb2wgcHJldHR5 KTsKIGV4dGVybiBjaGFyICpwZ19nZXRfcXVlcnlkZWYoUXVlcnkgKnF1ZXJ5LCBib29sIHByZXR0 eSk7CiAKIGV4dGVybiBjaGFyICpwZ19nZXRfcGFydGtleWRlZl9jb2x1bW5zKE9pZCByZWxpZCwg Ym9vbCBwcmV0dHkpOworZXh0ZXJuIGNoYXIgKnBnX2dldF9wYXJ0a2V5ZGVmX3N0cmluZyhPaWQg cmVsaWQpOwogZXh0ZXJuIGNoYXIgKnBnX2dldF9wYXJ0Y29uc3RyZGVmX3N0cmluZyhPaWQgcGFy dGl0aW9uSWQsIGNoYXIgKmFsaWFzbmFtZSk7CiAKIGV4dGVybiBjaGFyICpwZ19nZXRfY29uc3Ry YWludGRlZl9jb21tYW5kKE9pZCBjb25zdHJhaW50SWQpOworZXh0ZXJuIGNoYXIgKnBnX2dldF9j b25zdHJhaW50ZGVmX3N0cmluZyhPaWQgY29uc3RyYWludElkKTsKIGV4dGVybiBjaGFyICpkZXBh cnNlX2V4cHJlc3Npb24oTm9kZSAqZXhwciwgTGlzdCAqZHBjb250ZXh0LAogCQkJCQkJCQlib29s IGZvcmNlcHJlZml4LCBib29sIHNob3dpbXBsaWNpdCk7CiBleHRlcm4gTGlzdCAqZGVwYXJzZV9j b250ZXh0X2Zvcihjb25zdCBjaGFyICphbGlhc25hbWUsIE9pZCByZWxpZCk7CkBAIC00MCw3ICs0 MiwxNCBAQCBleHRlcm4gTGlzdCAqc2VsZWN0X3J0YWJsZV9uYW1lc19mb3JfZXhwbGFpbihMaXN0 ICpydGFibGUsCiAJCQkJCQkJCQkJCSBCaXRtYXBzZXQgKnJlbHNfdXNlZCk7CiBleHRlcm4gY2hh ciAqZ2VuZXJhdGVfY29sbGF0aW9uX25hbWUoT2lkIGNvbGxpZCk7CiBleHRlcm4gY2hhciAqZ2Vu ZXJhdGVfb3BjbGFzc19uYW1lKE9pZCBvcGNsYXNzKTsKK2V4dGVybiBjaGFyICpnZW5lcmF0ZV9m dW5jdGlvbl9uYW1lKE9pZCBmdW5jaWQsIGludCBuYXJncywgTGlzdCAqYXJnbmFtZXMsCisJCQkJ CQkJCQlPaWQgKmFyZ3R5cGVzLCBib29sIGhhc192YXJpYWRpYywKKwkJCQkJCQkJCWJvb2wgKnVz ZV92YXJpYWRpY19wLAorCQkJCQkJCQkJUGFyc2VFeHByS2luZCBzcGVjaWFsX2V4cHJraW5kKTsK IGV4dGVybiBjaGFyICpnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhMaXN0ICpib3VuZF9kYXR1 bXMpOworZXh0ZXJuIHZvaWQgZ2V0X29wY2xhc3NfbmFtZShPaWQgb3BjbGFzcywgT2lkIGFjdHVh bF9kYXRhdHlwZSwKKwkJCQkJCQkgU3RyaW5nSW5mbyBidWYpOworZXh0ZXJuIGNoYXIgKmZsYXR0 ZW5fcmVsb3B0aW9ucyhPaWQgcmVsaWQpOwogCiBleHRlcm4gY2hhciAqcGdfZ2V0X3N0YXRpc3Rp Y3NvYmpkZWZfc3RyaW5nKE9pZCBzdGF0ZXh0aWQpOwogCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CmluZGV4IGI5NzE3NGQxNjAuLjA5NDY2ZGVlZWEgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CkBAIC0xNjI2LDYgKzE2MjYsOSBAQCBPU0luZm8KIE9TU0xDaXBoZXIKIE9TU0xEaWdlc3QKIE9W RVJMQVBQRUQKK09iakVsZW0KK09ialRyZWUKK09ialR5cGUKIE9iamVjdEFjY2Vzc0Ryb3AKIE9i amVjdEFjY2Vzc05hbWVzcGFjZVNlYXJjaAogT2JqZWN0QWNjZXNzUG9zdEFsdGVyCkBAIC0zMjAy LDYgKzMyMDUsNyBAQCBjb21wYXJlX2NvbnRleHQKIGNvbmZpZ192YXJfdmFsdWUKIGNvbnRhaW5f YWdnc19vZl9sZXZlbF9jb250ZXh0CiBjb252ZXJ0X3Rlc3RleHByX2NvbnRleHQKK2NvbnZTcGVj aWZpZXIKIGNvcHlfZGF0YV9kZXN0X2NiCiBjb3B5X2RhdGFfc291cmNlX2NiCiBjb3JlX1lZU1RZ UEUKLS0gCjIuMzAuMC53aW5kb3dzLjIKCg== --_007_OS0PR01MB571614EE7EEDBF7049DA4EAE94939OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0002-DDL-replication-for-Table-DDL-commands-2023_04_04.patch" Content-Description: 0002-DDL-replication-for-Table-DDL-commands-2023_04_04.patch Content-Disposition: attachment; filename="0002-DDL-replication-for-Table-DDL-commands-2023_04_04.patch"; size=243276; creation-date="Tue, 04 Apr 2023 03:07:06 GMT"; modification-date="Tue, 04 Apr 2023 03:13:06 GMT" Content-Transfer-Encoding: base64 RnJvbSBiY2EyMDg5MjljM2Q2YjU5YzJiMTA2NDkzYWFlODBhMTI3M2FjZGZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBNb24sIDMgQXByIDIwMjMgMjA6MzE6MjMgKzA4MDAKU3ViamVjdDogW1BBVENIIDIv Nl0gRERMIHJlcGxpY2F0aW9uIGZvciBUYWJsZSBEREwgY29tbWFuZHMKClRvIHN1cHBvcnQgRERM IHJlcGxpY2F0aW9uLCBpdCB1c2UgZXZlbnQgdHJpZ2dlciBhbmQgRERMIGRlcGFyc2luZwpmYWNp bGl0aWVzLiBEdXJpbmcgQ1JFQVRFIFBVQkxJQ0FUSU9OIHdlIHJlZ2lzdGVyIGEgY29tbWFuZCBl bmQgdHJpZ2dlciB0aGF0CmRlcGFyc2VzIHRoZSBEREwgKGlmIHRoZSBEREwgaXMgYW5ub3RhdGVk IGFzIGRkbHJlcGxvayBmb3IgRERMIHJlcGxpY2F0aW9uIGluCmNtZHRhZ2xpc3QuaCkgYXMgYSBK U09OIGJsb2IsIGFuZCBXQUwgbG9ncyBpdC4gVGhlIGV2ZW50IHRyaWdnZXIgaXMgYXV0b21hdGlj YWxseQpyZW1vdmVkIGF0IHRoZSB0aW1lIG9mIERST1AgUFVCTElDQVRJT04uIFRoZSBXQUxTZW5k ZXIgZGVjb2RlcyB0aGUgV0FMIGFuZCBzZW5kcwppdCBkb3duc3RyZWFtIHNpbWlsYXIgdG8gb3Ro ZXIgRE1MIGNvbW1hbmRzLiBUaGUgc3Vic2NyaWJlciB0aGVuIGNvbnZlcnRzIEpTT04KYmFjayB0 byB0aGUgRERMIGNvbW1hbmQgc3RyaW5nIGFuZCBleGVjdXRlcyBpdC4gSW4gdGhlIHN1YnNjcmli ZXIsIHdlIGFsc28gYWRkCnRoZSBuZXdseSBhZGRlZCByZWwgdG8gcGdfc3Vic2NyaXB0aW9uX3Jl bCBzbyB0aGF0IHRoZSBETUwgY2hhbmdlcyBvbiB0aGUgbmV3CnRhYmxlIGNhbiBiZSByZXBsaWNh dGVkIHdpdGhvdXQgaGF2aW5nIHRvIG1hbnVhbGx5IHJ1bgoiQUxURVIgU1VCU0NSSVBUSU9OIC4u LiBSRUZSRVNIIFBVQkxJQ0FUSU9OIi4KCi0gRm9yIG5vbi1yZXdyaXRlIEFMVEVSIG9iamVjdCBj b21tYW5kIGFuZAotICAgICBDUkVBVEUgb2JqZWN0IGNvbW1hbmQ6CndlIGRlcGFyc2UgdGhlIGNv bW1hbmQgYXQgZGRsX2NvbW1hbmRfZW5kIGV2ZW50IHRyaWdnZXIgYW5kIFdBTCBsb2cgdGhlCmRl cGFyc2VkIGpzb24gc3RyaW5nLiBUaGUgV0FMU2VuZGVyIGRlY29kZXMgdGhlIFdBTCBhbmQgc2Vu ZHMgaXQgdG8Kc3Vic2NyaWJlciBpZiB0aGUgY3JlYXRlZC9hbHRlcmVkIHRhYmxlIGlzIHB1Ymxp c2hlZC4gSXQgc3VwcG9ydHMgbW9zdCBvZgpBTFRFUiBUQUJMRSBjb21tYW5kIGV4Y2VwdCBzb21l IGNvbW1hbmRzKERETCByZWxhdGVkIHRvIFBBUlRJVElPTkVEIFRBQkxFCi4uLikgdGhhdCBpbnRy b2R1Y2VkIHJlY2VudGx5IHdoaWNoIGhhdmVuJ3QgYmVlbiBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJl bnQKZGRsX2RlcGFyc2VyLCB3ZSB3aWxsIHN1cHBvcnQgdGhhdCBsYXRlci4KCi0gRm9yIERST1Ag b2JqZWN0OgpUaGUgJ2NvbW1hbmQgc3RhcnQnIGV2ZW50IGhhbmRsZXIgbG9ncyBhIGRkbCBtZXNz YWdlIHdpdGggdGhlIHJlbGlkcyBvZgp0aGUgdGFibGVzIHRoYXQgYXJlIGRyb3BwZWQgd2hpY2gg dGhlIG91dHB1dCBwbHVnaW4gKHBnb3V0cHV0KSBzdG9yZXMgaW4KaXRzIGludGVybmFsIGRhdGEg c3RydWN0dXJlIGFmdGVyIHZlcmlmeWluZyB0aGF0IGl0IGlzIGZvciBhIHRhYmxlIHRoYXQgaXMK cGFydCBvZiB0aGUgcHVibGljYXRpb24uIExhdGVyIHRoZSAnY29tbWFuZCBlbmQnIGV2ZW50IGhh bmRsZXIgc2VuZHMgdGhlCmFjdHVhbCBkcm9wIG1lc3NhZ2UuIFBnb3V0cHV0IG9uIHJlY2Vpdmlu ZyB0aGUgY29tbWFuZCBlbmQsIG9ubHkgc2VuZHMgb3V0CnRoZSBkcm9wIGNvbW1hbmQgb25seSBp ZiBpdCBpcyBmb3Igb25lIG9mIHRoZSByZWxpZHMgbWFya2VkIGZvciBkZWxldGluZy4KClRoZSBy ZWFzb24gd2UgaGF2ZSB0byBkbyB0aGlzIGlzIGJlY2F1c2UsIG9uY2UgdGhlIGxvZ2ljYWwgZGVj b2RlcgpyZWNlaXZlcyB0aGUgJ2NvbW1hbmQgZW5kJyBtZXNzYWdlLCAgdGhlIHJlbGlkIG9mIHRo ZSB0YWJsZSBpcyBubyBsb25nZXIKdmFsaWQgYXMgaXQgaGFzIGJlZW4gZGVsZXRlZCBhcyBwYXJ0 IG9mIGludmFsaWRhdGlvbnMgcmVjZWl2ZWQgZm9yIHRoZQpkcm9wIHRhYmxlIGNvbW1hbmQuIEl0 IGlzIG5vIGxvbmdlciBwb3NzaWJsZSB0byB2ZXJpZnkgaWYgdGhlIHRhYmxlIGlzCnBhcnQgb2Yg dGhlIHB1YmxpY2F0aW9uIGxpc3Qgb3Igbm90LiBUbyBtYWtlIHRoaXMgcG9zc2libGUsIEkgaGF2 ZSBhZGRlZAp0d28gbW9yZSBlbGVtZW50cyB0byB0aGUgZGRsIHhsb2cgYW5kIGRkbCBtZXNzYWdl LCAocmVsaWQgYW5kIGNtZHR5cGUpLgoKV2UgY291bGQgaGF2ZSBhbHNvIGhhbmRsZWQgYWxsIHRo aXMgb24gdGhlIHN1YnNjcmliZXIgc2lkZSBhcyB3ZWxsLCBidXQKdGhhdCB3b3VsZCBtZWFuIHNl bmRpbmcgc3B1cmlvdXMgZGRsIG1lc3NhZ2VzIGZvciB0YWJsZXMgdGhhdCBhcmUgbm90IHBhcnQK b2YgdGhlIHB1YmxpY2F0aW9uLgoKLSBGb3IgdGFibGVfcmV3cml0ZSBBTFRFUiBUQUJMRSBjb21t YW5kOgooQUxURVIgQ09MVU1OIFRZUEUsIEFERCBDT0xVTU4gREVGQVVMVCwgU0VUIExPR0dFRCwg U0VUIEFDQ0VTUyBNRVRIT0QpCgp3ZSBkZXBhcnNlIHRoZSBjb21tYW5kIGFuZCBXQUwgbG9nIHRo ZSBkZXBhcnNlZCBqc29uIHN0cmluZyBhdAp0YWJsZV9yZXdyaXRlIGV2ZW50IHRyaWdnZXIuIFRo ZSBXQUxTZW5kZXIgZGVjb2RlcyB0aGUgV0FMIGFuZCBzZW5kcyBpdCB0bwpzdWJzY3JpYmVyIGlm IHRoZSBhbHRlcmVkIHRhYmxlIGlzIHB1Ymxpc2hlZC4gVGhlbiwgdGhlIFdBTFNlbmRlciB3aWxs CmNvbnZlcnQgdGhlIHVwY29taW5nIHJld3JpdGUgSU5TRVJUcyB0byBVUERBVEVzIGFuZCBzZW5k IHRoZW0gdG8Kc3Vic2NyaWJlciBzbyB0aGF0IHRoZSBkYXRhIGJldHdlZW4gcHVibGlzaGVyIGFu ZCBzdWJzY3JpYmVyIGNhbiBhbHdheXMgYmUKY29uc2lzdGVudC4gTm90ZSB0aGF0IHRoZSB0YWJs ZXMgdGhhdCBwdWJsaXNoIHJld3JpdGUgZGRsIG11c3QgaGF2ZSBhCnJlcGxpY2EgaWRlbnRpdHkg Y29uZmlndXJlZCBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHJlcGxpY2F0ZSB0aGUgdXBjb21pbmcK cmV3cml0ZSBVUERBVEVzLgoKV2UgZG8gdGhpcyB3YXkgYmVjYXVzZSBvZiB0d28gcmVhc29uOgoo MSkgVGhlIGRhdGEgYmVmb3JlIHRoZSByZXdyaXRlIGRkbCBjb3VsZCBhbHJlYWR5IGJlIGRpZmZl cmVudCBhbW9uZwpwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIuIFRvIG1ha2Ugc3VyZSB0aGUgZXh0 cmEgZGF0YSBpbiBzdWJzY3JpYmVyIHdoaWNoCmRvZXNuJ3QgZXhpc3QgaW4gcHVibGlzaGVyIGFs c28gZ2V0IHJld3JpdHRlbiwgd2UgbmVlZCB0byBsZXQgdGhlCnN1YnNjcmliZXIgZXhlY3V0ZSB0 aGUgb3JpZ2luYWwgcmV3cml0ZSBkZGwgdG8gcmV3cml0ZSBhbGwgdGhlIGRhdGEgYXQKZmlyc3Qu CgooMikgdGhlIGRhdGEgYWZ0ZXIgZXhlY3V0aW5nIHJld3JpdGUgZGRsIGNvdWxkIGJlIGRpZmZl cmVudCBhbW9uZwpwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIoZHVlIHRvIGRpZmZlcmVudCBmdW5j dGlvbnMvb3BlcmF0b3JzIHVzZWQgZHVyaW5nCnJld3JpdGUpLCBzbyB3ZSBuZWVkIHRvIHJlcGxp Y2F0ZSB0aGUgcmV3cml0ZSBVUERBVEVzIHRvIGtlZXAgdGhlIGRhdGEKY29uc2lzdGVudC4KClRP IElNUFJPVkU6ClRoaXMgYXBwcm9hY2ggY291bGQgYmUgaW1wcm92ZWQgYnkgbGV0dGluZyB0aGUg c3Vic2NyaWJlciB0cnkgdG8gdXBkYXRlCnRoZSBleHRyYSBkYXRhIGl0c2VsZiBpbnN0ZWFkIG9m IGRvaW5nIGZ1bGx5IHJld3JpdGUgZGRsIGFuZCB1c2UgdGhlCnVwY29taW5nIHJld3JpdGUgVVBE QVRFcyB0byByZXdyaXRlIHRoZSByZXN0IGRhdGEuIFRvIGFjaGlldmUgdGhpcywgd2UKY291bGQg bW9kaWZ5IHRoZSBkZXBhcnNlZCBqc29uIHN0cmluZyB0byB0ZW1wb3JhcmlseSByZW1vdmUgdGhl IHJld3JpdGUKcGFydCBhbmQgYWRkIHNvbWUgbG9naWMgaW4gc3Vic2NyaWJlciB0byB1cGRhdGUg dGhlIGV4dHJhIGRhdGEuCkJlc2lkZXMsIHdlIG1heSBub3QgbmVlZCB0byBzZW5kIHJld3JpdGUg Y2hhbmdlcyBmb3IgYWxsIHR5cGUgb2YgcmV3cml0ZQpkZGwsIGZvciBleGFtcGxlLCBpdCBzZWVt cyBmaW5lIHRvIHNraXAgc2VuZGluZyByZXdyaXRlIGNoYW5nZXMgZm9yIEFMVEVSClRBQkxFIFNF VCBMT0dHRUQgYXMgdGhlIGRhdGEgaW4gdGhlIHRhYmxlIGRvZXNuJ3QgYWN0dWFsbHkgYmUgY2hh bmdlZC4gV2UKY291bGQgdXNlIHRoZSBkZXBhcnNlciBhbmQgZXZlbnQgdHJpZ2dlciB0byBmaWx0 ZXIgdGhlc2UgZGRscyBhbmQgc2tpcApzZW5kaW5nIHJld3JpdGUgY2hhbmdlcyBmb3IgdGhlbS4K LS0tCiBjb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvZGRsLm91dCAgICAgICAgfCAgIDI2 ICsKIGNvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvZGRsLnNxbCAgICAgICAgICAgICB8ICAgIDUg KwogY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYyAgICAgICAgIHwgICA0OCAr CiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCAxMDQ1ICsr KysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFrZWZpbGUgICAg ICAgICAgfCAgICAxICsKIC4uLi9hY2Nlc3Mvcm1ncmRlc2MvbG9naWNhbGRkbG1zZ2Rlc2MuYyAg ICAgICB8ICAgNTIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL21lc29uLmJ1aWxkICAg ICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9ybWdyLmMgICAgICAgICAg ICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgICAg ICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jICAgICAgICAg IHwgICAgMiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICAgICAg fCAgMjUzICsrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgICAg ICB8ICAgIDIgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGxtZXNzYWdlLmMg IHwgICA4NCArKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMg IHwgIDI4MyArKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyAg ICAgIHwgICA0MSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyAg ICAgfCAgIDkzICsrCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyAgICAg ICAgfCAgIDI0ICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQg ICB8ICAgIDIgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICAg IHwgICA0MyArCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgICAg fCAgMTM1ICsrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAg IHwgIDI0MCArKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5j ICAgfCAgMjY4ICsrKystCiBzcmMvYmFja2VuZC90Y29wL2NtZHRhZy5jICAgICAgICAgICAgICAg ICAgICAgfCAgIDI2ICstCiBzcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyAgICAgICAgICAgICAg ICAgICAgfCAgICA2ICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAg ICAgICAgfCAgICAxICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAg ICAgICB8ICAgNzggKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAg ICAgICB8ICAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgICAgICAgICAg ICAgIHwgICAgMiArLQogc3JjL2Jpbi9wZ193YWxkdW1wL3JtZ3JkZXNjLmMgICAgICAgICAgICAg ICAgIHwgICAgMSArCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDMzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3QuaCAgICAgICAgICAgICAg ICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAg ICB8ICAgMjAgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgICAg IHwgICAzMCArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmggICAgICAg IHwgICAxNCArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmggICAgICAgICAg fCAgIDYwICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RlY29kZS5oICAgICAgICAgICAgICB8 ICAgIDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggICAgICAgIHwg ICAgNCArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vdXRwdXRfcGx1Z2luLmggICAgICAgfCAg IDI3ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggICAgICAgICAgICB8ICAg IDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgIHwgICAz OSArCiBzcmMvaW5jbHVkZS90Y29wL2NtZHRhZy5oICAgICAgICAgICAgICAgICAgICAgfCAgICA0 ICstCiBzcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaCAgICAgICAgICAgICAgICAgfCAgMzg2 ICsrKy0tLQogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAgICAgICAgIHwg ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0ICAgICAgICAgICAgfCAg ICA2ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCAgICAgfCAg NDIwICsrKy0tLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAg ICB8ICAgIDUgKwogNDYgZmlsZXMgY2hhbmdlZCwgMzMxNCBpbnNlcnRpb25zKCspLCA1MDQgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNj L2xvZ2ljYWxkZGxtc2dkZXNjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2RkbG1lc3NhZ2UuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dlci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vZGRsbWVzc2FnZS5oCgpkaWZmIC0tZ2l0IGEvY29udHJp Yi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL2RkbC5vdXQgYi9jb250cmliL3Rlc3RfZGVjb2Rpbmcv ZXhwZWN0ZWQvZGRsLm91dAppbmRleCA5YTI4YjVkZGM1Li4wZjUxZjJiNDFhIDEwMDY0NAotLS0g YS9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvZGRsLm91dAorKysgYi9jb250cmliL3Rl c3RfZGVjb2RpbmcvZXhwZWN0ZWQvZGRsLm91dApAQCAtODMxLDYgKzgzMSwzMiBAQCBTRUxFQ1Qg ZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90Jywg TlVMTCwgTlVMTCwgJ2luYwogLS0tLS0tCiAoMCByb3dzKQogCitTRUxFQ1QgJ2RkbCBtc2cxJyBG Uk9NIHBnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZSgnZGRsIG1zZzEnLCAxNjM5NCwgMSwgJ21z ZzEnKTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBkZGwgbXNnMQorKDEgcm93KQorCitTRUxF Q1QgJ2RkbCBtc2cyJyBGUk9NIHBnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZSgnZGRsIG1zZzIn LCAxNjM5NCwgMSwgJ3siZm10IjogIkNSRUFURSBTQ0hFTUEgJXtpZl9ub3RfZXhpc3RzfXMgJXtu YW1lfUkgJXthdXRob3JpemF0aW9ufXMiLCAibmFtZSI6ICJmb28iLCAiYXV0aG9yaXphdGlvbiI6 IHsiZm10IjogIkFVVEhPUklaQVRJT04gJXthdXRob3JpemF0aW9uX3JvbGV9SSIsICJwcmVzZW50 IjogZmFsc2UsICJhdXRob3JpemF0aW9uX3JvbGUiOiBudWxsfSwgImlmX25vdF9leGlzdHMiOiAi In0nKTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBkZGwgbXNnMgorKDEgcm93KQorCitTRUxF Q1QgJ2RkbCBtc2czJyBGUk9NIHBnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZSgnZGRsIG1zZzMn LCAxNjM5NCwgMSwgJ3siZm10IjogIkNSRUFURSAle3BlcnNpc3RlbmNlfXMgVEFCTEUgJXtpZl9u b3RfZXhpc3RzfXMgJXtpZGVudGl0eX1EICgle3RhYmxlX2VsZW1lbnRzOiwgfXMpICV7aW5oZXJp dHN9cyAle3RhYmxlc3BhY2V9cyAle29uX2NvbW1pdH1zICV7cGFydGl0aW9uX2J5fXMgJXthY2Nl c3NfbWV0aG9kfXMgJXt3aXRoX2NsYXVzZX1zIiwgImlkZW50aXR5IjogeyJvYmpuYW1lIjogImZv byIsICJzY2hlbWFuYW1lIjogImVsZW1lbnRfdGVzdCJ9LCAiaW5oZXJpdHMiOiB7ImZtdCI6ICJJ TkhFUklUUyAoJXtwYXJlbnRzOiwgfUQpIiwgInBhcmVudHMiOiBudWxsLCAicHJlc2VudCI6IGZh bHNlfSwgIm9uX2NvbW1pdCI6IHsiZm10IjogIk9OIENPTU1JVCAle29uX2NvbW1pdF92YWx1ZX1z IiwgInByZXNlbnQiOiBmYWxzZSwgIm9uX2NvbW1pdF92YWx1ZSI6IG51bGx9LCAidGFibGVzcGFj ZSI6IHsiZm10IjogIlRBQkxFU1BBQ0UgJXt0YWJsZXNwYWNlfUkiLCAicHJlc2VudCI6IGZhbHNl LCAidGFibGVzcGFjZSI6IG51bGx9LCAicGVyc2lzdGVuY2UiOiAiIiwgIndpdGhfY2xhdXNlIjog eyJmbXQiOiAiV0lUSCIsICJwcmVzZW50IjogZmFsc2V9LCAicGFydGl0aW9uX2J5IjogeyJmbXQi OiAiUEFSVElUSU9OIEJZICV7ZGVmaW5pdGlvbn1zIiwgInByZXNlbnQiOiBmYWxzZSwgImRlZmlu aXRpb24iOiBudWxsfSwgImFjY2Vzc19tZXRob2QiOiB7ImZtdCI6ICJVU0lORyAle2FjY2Vzc19t ZXRob2R9SSIsICJwcmVzZW50IjogZmFsc2UsICJhY2Nlc3NfbWV0aG9kIjogbnVsbH0sICJpZl9u b3RfZXhpc3RzIjogIiIsICJ0YWJsZV9lbGVtZW50cyI6IFt7ImZtdCI6ICIle25hbWV9SSAle2Nv bHR5cGV9VCBTVE9SQUdFICV7Y29sc3RvcmFnZX1zICV7Y29tcHJlc3Npb259cyAle2NvbGxhdGlv bn1zICV7bm90X251bGx9cyAle2RlZmF1bHR9cyAle2dlbmVyYXRlZF9jb2x1bW59cyIsICJuYW1l IjogImlkIiwgInR5cGUiOiAiY29sdW1uIiwgImNvbHR5cGUiOiB7InR5cG1vZCI6ICIiLCAidHlw YXJyYXkiOiBmYWxzZSwgInR5cGVuYW1lIjogImludDQiLCAic2NoZW1hbmFtZSI6ICJwZ19jYXRh bG9nIn0sICJkZWZhdWx0IjogeyJmbXQiOiAiREVGQVVMVCIsICJwcmVzZW50IjogZmFsc2V9LCAi bm90X251bGwiOiAiIiwgImNvbGxhdGlvbiI6IHsiZm10IjogIkNPTExBVEUiLCAicHJlc2VudCI6 IGZhbHNlfSwgImNvbHN0b3JhZ2UiOiAicGxhaW4iLCAiY29tcHJlc3Npb24iOiB7ImZtdCI6ICJD T01QUkVTU0lPTiAle2NvbXByZXNzaW9uX21ldGhvZH1JIiwgInByZXNlbnQiOiBmYWxzZSwgImNv bXByZXNzaW9uX21ldGhvZCI6IG51bGx9LCAiZ2VuZXJhdGVkX2NvbHVtbiI6IHsiZm10IjogIkdF TkVSQVRFRCBBTFdBWVMgQVMiLCAicHJlc2VudCI6IGZhbHNlfX1dfX0nKTsKKyA/Y29sdW1uPyAK Ky0tLS0tLS0tLS0KKyBkZGwgbXNnMworKDEgcm93KQorCitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xv Z2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2lu Y2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScpOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG1lc3NhZ2U6IHByZWZpeDog ZGRsIG1zZzEsIHJlbGlkOiAxNjM5NCwgY21kdHlwZTogRHJvcCBzdGFydCwgc3o6IDQgY29udGVu dDptc2cxCisgbWVzc2FnZTogcHJlZml4OiBkZGwgbXNnMiwgcmVsaWQ6IDE2Mzk0LCBjbWR0eXBl OiBEcm9wIHN0YXJ0LCBzejogMjE3IGNvbnRlbnQ6eyJmbXQiOiAiQ1JFQVRFIFNDSEVNQSAle2lm X25vdF9leGlzdHN9cyAle25hbWV9SSAle2F1dGhvcml6YXRpb259cyIsICJuYW1lIjogImZvbyIs ICJhdXRob3JpemF0aW9uIjogeyJmbXQiOiAiQVVUSE9SSVpBVElPTiAle2F1dGhvcml6YXRpb25f cm9sZX1JIiwgInByZXNlbnQiOiBmYWxzZSwgImF1dGhvcml6YXRpb25fcm9sZSI6IG51bGx9LCAi aWZfbm90X2V4aXN0cyI6ICIifQorIG1lc3NhZ2U6IHByZWZpeDogZGRsIG1zZzMsIHJlbGlkOiAx NjM5NCwgY21kdHlwZTogRHJvcCBzdGFydCwgc3o6IDEzOTYgY29udGVudDp7ImZtdCI6ICJDUkVB VEUgJXtwZXJzaXN0ZW5jZX1zIFRBQkxFICV7aWZfbm90X2V4aXN0c31zICV7aWRlbnRpdHl9RCAo JXt0YWJsZV9lbGVtZW50czosIH1zKSAle2luaGVyaXRzfXMgJXt0YWJsZXNwYWNlfXMgJXtvbl9j b21taXR9cyAle3BhcnRpdGlvbl9ieX1zICV7YWNjZXNzX21ldGhvZH1zICV7d2l0aF9jbGF1c2V9 cyIsICJpZGVudGl0eSI6IHsib2JqbmFtZSI6ICJmb28iLCAic2NoZW1hbmFtZSI6ICJlbGVtZW50 X3Rlc3QifSwgImluaGVyaXRzIjogeyJmbXQiOiAiSU5IRVJJVFMgKCV7cGFyZW50czosIH1EKSIs ICJwYXJlbnRzIjogbnVsbCwgInByZXNlbnQiOiBmYWxzZX0sICJvbl9jb21taXQiOiB7ImZtdCI6 ICJPTiBDT01NSVQgJXtvbl9jb21taXRfdmFsdWV9cyIsICJwcmVzZW50IjogZmFsc2UsICJvbl9j b21taXRfdmFsdWUiOiBudWxsfSwgInRhYmxlc3BhY2UiOiB7ImZtdCI6ICJUQUJMRVNQQUNFICV7 dGFibGVzcGFjZX1JIiwgInByZXNlbnQiOiBmYWxzZSwgInRhYmxlc3BhY2UiOiBudWxsfSwgInBl cnNpc3RlbmNlIjogIiIsICJ3aXRoX2NsYXVzZSI6IHsiZm10IjogIldJVEgiLCAicHJlc2VudCI6 IGZhbHNlfSwgInBhcnRpdGlvbl9ieSI6IHsiZm10IjogIlBBUlRJVElPTiBCWSAle2RlZmluaXRp b259cyIsICJwcmVzZW50IjogZmFsc2UsICJkZWZpbml0aW9uIjogbnVsbH0sICJhY2Nlc3NfbWV0 aG9kIjogeyJmbXQiOiAiVVNJTkcgJXthY2Nlc3NfbWV0aG9kfUkiLCAicHJlc2VudCI6IGZhbHNl LCAiYWNjZXNzX21ldGhvZCI6IG51bGx9LCAiaWZfbm90X2V4aXN0cyI6ICIiLCAidGFibGVfZWxl bWVudHMiOiBbeyJmbXQiOiAiJXtuYW1lfUkgJXtjb2x0eXBlfVQgU1RPUkFHRSAle2NvbHN0b3Jh Z2V9cyAle2NvbXByZXNzaW9ufXMgJXtjb2xsYXRpb259cyAle25vdF9udWxsfXMgJXtkZWZhdWx0 fXMgJXtnZW5lcmF0ZWRfY29sdW1ufXMiLCAibmFtZSI6ICJpZCIsICJ0eXBlIjogImNvbHVtbiIs ICJjb2x0eXBlIjogeyJ0eXBtb2QiOiAiIiwgInR5cGFycmF5IjogZmFsc2UsICJ0eXBlbmFtZSI6 ICJpbnQ0IiwgInNjaGVtYW5hbWUiOiAicGdfY2F0YWxvZyJ9LCAiZGVmYXVsdCI6IHsiZm10Ijog IkRFRkFVTFQiLCAicHJlc2VudCI6IGZhbHNlfSwgIm5vdF9udWxsIjogIiIsICJjb2xsYXRpb24i OiB7ImZtdCI6ICJDT0xMQVRFIiwgInByZXNlbnQiOiBmYWxzZX0sICJjb2xzdG9yYWdlIjogInBs YWluIiwgImNvbXByZXNzaW9uIjogeyJmbXQiOiAiQ09NUFJFU1NJT04gJXtjb21wcmVzc2lvbl9t ZXRob2R9SSIsICJwcmVzZW50IjogZmFsc2UsICJjb21wcmVzc2lvbl9tZXRob2QiOiBudWxsfSwg ImdlbmVyYXRlZF9jb2x1bW4iOiB7ImZtdCI6ICJHRU5FUkFURUQgQUxXQVlTIEFTIiwgInByZXNl bnQiOiBmYWxzZX19XX19CisoMyByb3dzKQorCiBTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9z bG90KCdyZWdyZXNzaW9uX3Nsb3QnKTsKICBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QgCiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29kaW5n L3NxbC9kZGwuc3FsIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9kZGwuc3FsCmluZGV4IDRm NzZiZWQ3MmMuLjFlYTVhNGIyNzEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9z cWwvZGRsLnNxbAorKysgYi9jb250cmliL3Rlc3RfZGVjb2Rpbmcvc3FsL2RkbC5zcWwKQEAgLTQz MSw2ICs0MzEsMTEgQEAgU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5n ZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmMKIC0tIGRvbmUsIGZyZWUgbG9n aWNhbCByZXBsaWNhdGlvbiBzbG90CiBTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9n ZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycs ICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScpOwogCitTRUxFQ1QgJ2RkbCBtc2cxJyBGUk9N IHBnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZSgnZGRsIG1zZzEnLCAxNjM5NCwgMSwgJ21zZzEn KTsKK1NFTEVDVCAnZGRsIG1zZzInIEZST00gcGdfbG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlKCdk ZGwgbXNnMicsIDE2Mzk0LCAxLCAneyJmbXQiOiAiQ1JFQVRFIFNDSEVNQSAle2lmX25vdF9leGlz dHN9cyAle25hbWV9SSAle2F1dGhvcml6YXRpb259cyIsICJuYW1lIjogImZvbyIsICJhdXRob3Jp emF0aW9uIjogeyJmbXQiOiAiQVVUSE9SSVpBVElPTiAle2F1dGhvcml6YXRpb25fcm9sZX1JIiwg InByZXNlbnQiOiBmYWxzZSwgImF1dGhvcml6YXRpb25fcm9sZSI6IG51bGx9LCAiaWZfbm90X2V4 aXN0cyI6ICIifScpOworU0VMRUNUICdkZGwgbXNnMycgRlJPTSBwZ19sb2dpY2FsX2VtaXRfZGRs X21lc3NhZ2UoJ2RkbCBtc2czJywgMTYzOTQsIDEsICd7ImZtdCI6ICJDUkVBVEUgJXtwZXJzaXN0 ZW5jZX1zIFRBQkxFICV7aWZfbm90X2V4aXN0c31zICV7aWRlbnRpdHl9RCAoJXt0YWJsZV9lbGVt ZW50czosIH1zKSAle2luaGVyaXRzfXMgJXt0YWJsZXNwYWNlfXMgJXtvbl9jb21taXR9cyAle3Bh cnRpdGlvbl9ieX1zICV7YWNjZXNzX21ldGhvZH1zICV7d2l0aF9jbGF1c2V9cyIsICJpZGVudGl0 eSI6IHsib2JqbmFtZSI6ICJmb28iLCAic2NoZW1hbmFtZSI6ICJlbGVtZW50X3Rlc3QifSwgImlu aGVyaXRzIjogeyJmbXQiOiAiSU5IRVJJVFMgKCV7cGFyZW50czosIH1EKSIsICJwYXJlbnRzIjog bnVsbCwgInByZXNlbnQiOiBmYWxzZX0sICJvbl9jb21taXQiOiB7ImZtdCI6ICJPTiBDT01NSVQg JXtvbl9jb21taXRfdmFsdWV9cyIsICJwcmVzZW50IjogZmFsc2UsICJvbl9jb21taXRfdmFsdWUi OiBudWxsfSwgInRhYmxlc3BhY2UiOiB7ImZtdCI6ICJUQUJMRVNQQUNFICV7dGFibGVzcGFjZX1J IiwgInByZXNlbnQiOiBmYWxzZSwgInRhYmxlc3BhY2UiOiBudWxsfSwgInBlcnNpc3RlbmNlIjog IiIsICJ3aXRoX2NsYXVzZSI6IHsiZm10IjogIldJVEgiLCAicHJlc2VudCI6IGZhbHNlfSwgInBh cnRpdGlvbl9ieSI6IHsiZm10IjogIlBBUlRJVElPTiBCWSAle2RlZmluaXRpb259cyIsICJwcmVz ZW50IjogZmFsc2UsICJkZWZpbml0aW9uIjogbnVsbH0sICJhY2Nlc3NfbWV0aG9kIjogeyJmbXQi OiAiVVNJTkcgJXthY2Nlc3NfbWV0aG9kfUkiLCAicHJlc2VudCI6IGZhbHNlLCAiYWNjZXNzX21l dGhvZCI6IG51bGx9LCAiaWZfbm90X2V4aXN0cyI6ICIiLCAidGFibGVfZWxlbWVudHMiOiBbeyJm bXQiOiAiJXtuYW1lfUkgJXtjb2x0eXBlfVQgU1RPUkFHRSAle2NvbHN0b3JhZ2V9cyAle2NvbXBy ZXNzaW9ufXMgJXtjb2xsYXRpb259cyAle25vdF9udWxsfXMgJXtkZWZhdWx0fXMgJXtnZW5lcmF0 ZWRfY29sdW1ufXMiLCAibmFtZSI6ICJpZCIsICJ0eXBlIjogImNvbHVtbiIsICJjb2x0eXBlIjog eyJ0eXBtb2QiOiAiIiwgInR5cGFycmF5IjogZmFsc2UsICJ0eXBlbmFtZSI6ICJpbnQ0IiwgInNj aGVtYW5hbWUiOiAicGdfY2F0YWxvZyJ9LCAiZGVmYXVsdCI6IHsiZm10IjogIkRFRkFVTFQiLCAi cHJlc2VudCI6IGZhbHNlfSwgIm5vdF9udWxsIjogIiIsICJjb2xsYXRpb24iOiB7ImZtdCI6ICJD T0xMQVRFIiwgInByZXNlbnQiOiBmYWxzZX0sICJjb2xzdG9yYWdlIjogInBsYWluIiwgImNvbXBy ZXNzaW9uIjogeyJmbXQiOiAiQ09NUFJFU1NJT04gJXtjb21wcmVzc2lvbl9tZXRob2R9SSIsICJw cmVzZW50IjogZmFsc2UsICJjb21wcmVzc2lvbl9tZXRob2QiOiBudWxsfSwgImdlbmVyYXRlZF9j b2x1bW4iOiB7ImZtdCI6ICJHRU5FUkFURUQgQUxXQVlTIEFTIiwgInByZXNlbnQiOiBmYWxzZX19 XX19Jyk7CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVn cmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1w dHkteGFjdHMnLCAnMScpOworCiBTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdyZWdy ZXNzaW9uX3Nsb3QnKTsKIAogLyogY2hlY2sgdGhhdCB0aGUgc2xvdCBpcyBnb25lICovCmRpZmYg LS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jIGIvY29udHJpYi90 ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYwppbmRleCA2MjhjNmEyNTk1Li43NjNkNWMwMDdm IDEwMDY0NAotLS0gYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jCisrKyBi L2NvbnRyaWIvdGVzdF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMKQEAgLTE0LDkgKzE0LDExIEBA CiAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKIAorI2luY2x1ZGUgInJlcGxpY2F0aW9u L2RkbG1lc3NhZ2UuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVk ZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCiAKKyNpbmNsdWRlICJ0Y29wL2RkbF9kZXBhcnNlLmgi CiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtNzIsNiArNzQsMTIgQEAgc3RhdGlj IHZvaWQgcGdfZGVjb2RlX21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJ CQkJCSAgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVjUHRyIGxzbiwKIAkJCQkJCQkgIGJv b2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LAogCQkJCQkJCSAgU2l6ZSBzeiwg Y29uc3QgY2hhciAqbWVzc2FnZSk7CitzdGF0aWMgdm9pZCBwZ19kZWNvZGVfZGRsX21lc3NhZ2Uo TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCQkJCQkgIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKKwkJCQkJCQkJICBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAorCQkJCQkJCQkgIGNvbnN0 IGNoYXIgKnByZWZpeCwgT2lkIHJlbGlkLAorCQkJCQkJCQkgIERlcGFyc2VkQ29tbWFuZFR5cGUg Y21kdHlwZSwKKwkJCQkJCQkJICBTaXplIHN6LCBjb25zdCBjaGFyICptZXNzYWdlKTsKIHN0YXRp YyBib29sIHBnX2RlY29kZV9maWx0ZXJfcHJlcGFyZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHgsCiAJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCQkgY29uc3QgY2hhciAq Z2lkKTsKQEAgLTEzNSw2ICsxNDMsNyBAQCBfUEdfb3V0cHV0X3BsdWdpbl9pbml0KE91dHB1dFBs dWdpbkNhbGxiYWNrcyAqY2IpCiAJY2ItPmZpbHRlcl9ieV9vcmlnaW5fY2IgPSBwZ19kZWNvZGVf ZmlsdGVyOwogCWNiLT5zaHV0ZG93bl9jYiA9IHBnX2RlY29kZV9zaHV0ZG93bjsKIAljYi0+bWVz c2FnZV9jYiA9IHBnX2RlY29kZV9tZXNzYWdlOworCWNiLT5kZGxfY2IgPSBwZ19kZWNvZGVfZGRs X21lc3NhZ2U7CiAJY2ItPmZpbHRlcl9wcmVwYXJlX2NiID0gcGdfZGVjb2RlX2ZpbHRlcl9wcmVw YXJlOwogCWNiLT5iZWdpbl9wcmVwYXJlX2NiID0gcGdfZGVjb2RlX2JlZ2luX3ByZXBhcmVfdHhu OwogCWNiLT5wcmVwYXJlX2NiID0gcGdfZGVjb2RlX3ByZXBhcmVfdHhuOwpAQCAtNzUwLDYgKzc1 OSw0NSBAQCBwZ19kZWNvZGVfbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJ T3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIH0KIAorc3RhdGljIHZvaWQKK3BnX2RlY29k ZV9kZGxfbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJU WE4gKnR4biwKKwkJCQkJICBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLCBjb25zdCBjaGFyICpwcmVm aXgsIE9pZCByZWxpZCwKKwkJCQkJICBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsIFNpemUg c3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7CisJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0 eCwgdHJ1ZSk7CisJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91dCwgIm1lc3NhZ2U6IHByZWZpeDog JXMsIHJlbGlkOiAldSwgIiwKKwkJCQkJIHByZWZpeCwgcmVsaWQpOworCisJc3dpdGNoKGNtZHR5 cGUpCisJeworCWNhc2UgRENUX1NpbXBsZUNtZDoKKwkJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91 dCwgImNtZHR5cGU6IFNpbXBsZSwgIik7CisJCWJyZWFrOworCWNhc2UgRENUX1RhYmxlRHJvcFN0 YXJ0OgorCQlhcHBlbmRTdHJpbmdJbmZvKGN0eC0+b3V0LCAiY21kdHlwZTogRHJvcCBzdGFydCwg Iik7CisJCWJyZWFrOworCWNhc2UgRENUX1RhYmxlRHJvcEVuZDoKKwkJYXBwZW5kU3RyaW5nSW5m byhjdHgtPm91dCwgImNtZHR5cGU6IERyb3AgZW5kLCAiKTsKKwkJYnJlYWs7CisJY2FzZSBEQ1Rf VGFibGVBbHRlcjoKKwkJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91dCwgImNtZHR5cGU6IEFsdGVy IHRhYmxlLCAiKTsKKwkJYnJlYWs7CisJY2FzZSBEQ1RfT2JqZWN0Q3JlYXRlOgorCQlhcHBlbmRT dHJpbmdJbmZvKGN0eC0+b3V0LCAiY21kdHlwZTogQ3JlYXRlLCAiKTsKKwkJYnJlYWs7CisJY2Fz ZSBEQ1RfT2JqZWN0RHJvcDoKKwkJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91dCwgImNtZHR5cGU6 IERyb3AsICIpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlhcHBlbmRTdHJpbmdJbmZvKGN0eC0+ b3V0LCAiY21kdHlwZTogSW52YWxpZCwgIik7CisJCWJyZWFrOworCX0KKworCWFwcGVuZFN0cmlu Z0luZm8oY3R4LT5vdXQsICJzejogJXp1IGNvbnRlbnQ6Iiwgc3opOworCWFwcGVuZEJpbmFyeVN0 cmluZ0luZm8oY3R4LT5vdXQsIG1lc3NhZ2UsIHN6KTsKKwlPdXRwdXRQbHVnaW5Xcml0ZShjdHgs IHRydWUpOworfQorCiBzdGF0aWMgdm9pZAogcGdfZGVjb2RlX3N0cmVhbV9zdGFydChMb2dpY2Fs RGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCSAgIFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDEwYWRhNDFkODAuLjZlZDM4ZWU2 YzEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTQ1Nyw2ICsxNDU3 LDEwNTEgQEAgdGVzdF9zdWI9IyBTRUxFQ1QgKiBGUk9NIHQxIE9SREVSIEJZIGlkOwogCiAgPC9z ZWN0MT4KIAorIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1kZGwiPgorICA8dGl0bGU+ RERMIFJlcGxpY2F0aW9uPC90aXRsZT4KKyAgPHBhcmE+CisgICAgRGF0YSBEZWZpbml0aW9uIENv bW1hbmRzIChERExzKSBjYW4gYmUgcmVwbGljYXRlZCB1c2luZyBsb2dpY2FsIHJlcGxpY2F0aW9u LgorICAgIFdoaWxlIGVuYWJsZWQgdGhpcyBmZWF0dXJlIGF1dG9tYXRpY2FsbHkgcmVwbGljYXRl cyBzdXBwb3J0ZWQgRERMIGNvbW1hbmRzCisgICAgdGhhdCBhcmUgc3VjY2Vzc2Z1bGx5IGV4ZWN1 dGVkIG9uIGEgcHVibGlzaGVyIHRvIGEgc3Vic2NyaWJlci4gVGhpcyBpcworICAgIGVzcGVjaWFs bHkgdXNlZnVsIGlmIHlvdSBoYXZlIGxvdHMgc2NoZW1hIGNoYW5nZXMgb3ZlciB0aW1lIHRoYXQg bmVlZCByZXBsaWNhdGlvbi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgIEZvciBleGFtcGxl LCB3aGVuIGVuYWJsZWQgYSBDUkVBVEUgVEFCTEUgY29tbWFuZCBleGVjdXRlZCBvbiB0aGUgcHVi bGlzaGVyIGdldHMKKyAgICBXQUwtbG9nZ2VkLCBhbmQgZm9yd2FyZGVkIHRvIHRoZSBzdWJzY3Jp YmVyIHRvIHJlcGxheTsgYSBzdWJzZXF1ZW50ICJBTFRFUgorICAgIFNVQlNDUklQVElPTiAuLi4g UkVGUkVTSCBQVUJMSUNBVElPTiIgaXMgcnVuIG9uIHRoZSBzdWJzY3JpYmVyIGRhdGFiYXNlIHNv IGFueQorICAgIGZvbGxvd2luZyBETUwgY2hhbmdlcyBvbiB0aGUgbmV3IHRhYmxlIGNhbiBiZSBy ZXBsaWNhdGVkIHdpdGhvdXQgYSBoaXRjaC4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgIERE TCByZXBsaWNhdGlvbiBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LCBpdCBjYW4gYmUgZW5hYmxlZCBh dCBkaWZmZXJlbnQgbGV2ZWxzCisgICAgdXNpbmcgdGhlIGRkbCBQVUJMSUNBVElPTiBvcHRpb24u IFRoaXMgb3B0aW9uIGN1cnJlbnRseSBoYXMgdHdvIGxldmVscyBhbmQgYXJlCisgICAgb25seSBh bGxvd2VkIHRvIGJlIHNldCBpZiB0aGUgUFVCTElDQVRJT04gaXMgRk9SIEFMTCBUQUJMRVMuCisg IDwvcGFyYT4KKworICA8aXRlbWl6ZWRsaXN0PgorICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJh PgorICAgICAgICB0YWJsZTogdGhpcyBvcHRpb24gZW5hYmxlcyByZXBsaWNhdGlvbiBvZiBUYWJs ZSBEREwgY29tbWFuZHMsCisgICAgICAgIHdoaWNoIGluY2x1ZGU6CisgICAgICAgIDxpdGVtaXpl ZGxpc3Q+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAg ICAgICAgIENSRUFURS9BTFRFUi9EUk9QIFRBQkxFCisgICAgICAgICAgICA8L3BhcmE+CisgICAg ICAgICAgPC9saXN0aXRlbT4KKworICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxw YXJhPgorICAgICAgICAgICAgICBDUkVBVEUgVEFCTEUgQVMKKyAgICAgICAgICAgIDwvcGFyYT4K KyAgICAgICAgICA8L2xpc3RpdGVtPgorCisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAg PC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgIDwvaXRlbWl6ZWRsaXN0PgorCisgIDxzZWN0MiBp ZD0iZGRsLXJlcGxpY2F0aW9uLW9wdGlvbi1leGFtcGxlcyI+CisgICAgPHRpdGxlPkV4YW1wbGVz IC0gU2V0dXAgRERMIFJlcGxpY2F0aW9uIG9uIHRoZSBQdWJsaXNoZXI8L3RpdGxlPgorCisgICAg PHBhcmE+CisgICAgICBFbmFibGUgdGFibGUgZGRsIHJlcGxpY2F0aW9uIGZvciBhbiBleGlzdGlu ZyBQdWJsaWNhdGlvbjoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFBVQkxJQ0FUSU9OIG15cHVi IFNFVCAoZGRsID0gJ3RhYmxlJyk7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKworICA8L3Nl Y3QyPgorCisgIDxzZWN0MiBpZD0iZGRsLXJlcGxpY2F0aW9uLXN1cHBvcnRlZC1jb21tYW5kcyI+ CisgICAgPHRpdGxlPlN1cHBvcnRlZCBEREwgY29tbWFuZHM8L3RpdGxlPgorCisgICAgPHBhcmE+ CisgICAgICBUaGUgRERMIGNvbW1hbmRzIHN1cHBvcnRlZCBmb3IgbG9naWNhbCByZXBsaWNhdGlv biBhcmUgbGlzdGVkIGluIHRoZSBmb2xsb3dpbmcKKyAgICAgIG1hdHJpeC4gTm90ZSB0aGF0IGds b2JhbCBjb21tYW5kcyBjYW4gYmUgZXhlY3V0ZWQgYXQgYW55IGRhdGFiYXNlIGFuZCBhcmUgY3Vy cmVudGx5CisgICAgICBub3Qgc3VwcG9ydGVkIGZvciByZXBsaWNhdGlvbiwgZ2xvYmFsIGNvbW1h bmRzIGluY2x1ZGUgUk9MRSBzdGF0ZW1lbnRzLCBEYXRhYmFzZQorICAgICAgc3RhdGVtZW50cywg VGFibGVTcGFjZSBzdGF0ZW1lbnRzIGFuZCBzb21lIG9mIHRoZSBHcmFudFN0bXQvUmV2b2tlU3Rt dCBpZiB0aGUgdGFyZ2V0CisgICAgICBvYmplY3QgaXMgYSBnbG9iYWwgb2JqZWN0LgorICAgIDwv cGFyYT4KKworICAgIDx0YWJsZSBpZD0iZGRsLXJlcGxpY2F0aW9uLWJ5LWNvbW1hbmQtdGFnIj4K KyAgICAgIDx0aXRsZT5EREwgUmVwbGljYXRpb24gU3VwcG9ydCBieSBDb21tYW5kIFRhZzwvdGl0 bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorICAgICAgICA8Y29sc3BlYyBjb2xuYW1lPSJj b2wxIiBjb2x3aWR0aD0iMioiLz4KKyAgICAgICAgPGNvbHNwZWMgY29sbmFtZT0iY29sMiIgY29s d2lkdGg9IjEqIi8+CisgICAgICAgIDxjb2xzcGVjIGNvbG5hbWU9ImNvbDMiIGNvbHdpZHRoPSIx KiIvPgorICAgICAgPHRoZWFkPgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeT5Db21tYW5k IFRhZzwvZW50cnk+CisgICAgICAgIDxlbnRyeT5Gb3IgUmVwbGljYXRpb248L2VudHJ5PgorICAg ICAgICA8ZW50cnk+Tm90ZXM8L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgPC90aGVhZD4K KyAgICAgIDx0Ym9keT4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkFMVEVSIEFHR1JFR0FURTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBDQVNUPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAg ICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRl cmFsPkFMVEVSIENPTExBVElPTjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBDT05WRVJTSU9OPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAg ICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRl cmFsPkFMVEVSIERBVEFCQVNFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIERFRkFVTFQgUFJJVklMRUdFUzwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5BTFRFUiBET01BSU48L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgRVZFTlQgVFJJR0dFUjwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5BTFRFUiBFWFRFTlNJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgRk9SRUlHTiBEQVRB IFdSQVBQRVI8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgRk9SRUlHTiBUQUJMRTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+ CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRF UiBGVU5DVElPTjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBJTkRFWDwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAg ICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBMQU5H VUFHRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwv ZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBMQVJHRSBPQkpFQ1Q8L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAg ICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgTUFU RVJJQUxJWkVEIFZJRVc8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgT1BFUkFUT1I8L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93 PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxU RVIgT1BFUkFUT1IgQ0xBU1M8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgT1BFUkFUT1IgRkFNSUxZPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAg ICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkFMVEVSIFBPTElDWTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBQUk9DRURVUkU8L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAg IDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVy YWw+QUxURVIgUFVCTElDQVRJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgUk9MRTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9y b3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5B TFRFUiBST1VUSU5FPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFJVTEVSPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAg ICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFND SEVNQTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwv ZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBTRVFVRU5DRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBTRVJWRVI8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+QUxURVIgU1RBVElTVElDUzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJv dz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBTVUJTQ1JJUFRJ T048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2Vu dHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PGxpdGVyYWw+QUxURVIgU1lTVEVNPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFRBQkxFPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAg ICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkFMVEVSIFRBQkxFU1BBQ0U8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgVEVYVCBTRUFSQ0ggQ09O RklHVVJBVElPTjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBURVhUIFNFQVJDSCBESUNUSU9OQVJZPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAg ICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkFMVEVSIFRFWFQgU0VBUkNIIFBBUlNFUjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBURVhUIFNF QVJDSCBURU1QTEFURTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNl bnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBUUkFOU0ZPUk08L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93 PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxU RVIgVFJJR0dFUjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBUWVBFPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAg ICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFVTRVIg TUFQUElORzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBWSUVXPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8 cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFOQUxZWkU8L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAg ICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxp dGVyYWw+QkVHSU48L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q0FMTDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJv dz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DSEVDS1BPSU5UPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAg ICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkNMT1NFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNMT1NFIENVUlNPUjwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+Cisg ICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DTE9TRSBD VVJTT1IgQUxMPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPkNMVVNURVI8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxy b3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q09NTUVOVDwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAg ICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0 ZXJhbD5DT01NSVQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q09NTUlUIFBSRVBBUkVEPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4K KyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNPUFk8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+Q09QWSBGUk9NPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBBQ0NFU1MgTUVUSE9EPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K KyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkNSRUFURSBBR0dSRUdBVEU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIENBU1Q8L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAg ICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxp dGVyYWw+Q1JFQVRFIENPTExBVElPTjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgQ09OU1RSQUlOVDwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+Cisg ICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 bGl0ZXJhbD5DUkVBVEUgQ09OVkVSU0lPTjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgREFUQUJBU0U8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgor ICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+Q1JFQVRFIERPTUFJTjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgRVZFTlQgVFJJR0dFUjwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5DUkVBVEUgRVhURU5TSU9OPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBGT1JFSUdOIERB VEEgV1JBUFBFUjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgRk9SRUlHTiBUQUJMRTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9y b3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5D UkVBVEUgRlVOQ1RJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIElOREVYPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4K KyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFU RSBMQU5HVUFHRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgTUFURVJJQUxJWkVEIFZJRVc8L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAg IDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVy YWw+Q1JFQVRFIE9QRVJBVE9SPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBPUEVSQVRPUiBDTEFTUzwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+Cisg ICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 bGl0ZXJhbD5DUkVBVEUgT1BFUkFUT1IgRkFNSUxZPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8 cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBQT0xJQ1k8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+Q1JFQVRFIFBST0NFRFVSRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJv dz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgUFVCTElDQVRJ T048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2Vu dHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFJPTEU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFJVTEU8L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAg ICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxp dGVyYWw+Q1JFQVRFIFNDSEVNQTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgU0VRVUVOQ0U8L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAg IDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVy YWw+Q1JFQVRFIFNFUlZFUjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgU1RBVElTVElDUzwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAg PC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJh bD5DUkVBVEUgU1VCU0NSSVBUSU9OPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBUQUJMRTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAg PC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJh bD5DUkVBVEUgVEFCTEUgQVM8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFRBQkxFU1BBQ0U8L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAg IDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVy YWw+Q1JFQVRFIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAg ICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFRF WFQgU0VBUkNIIERJQ1RJT05BUlk8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFRFWFQgU0VBUkNIIFBBUlNF UjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50 cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgVEVYVCBTRUFSQ0ggVEVNUExBVEU8L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93 PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JF QVRFIFRSQU5TRk9STTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNl bnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgVFJJR0dFUjwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+ CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVB VEUgVFlQRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgVVNFUiBNQVBQSU5HPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4K KyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFU RSBWSUVXPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48 bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjxsaXRlcmFsPkRFQUxMT0NBVEU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxy b3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+REVBTExPQ0FURSBBTEw8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+REVDTEFSRSBDVVJTT1I8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+REVMRVRFPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8 L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFs PkRJU0NBUkQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+RElTQ0FSRCBBTEw8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAg IDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RElTQ0FSRCBQTEFO UzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50 cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48bGl0ZXJhbD5ESVNDQVJEIFNFUVVFTkNFUzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5ESVNDQVJEIFRFTVA8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+RE88L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBBQ0NFU1MgTUVUSE9EPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8 L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFs PkRST1AgQUdHUkVHQVRFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgQ0FTVDwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+Cisg ICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIENP TExBVElPTjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIENPTlNUUkFJTlQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAg ICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBDT05W RVJTSU9OPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48 bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjxsaXRlcmFsPkRST1AgREFUQUJBU0U8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAg IDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBET01BSU48 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+RFJPUCBFVkVOVCBUUklHR0VSPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8 cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgRVhURU5TSU9O PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPkRST1AgRk9SRUlHTiBEQVRBIFdSQVBQRVI8L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93Pgor ICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBG T1JFSUdOIFRBQkxFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgRlVOQ1RJT048L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93Pgor ICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBJ TkRFWDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwv ZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIExBTkdVQUdFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8 cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgTUFURVJJQUxJ WkVEIFZJRVc8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBPUEVSQVRPUjwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAg ICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIE9QRVJB VE9SIENMQVNTPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgT1BFUkFUT1IgRkFNSUxZPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jv dz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRS T1AgT1dORUQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBQT0xJQ1k8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAg IDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBQUk9DRURV UkU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2Vu dHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PGxpdGVyYWw+RFJPUCBQVUJMSUNBVElPTjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFJPTEU8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgor ICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+RFJPUCBST1VUSU5FPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgUlVMRTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9y b3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5E Uk9QIFNDSEVNQTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFNFUVVFTkNFPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAg ICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgU0VS VkVSPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9l bnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjxsaXRlcmFsPkRST1AgU1RBVElTVElDUzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFNVQlNDUklQ VElPTjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwv ZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFRBQkxFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgVEFCTEVTUEFDRTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5EUk9QIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT048L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93 PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJP UCBURVhUIFNFQVJDSCBESUNUSU9OQVJZPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgVEVYVCBTRUFSQ0ggUEFS U0VSPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9l bnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjxsaXRlcmFsPkRST1AgVEVYVCBTRUFSQ0ggVEVNUExBVEU8L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93 PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJP UCBUUkFOU0ZPUk08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBUUklHR0VSPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAg ICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgVFlQ RTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50 cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48bGl0ZXJhbD5EUk9QIFVTRVIgTUFQUElORzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFZJRVc8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgor ICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+RVhFQ1VURTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5FWFBMQUlOPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAg ICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkZFVENIPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K KyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkdSQU5UPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkdSQU5UIFJPTEU8L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93Pgor ICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+SU1QT1JU IEZPUkVJR04gU0NIRU1BPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPklOU0VSVDwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAg ICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5MSVNURU48L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgor ICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+TE9BRDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNl bnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5MT0NLIFRBQkxFPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAg ICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPk1FUkdFPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K KyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPk1PVkU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Tk9USUZZPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAg ICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPlBSRVBBUkU8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgor ICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+UFJFUEFSRSBUUkFOU0FDVElPTjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJv dz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5SRUFTU0lHTiBPV05FRDwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5SRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAg ICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPlJFSU5ERVg8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+UkVMRUFTRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5SRVNFVDwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+Cisg ICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5SRVZPS0U8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+UkVWT0tFIFJPTEU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Uk9MTEJBQ0s8L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwv cm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+ Uk9MTEJBQ0sgUFJFUEFSRUQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+U0FWRVBPSU5UPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4K KyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPlNFQ1VS SVRZIExBQkVMPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPlNFVDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5TRVQgQ09OU1RSQUlOVFM8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgor ICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+U0hPVzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNl bnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5TVEFSVCBUUkFOU0FDVElPTjwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9y b3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5V TkxJU1RFTjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48bGl0ZXJhbD5VUERBVEU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+VkFDVVVNPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8 L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgIDwvc2Vj dDI+CisKKyAgPHNlY3QyIGlkPSJkZGwtcmVwbGljYXRpb24tZGRsLWRlcGFyc2VyIj4KKyAgICA8 dGl0bGU+RERMIERlcGFyc2VyPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSBEREwgZGVw YXJzZXIgdXRpbGl0eSBpcyBpbnZva2VkIGR1cmluZyB0aGUgcmVwbGljYXRpb24gb2YgRERMcy4g VGhlIERETAorICAgICAgZGVwYXJzZXIgaXMgY2FwYWJsZSBvZiBjb252ZXJ0aW5nIGEgRERMIGNv bW1hbmQgaW50byBmb3JtYXR0ZWQgSlNPTiBibG9iLCB3aXRoCisgICAgICB0aGUgbmVjZXNzYXJ5 IGluZm9ybWF0aW9uIHRvIHJlY29uc3RydWN0IHRoZSBEREwgY29tbWFuZHMgYXQgdGhlIGRlc3Rp bmF0aW9uLiBUaGUKKyAgICAgIGJlbmVmaXQgb2YgdXNpbmcgdGhlIGRlcGFyc2VyIG91dHB1dCBj b21wYXJlZCB0byB0aGUgb3JpZ2luYWwgY29tbWFuZCBzdHJpbmcKKyAgICAgIGluY2x1ZGVzOgor ICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJh PgorICAgICAgICAgICAgRXZlcnkgZGF0YWJhc2Ugb2JqZWN0IGluIHRoZSBkZXBhcnNlZCBvdXRw dXQgaXMgc2NoZW1hLXF1YWxpZmllZCwgc28gdGhhdAorICAgICAgICAgICAgdGhlcmUgYXJlIG5v IGFtYmlndWl0aWVzIGV2ZW4gaW4gdGhlIGZhY2Ugb2Ygc2VhcmNoX3BhdGggY2hhbmdlcy4KKyAg ICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgICAgPGxpc3RpdGVt PgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHN0cnVjdHVyZWQgSlNPTiBhbmQg dGhlIGZvcm1hdHRlZCBvdXRwdXQgbWFrZXMgaXQgcG9zc2libGUgZm9yCisgICAgICAgICAgICBt YWNoaW5lIGVkaXRpbmcuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB0aGUgc3Vic2NyaWJlciBpcyBv biBhIGRpZmZlcmVudAorICAgICAgICAgICAgUEcgdmVyc2lvbiBhbmQgaGFzIGNlcnRhaW4gRERM IHN5bnRheCBkaWZmZXJlbmNlcyB3aGljaCBuZWVkIHRvIGJlCisgICAgICAgICAgICByZXNvbHZl ZCBiZWZvcmUgYXBwbHkuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgor CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAg IFRoZSBEREwgZGVwYXJzZXIgZXhwb3NlcyB0d28gU1FMIGZ1bmN0aW9uczoKKyAgICAgIDxpdGVt aXplZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAg ICAgIGRkbF9kZXBhcnNlX3RvX2pzb246IGdpdmVuIGEgQ29sbGVjdGVkQ29tbWFuZCBmcm9tIGV2 ZW50IHRyaWdnZXIsCisgICAgICAgICAgICByZXR1cm5zIGEgSlNPTiByZXByZXNlbnRhdGlvbiBv ZiBpdC4gVGhlIGNvbW1hbmQgaXMgZXhwYW5kZWQgZnVsbHkKKyAgICAgICAgICAgIHNvIHRoYXQg dGhlcmUgYXJlIG5vIGFtYmlndWl0aWVzIGV2ZW4gaW4gdGhlIGZhY2Ugb2Ygc2VhcmNoX3BhdGgK KyAgICAgICAgICAgIGNoYW5nZXMuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3Rp dGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisKKyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAg ICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIGRkbF9kZXBhcnNl X2V4cGFuZF9jb21tYW5kOiBFeHBhbmQgSlNPTiBmb3JtYXQgRERMIGdlbmVyYXRlZCBieQorICAg ICAgICAgICAgZGRsX2RlcGFyc2VfdG9fanNvbiB0byBhIHBsYWluIERETCBjb21tYW5kLgorICAg ICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0 PgorICAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKworIDwvc2VjdDE+CisKICA8c2VjdDEgaWQ9Imxv Z2ljYWwtcmVwbGljYXRpb24tY29uZmxpY3RzIj4KICAgPHRpdGxlPkNvbmZsaWN0czwvdGl0bGU+ CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtlZmlsZSBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtlZmlsZQppbmRleCBmODhkNzJmZDg2Li4yZmYw MWU2OWJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFrZWZpbGUK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL01ha2VmaWxlCkBAIC0xOCw2ICsxOCw3 IEBAIE9CSlMgPSBcCiAJZ2lzdGRlc2MubyBcCiAJaGFzaGRlc2MubyBcCiAJaGVhcGRlc2MubyBc CisJbG9naWNhbGRkbG1zZ2Rlc2MubyBcCiAJbG9naWNhbG1zZ2Rlc2MubyBcCiAJbXhhY3RkZXNj Lm8gXAogCW5idGRlc2MubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRl c2MvbG9naWNhbGRkbG1zZ2Rlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9sb2dp Y2FsZGRsbXNnZGVzYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjA1 ZTkzMGM5MGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv bG9naWNhbGRkbG1zZ2Rlc2MuYwpAQCAtMCwwICsxLDUyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqCisgKiBsb2dpY2FsZGRsbXNnZGVzYy5jCisgKgkgIHJtZ3IgZGVzY3JpcHRvciByb3V0aW5l cyBmb3IgcmVwbGljYXRpb24vbG9naWNhbC9kZGxtZXNzYWdlLmMKKyAqCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDIwMTUtMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKKyAqCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvYWNjZXNzL3Jt Z3JkZXNjL2xvZ2ljYWxkZGxtc2dkZXNjLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwor I2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdl LmgiCisKK3ZvaWQKK2xvZ2ljYWxkZGxtc2dfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRl clN0YXRlICpyZWNvcmQpCit7CisJY2hhcgkgICAqcmVjID0gWExvZ1JlY0dldERhdGEocmVjb3Jk KTsKKwl1aW50OAkJaW5mbyA9IFhMb2dSZWNHZXRJbmZvKHJlY29yZCkgJiB+WExSX0lORk9fTUFT SzsKKworCWlmIChpbmZvID09IFhMT0dfTE9HSUNBTF9ERExfTUVTU0FHRSkKKwl7CisJCXhsX2xv Z2ljYWxfZGRsX21lc3NhZ2UgKnhscmVjID0gKHhsX2xvZ2ljYWxfZGRsX21lc3NhZ2UgKikgcmVj OworCQljaGFyCSAgICpwcmVmaXggPSB4bHJlYy0+bWVzc2FnZTsKKwkJY2hhcgkgICAqbWVzc2Fn ZSA9IHhscmVjLT5tZXNzYWdlICsgeGxyZWMtPnByZWZpeF9zaXplOworCQljaGFyCSAgICpzZXAg PSAiIjsKKworCQlBc3NlcnQocHJlZml4W3hscmVjLT5wcmVmaXhfc2l6ZV0gIT0gJ1wwJyk7CisK KwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJwcmVmaXggXCIlc1wiOyBwYXlsb2FkICglenUgYnl0 ZXMpOiAiLAorCQkJCQkJIHByZWZpeCwgeGxyZWMtPm1lc3NhZ2Vfc2l6ZSk7CisJCWFwcGVuZFN0 cmluZ0luZm8oYnVmLCAicmVsaWQgJXUgY21kdHlwZSAldSIsIHhscmVjLT5yZWxpZCwgeGxyZWMt PmNtZHR5cGUpOworCQkvKiBXcml0ZSBtZXNzYWdlIHBheWxvYWQgYXMgYSBzZXJpZXMgb2YgaGV4 IGJ5dGVzICovCisJCWZvciAoaW50IGNudCA9IDA7IGNudCA8IHhscmVjLT5tZXNzYWdlX3NpemU7 IGNudCsrKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzJTAyWCIsIHNlcCwgKHVu c2lnbmVkIGNoYXIpIG1lc3NhZ2VbY250XSk7CisJCQlzZXAgPSAiICI7CisJCX0KKwl9Cit9CisK K2NvbnN0IGNoYXIgKgorbG9naWNhbGRkbG1zZ19pZGVudGlmeSh1aW50OCBpbmZvKQoreworCWlm ICgoaW5mbyAmIH5YTFJfSU5GT19NQVNLKSA9PSBYTE9HX0xPR0lDQUxfRERMX01FU1NBR0UpCisJ CXJldHVybiAiRERMIjsKKworCXJldHVybiBOVUxMOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3JtZ3JkZXNjL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3Jk ZXNjL21lc29uLmJ1aWxkCmluZGV4IDE2NmNlZTY3YjYuLjc4MWUyZDc3MTMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3Mvcm1ncmRlc2MvbWVzb24uYnVpbGQKQEAgLTExLDYgKzExLDcgQEAgcm1ncl9kZXNj X3NvdXJjZXMgPSBmaWxlcygKICAgJ2dpc3RkZXNjLmMnLAogICAnaGFzaGRlc2MuYycsCiAgICdo ZWFwZGVzYy5jJywKKyAgJ2xvZ2ljYWxkZGxtc2dkZXNjLmMnLAogICAnbG9naWNhbG1zZ2Rlc2Mu YycsCiAgICdteGFjdGRlc2MuYycsCiAgICduYnRkZXNjLmMnLApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vcm1nci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v cm1nci5jCmluZGV4IDdkNjdlZGE1ZjcuLjY3OGU4MWFlMDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3JtZ3IuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9ybWdyLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJmbWdyLmgiCiAjaW5jbHVkZSAi ZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9u L2RkbG1lc3NhZ2UuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZWNvZGUuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9tZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgi CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggNDc2MzdmMjhhYi4uZDIwOTYw MmUyOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisr KyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtMTAyOCw2ICsxMDI4 LDcgQEAgR2V0UHVibGljYXRpb24oT2lkIHB1YmlkKQogCXB1Yi0+cHViYWN0aW9ucy5wdWJ1cGRh dGUgPSBwdWJmb3JtLT5wdWJ1cGRhdGU7CiAJcHViLT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9IHB1 YmZvcm0tPnB1YmRlbGV0ZTsKIAlwdWItPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPSBwdWJmb3Jt LT5wdWJ0cnVuY2F0ZTsKKwlwdWItPnB1YmFjdGlvbnMucHViZGRsX3RhYmxlID0gcHViZm9ybS0+ cHViZGRsX3RhYmxlOwogCXB1Yi0+cHVidmlhcm9vdCA9IHB1YmZvcm0tPnB1YnZpYXJvb3Q7CiAK IAlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V2ZW50X3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpp bmRleCBjZmMzNmIwMmQwLi43MWQyYzQzYWZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9ldmVudF90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJp Z2dlci5jCkBAIC0zOCw2ICszOCw4IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2Z1bmMuaCIK ICNpbmNsdWRlICJwYXJzZXIvcGFyc2VyLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVk ZSAicmVwbGljYXRpb24vZGRsbWVzc2FnZS5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL21lc3Nh Z2UuaCIKICNpbmNsdWRlICJ0Y29wL2RlcGFyc2VfdXRpbGl0eS5oIgogI2luY2x1ZGUgInRjb3Av ZGRsX2RlcGFyc2UuaCIKICNpbmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvcHVibGljYXRpb25jbWRzLmMKaW5kZXggZjRiYTU3MjY5Ny4uNjdmMWJjZWM1YyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTM4LDEwICszOCwxMiBAQAogI2lu Y2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIK ICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNp bmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY2xhdXNl LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvbGxhdGUuaCIKICNpbmNsdWRlICJwYXJzZXIv cGFyc2VfcmVsYXRpb24uaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VyLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMv YXJyYXkuaCIKQEAgLTgyLDIxICs4NCwyNSBAQCBzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BT Y2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRp YyB2b2lkCiBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJ CQkJCSAgTGlzdCAqb3B0aW9ucywKKwkJCQkJCSAgYm9vbCBmb3JfYWxsX3RhYmxlcywKIAkJCQkJ CSAgYm9vbCAqcHVibGlzaF9naXZlbiwKIAkJCQkJCSAgUHVibGljYXRpb25BY3Rpb25zICpwdWJh Y3Rpb25zLAogCQkJCQkJICBib29sICpwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdF9naXZlbiwK LQkJCQkJCSAgYm9vbCAqcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpCisJCQkJCQkgIGJvb2wg KnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290LAorCQkJCQkJICBib29sICpkZGxfdHlwZV9naXZl bikKIHsKIAlMaXN0Q2VsbCAgICpsYzsKIAogCSpwdWJsaXNoX2dpdmVuID0gZmFsc2U7CiAJKnB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dpdmVuID0gZmFsc2U7CisJKmRkbF90eXBlX2dpdmVu ID0gZmFsc2U7CiAKIAkvKiBkZWZhdWx0cyAqLwogCXB1YmFjdGlvbnMtPnB1Ymluc2VydCA9IHRy dWU7CiAJcHViYWN0aW9ucy0+cHVidXBkYXRlID0gdHJ1ZTsKIAlwdWJhY3Rpb25zLT5wdWJkZWxl dGUgPSB0cnVlOwogCXB1YmFjdGlvbnMtPnB1YnRydW5jYXRlID0gdHJ1ZTsKKwlwdWJhY3Rpb25z LT5wdWJkZGxfdGFibGUgPSBmYWxzZTsKIAkqcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBm YWxzZTsKIAogCS8qIFBhcnNlIG9wdGlvbnMgKi8KQEAgLTEyMyw3ICsxMjksNyBAQCBwYXJzZV9w dWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCXB1YmFjdGlvbnMtPnB1 YnRydW5jYXRlID0gZmFsc2U7CiAKIAkJCSpwdWJsaXNoX2dpdmVuID0gdHJ1ZTsKLQkJCXB1Ymxp c2ggPSBkZWZHZXRTdHJpbmcoZGVmZWwpOworCQkJcHVibGlzaCA9IHBzdHJkdXAoZGVmR2V0U3Ry aW5nKGRlZmVsKSk7CiAKIAkJCWlmICghU3BsaXRJZGVudGlmaWVyU3RyaW5nKHB1Ymxpc2gsICcs JywgJnB1Ymxpc2hfbGlzdCkpCiAJCQkJZXJlcG9ydChFUlJPUiwKQEAgLTE1OCw2ICsxNjQsNDIg QEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkqcHVi bGlzaF92aWFfcGFydGl0aW9uX3Jvb3RfZ2l2ZW4gPSB0cnVlOwogCQkJKnB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290ID0gZGVmR2V0Qm9vbGVhbihkZWZlbCk7CiAJCX0KKwkJZWxzZSBpZiAoc3Ry Y21wKGRlZmVsLT5kZWZuYW1lLCAiZGRsIikgPT0gMCkKKwkJeworCQkJY2hhcgkgICAqZGRsX2xl dmVsOworCQkJTGlzdAkgICAqZGRsX2xpc3Q7CisJCQlMaXN0Q2VsbCAgICpsYzM7CisKKwkJCWlm ICgqZGRsX3R5cGVfZ2l2ZW4pCisJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBz dGF0ZSk7CisKKwkJCS8qCisJCQkgKiBJZiBkZGwgb3B0aW9uIHdhcyBnaXZlbiBvbmx5IHRoZSBl eHBsaWNpdGx5IGxpc3RlZCBkZGwgdHlwZXMKKwkJCSAqIHNob3VsZCBiZSBwdWJsaXNoZWQuCisJ CQkgKi8KKwkJCXB1YmFjdGlvbnMtPnB1YmRkbF90YWJsZSA9IGZhbHNlOworCisJCQkqZGRsX3R5 cGVfZ2l2ZW4gPSB0cnVlOworCQkJZGRsX2xldmVsID0gZGVmR2V0U3RyaW5nKGRlZmVsKTsKKwor CQkJaWYgKCFTcGxpdElkZW50aWZpZXJTdHJpbmcoZGRsX2xldmVsLCAnLCcsICZkZGxfbGlzdCkp CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1Ip LAorCQkJCQkJZXJybXNnKCJpbnZhbGlkIGxpc3Qgc3ludGF4IGZvciBcImRkbFwiIG9wdGlvbiIp KTsKKworCQkJLyogUHJvY2VzcyB0aGUgb3B0aW9uIGxpc3QuICovCisJCQlmb3JlYWNoKGxjMywg ZGRsX2xpc3QpCisJCQl7CisJCQkJY2hhcgkgICAqcHVibGlzaF9vcHQgPSAoY2hhciAqKSBsZmly c3QobGMzKTsKKworCQkJCWlmIChzdHJjbXAocHVibGlzaF9vcHQsICJ0YWJsZSIpID09IDApCisJ CQkJCXB1YmFjdGlvbnMtPnB1YmRkbF90YWJsZSA9IHRydWU7CisJCQkJZWxzZQorCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJ CWVycm1zZygidW5yZWNvZ25pemVkIFwiZGRsXCIgdmFsdWU6IFwiJXNcIiIsIHB1Ymxpc2hfb3B0 KSk7CisJCQl9CisJCX0KIAkJZWxzZQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLApAQCAtNTk5LDE0ICs2NDEsNTYgQEAgY2hlY2tfc2ltcGxl X3Jvd2ZpbHRlcl9leHByKE5vZGUgKm5vZGUsIFBhcnNlU3RhdGUgKnBzdGF0ZSkKIAlyZXR1cm4g Y2hlY2tfc2ltcGxlX3Jvd2ZpbHRlcl9leHByX3dhbGtlcihub2RlLCBwc3RhdGUpOwogfQogCisv KgorICogSGVscGVyIGZ1bmN0aW9uIHRvIHRyYW5mb3JtIGEgd2hlcmUgY2xhdXNlLgorICoKKyAq IEFsc28gY2hlY2sgdGhlIHB1YmxpY2F0aW9uIHJvdyBmaWx0ZXIgZXhwcmVzc2lvbiBhbmQgdGhy b3cgYW4gZXJyb3IgaWYKKyAqIGFueXRoaW5nIG5vdCBwZXJtaXR0ZWQgb3IgdW5leHBlY3RlZCBp cyBlbmNvdW50ZXJlZC4KKyAqLworc3RhdGljIE5vZGUgKgorR2V0VHJhbnNmb3JtV2hlcmVDbGF1 c2VzKGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCSBO b2RlICp3aGVyZUNsYXVzZSwgYm9vbCBjaGVja19leHByKQoreworCU5vZGUJICAgKnRyYW5zZm9y bWVkV2hlcmVDbGF1c2UgPSBOVUxMOworCVBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVtOworCVBh cnNlU3RhdGUgKnBzdGF0ZTsKKworCS8qCisJICogQSBmcmVzaCBwc3RhdGUgaXMgcmVxdWlyZWQg c28gdGhhdCB3ZSBvbmx5IGhhdmUgInRoaXMiIHRhYmxlIGluIGl0cworCSAqIHJhbmdldGFibGUK KwkgKi8KKwlwc3RhdGUgPSBtYWtlX3BhcnNlc3RhdGUoTlVMTCk7CisJcHN0YXRlLT5wX3NvdXJj ZXRleHQgPSBxdWVyeVN0cmluZzsKKwluc2l0ZW0gPSBhZGRSYW5nZVRhYmxlRW50cnlGb3JSZWxh dGlvbihwc3RhdGUsIHJlbGF0aW9uLAorCQkJCQkJCQkJCSAgIEFjY2Vzc1NoYXJlTG9jaywgTlVM TCwKKwkJCQkJCQkJCQkgICBmYWxzZSwgZmFsc2UpOworCWFkZE5TSXRlbVRvUXVlcnkocHN0YXRl LCBuc2l0ZW0sIGZhbHNlLCB0cnVlLCB0cnVlKTsKKworCXRyYW5zZm9ybWVkV2hlcmVDbGF1c2Ug PSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3RhdGUsCisJCQkJCQkJCQkJCQkgIGNvcHlPYmplY3Qo d2hlcmVDbGF1c2UpLAorCQkJCQkJCQkJCQkJICBFWFBSX0tJTkRfV0hFUkUsCisJCQkJCQkJCQkJ CQkgICJQVUJMSUNBVElPTiBXSEVSRSIpOworCisJLyogRml4IHVwIGNvbGxhdGlvbiBpbmZvcm1h dGlvbiAqLworCWFzc2lnbl9leHByX2NvbGxhdGlvbnMocHN0YXRlLCB0cmFuc2Zvcm1lZFdoZXJl Q2xhdXNlKTsKKworCS8qCisJICogV2UgYWxsb3cgb25seSBzaW1wbGUgZXhwcmVzc2lvbnMgaW4g cm93IGZpbHRlcnMuIFNlZQorCSAqIGNoZWNrX3NpbXBsZV9yb3dmaWx0ZXJfZXhwcl93YWxrZXIu CisJICovCisJaWYgKGNoZWNrX2V4cHIpCisJCWNoZWNrX3NpbXBsZV9yb3dmaWx0ZXJfZXhwcih0 cmFuc2Zvcm1lZFdoZXJlQ2xhdXNlLCBwc3RhdGUpOworCisJZnJlZV9wYXJzZXN0YXRlKHBzdGF0 ZSk7CisKKwlyZXR1cm4gdHJhbnNmb3JtZWRXaGVyZUNsYXVzZTsKK30KKwogLyoKICAqIFRyYW5z Zm9ybSB0aGUgcHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lvbiBmb3IgYWxsIHRoZSByZWxhdGlv bnMgaW4gdGhlIGxpc3QsCiAgKiBlbnN1cmluZyBpdCBpcyBjb2VyY2VkIHRvIGJvb2xlYW4gYW5k IG5lY2Vzc2FyeSBjb2xsYXRpb24gaW5mb3JtYXRpb24gaXMKICAqIGFkZGVkIGlmIHJlcXVpcmVk LCBhbmQgYWRkIGEgbmV3IG5zaXRlbS9SVEUgZm9yIHRoZSBhc3NvY2lhdGVkIHJlbGF0aW9uIHRv CiAgKiB0aGUgUGFyc2VTdGF0ZSdzIG5hbWVzcGFjZSBsaXN0LgotICoKLSAqIEFsc28gY2hlY2sg dGhlIHB1YmxpY2F0aW9uIHJvdyBmaWx0ZXIgZXhwcmVzc2lvbiBhbmQgdGhyb3cgYW4gZXJyb3Ig aWYKLSAqIGFueXRoaW5nIG5vdCBwZXJtaXR0ZWQgb3IgdW5leHBlY3RlZCBpcyBlbmNvdW50ZXJl ZC4KICAqLwogc3RhdGljIHZvaWQKIFRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhMaXN0ICp0YWJs ZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLApAQCAtNjE2LDkgKzcwMCw2IEBAIFRyYW5zZm9y bVB1YldoZXJlQ2xhdXNlcyhMaXN0ICp0YWJsZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAog CiAJZm9yZWFjaChsYywgdGFibGVzKQogCXsKLQkJUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW07 Ci0JCU5vZGUJICAgKndoZXJlY2xhdXNlID0gTlVMTDsKLQkJUGFyc2VTdGF0ZSAqcHN0YXRlOwog CQlQdWJsaWNhdGlvblJlbEluZm8gKnByaSA9IChQdWJsaWNhdGlvblJlbEluZm8gKikgbGZpcnN0 KGxjKTsKIAogCQlpZiAocHJpLT53aGVyZUNsYXVzZSA9PSBOVUxMKQpAQCAtNjM4LDM0ICs3MTks OCBAQCBUcmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMoTGlzdCAqdGFibGVzLCBjb25zdCBjaGFyICpx dWVyeVN0cmluZywKIAkJCQkJIGVycmRldGFpbCgiV0hFUkUgY2xhdXNlIGNhbm5vdCBiZSB1c2Vk IGZvciBhIHBhcnRpdGlvbmVkIHRhYmxlIHdoZW4gJXMgaXMgZmFsc2UuIiwKIAkJCQkJCQkgICAi cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QiKSkpOwogCi0JCS8qCi0JCSAqIEEgZnJlc2ggcHN0 YXRlIGlzIHJlcXVpcmVkIHNvIHRoYXQgd2Ugb25seSBoYXZlICJ0aGlzIiB0YWJsZSBpbiBpdHMK LQkJICogcmFuZ2V0YWJsZQotCQkgKi8KLQkJcHN0YXRlID0gbWFrZV9wYXJzZXN0YXRlKE5VTEwp OwotCQlwc3RhdGUtPnBfc291cmNldGV4dCA9IHF1ZXJ5U3RyaW5nOwotCQluc2l0ZW0gPSBhZGRS YW5nZVRhYmxlRW50cnlGb3JSZWxhdGlvbihwc3RhdGUsIHByaS0+cmVsYXRpb24sCi0JCQkJCQkJ CQkJCSAgIEFjY2Vzc1NoYXJlTG9jaywgTlVMTCwKLQkJCQkJCQkJCQkJICAgZmFsc2UsIGZhbHNl KTsKLQkJYWRkTlNJdGVtVG9RdWVyeShwc3RhdGUsIG5zaXRlbSwgZmFsc2UsIHRydWUsIHRydWUp OwotCi0JCXdoZXJlY2xhdXNlID0gdHJhbnNmb3JtV2hlcmVDbGF1c2UocHN0YXRlLAotCQkJCQkJ CQkJCSAgIGNvcHlPYmplY3QocHJpLT53aGVyZUNsYXVzZSksCi0JCQkJCQkJCQkJICAgRVhQUl9L SU5EX1dIRVJFLAotCQkJCQkJCQkJCSAgICJQVUJMSUNBVElPTiBXSEVSRSIpOwotCi0JCS8qIEZp eCB1cCBjb2xsYXRpb24gaW5mb3JtYXRpb24gKi8KLQkJYXNzaWduX2V4cHJfY29sbGF0aW9ucyhw c3RhdGUsIHdoZXJlY2xhdXNlKTsKLQotCQkvKgotCQkgKiBXZSBhbGxvdyBvbmx5IHNpbXBsZSBl eHByZXNzaW9ucyBpbiByb3cgZmlsdGVycy4gU2VlCi0JCSAqIGNoZWNrX3NpbXBsZV9yb3dmaWx0 ZXJfZXhwcl93YWxrZXIuCi0JCSAqLwotCQljaGVja19zaW1wbGVfcm93ZmlsdGVyX2V4cHIod2hl cmVjbGF1c2UsIHBzdGF0ZSk7Ci0KLQkJZnJlZV9wYXJzZXN0YXRlKHBzdGF0ZSk7Ci0KLQkJcHJp LT53aGVyZUNsYXVzZSA9IHdoZXJlY2xhdXNlOworCQlwcmktPndoZXJlQ2xhdXNlID0gR2V0VHJh bnNmb3JtV2hlcmVDbGF1c2VzKHF1ZXJ5U3RyaW5nLCBwcmktPnJlbGF0aW9uLAorCQkJCQkJCQkJ CQkJCXByaS0+d2hlcmVDbGF1c2UsIHRydWUpOwogCX0KIH0KIApAQCAtNzI4LDYgKzc4Myw1MiBA QCBDaGVja1B1YlJlbGF0aW9uQ29sdW1uTGlzdChjaGFyICpwdWJuYW1lLCBMaXN0ICp0YWJsZXMs CiAJfQogfQogCisvKgorICogQ3JlYXRlIGV2ZW50IHRyaWdnZXIgd2hpY2ggaXMgdXNlZCBmb3Ig RERMIHJlcGxpY2F0aW9uLgorICovCitzdGF0aWMgdm9pZAorQ3JlYXRlRERMUmVwbGljYUV2ZW50 VHJpZ2dlcihjaGFyICpldmVudG5hbWUsIExpc3QgKmNvbW1hbmRzLAorCQkJCQkJCSBPYmplY3RB ZGRyZXNzIHB1YmFkZHJlc3MsIE9pZCBwdWJvaWQpCit7CisJTGlzdAkgICAqdGFncyA9IE5JTDsK KwlMaXN0Q2VsbCAgICpsYzsKKwlPaWQJCQl0cmlnZ2VyX2lkOworCU9iamVjdEFkZHJlc3MgcmVm ZXJlbmNlZDsKKwlDcmVhdGVFdmVudFRyaWdTdG10ICpkZGxfdHJpZ2dlcjsKKwljaGFyCQl0cmln Z2VyX25hbWVbTkFNRURBVEFMRU5dOworCWNoYXIJCXRyaWdnZXJfZnVuY19uYW1lW05BTUVEQVRB TEVOXTsKKwlzdGF0aWMgY29uc3QgY2hhciAqdHJpZ2dlcl9mdW5jX3ByZWZpeCA9ICJwdWJsaWNh dGlvbl9kZXBhcnNlXyVzIjsKKworCWRkbF90cmlnZ2VyID0gbWFrZU5vZGUoQ3JlYXRlRXZlbnRU cmlnU3RtdCk7CisKKwlzbnByaW50Zih0cmlnZ2VyX25hbWUsIHNpemVvZih0cmlnZ2VyX25hbWUp LCBQVUJfRVZFTlRfVFJJR19QUkVGSVgsCisJCQkgZXZlbnRuYW1lLCBwdWJvaWQpOworCXNucHJp bnRmKHRyaWdnZXJfZnVuY19uYW1lLCBzaXplb2YodHJpZ2dlcl9mdW5jX25hbWUpLCB0cmlnZ2Vy X2Z1bmNfcHJlZml4LAorCQkJIGV2ZW50bmFtZSk7CisKKwlkZGxfdHJpZ2dlci0+dHJpZ25hbWUg PSBwc3RyZHVwKHRyaWdnZXJfbmFtZSk7CisJZGRsX3RyaWdnZXItPmV2ZW50bmFtZSA9IGV2ZW50 bmFtZTsKKwlkZGxfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSh0cmlnZ2VyX2Z1 bmNfbmFtZSk7CisKKwlmb3JlYWNoKGxjLCBjb21tYW5kcykKKwl7CisJCUNvbW1hbmRUYWcgY21k dGFnID0gbGZpcnN0X2ludChsYyk7CisJCVN0cmluZwkgICAqdGFnID0gbWFrZVN0cmluZyhwc3Ry ZHVwKEdldENvbW1hbmRUYWdOYW1lKGNtZHRhZykpKTsKKworCQl0YWdzID0gbGFwcGVuZCh0YWdz LCB0YWcpOworCX0KKworCWRkbF90cmlnZ2VyLT53aGVuY2xhdXNlID0gbGlzdF9tYWtlMShtYWtl RGVmRWxlbSgidGFnIiwgKE5vZGUgKikgdGFncywgLTEpKTsKKworCXRyaWdnZXJfaWQgPSBDcmVh dGVFdmVudFRyaWdnZXIoZGRsX3RyaWdnZXIpOworCisJLyoKKwkgKiBSZWdpc3RlciB0aGUgZXZl bnQgdHJpZ2dlcnMgYXMgaW50ZXJuYWxseSBkZXBlbmRlbnQgb24gdGhlIHB1YmxpY2F0aW9uLgor CSAqLworCU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgRXZlbnRUcmlnZ2VyUmVsYXRpb25J ZCwgdHJpZ2dlcl9pZCk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZyZWZlcmVuY2VkLCAmcHViYWRk cmVzcywgREVQRU5ERU5DWV9JTlRFUk5BTCk7Cit9CisKIC8qCiAgKiBDcmVhdGUgbmV3IHB1Ymxp Y2F0aW9uLgogICovCkBAIC03NDEsNiArODQyLDcgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJRGF0dW0JCXZhbHVl c1tOYXR0c19wZ19wdWJsaWNhdGlvbl07CiAJSGVhcFR1cGxlCXR1cDsKIAlib29sCQlwdWJsaXNo X2dpdmVuOworCWJvb2wJCWRkbF90eXBlX2dpdmVuOwogCVB1YmxpY2F0aW9uQWN0aW9ucyBwdWJh Y3Rpb25zOwogCWJvb2wJCXB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dpdmVuOwogCWJvb2wJ CXB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290OwpAQCAtNzgxLDkgKzg4MywxMSBAQCBDcmVhdGVQ dWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3Rt dCkKIAogCXBhcnNlX3B1YmxpY2F0aW9uX29wdGlvbnMocHN0YXRlLAogCQkJCQkJCSAgc3RtdC0+ b3B0aW9ucywKKwkJCQkJCQkgIHN0bXQtPmZvcl9hbGxfdGFibGVzLAogCQkJCQkJCSAgJnB1Ymxp c2hfZ2l2ZW4sICZwdWJhY3Rpb25zLAogCQkJCQkJCSAgJnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290X2dpdmVuLAotCQkJCQkJCSAgJnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKwkJCQkJ CQkgICZwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCwKKwkJCQkJCQkgICZkZGxfdHlwZV9naXZl bik7CiAKIAlwdWJvaWQgPSBHZXROZXdPaWRXaXRoSW5kZXgocmVsLCBQdWJsaWNhdGlvbk9iamVj dEluZGV4SWQsCiAJCQkJCQkJCUFudW1fcGdfcHVibGljYXRpb25fb2lkKTsKQEAgLTc5OCw2ICs5 MDIsOCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCkKIAkJQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHViZGVsZXRlKTsK IAl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ0cnVuY2F0ZSAtIDFdID0KIAkJQm9vbEdl dERhdHVtKHB1YmFjdGlvbnMucHVidHJ1bmNhdGUpOworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0 aW9uX3B1YmRkbF90YWJsZSAtIDFdID0KKwlCb29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJkZGxf dGFibGUpOwogCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnZpYXJvb3QgLSAxXSA9CiAJ CUJvb2xHZXREYXR1bShwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKQEAgLTgzNSw2ICs5 NDEsMTIgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJs aWNhdGlvblN0bXQgKnN0bXQpCiAJCXsKIAkJCUxpc3QJICAgKnJlbHM7CiAKKwkJCWlmIChwdWJh Y3Rpb25zLnB1YmRkbF90YWJsZSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShF UlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCWVycm1zZygiY2Fubm90IGFk ZCB0YWJsZSB0byBwdWJsaWNhdGlvbiBcIiVzXCIgaWYgRERMIHJlcGxpY2F0aW9uIGlzIGVuYWJs ZWQiLAorCQkJCQkJCSAgIHN0bXQtPnB1Ym5hbWUpKTsKKwogCQkJcmVscyA9IE9wZW5UYWJsZUxp c3QocmVsYXRpb25zKTsKIAkJCVRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhyZWxzLCBwc3RhdGUt PnBfc291cmNldGV4dCwKIAkJCQkJCQkJCSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CkBA IC04NTgsNiArOTcwLDM5IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Q3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCQl9CiAJfQogCisJLyoKKwkgKiBDcmVhdGUg YW4gZXZlbnQgdHJpZ2dlciB0byBhbGxvdyBsb2dnaW5nIG9mIERETCBzdGF0ZW1lbnRzLgorCSAq CisJICovCisJaWYgKHB1YmFjdGlvbnMucHViZGRsX3RhYmxlKQorCXsKKwkJTGlzdAkgICAqc3Rh cnRfY29tbWFuZHMgPSBsaXN0X21ha2UxX2ludChDTURUQUdfRFJPUF9UQUJMRSk7CisJCUxpc3QJ ICAgKnJld3JpdGVfY29tbWFuZHMgPSBsaXN0X21ha2UxX2ludChDTURUQUdfQUxURVJfVEFCTEUp OworCQlMaXN0CSAgICppbml0X2NvbW1hbmRzID0gbGlzdF9tYWtlMl9pbnQoQ01EVEFHX0NSRUFU RV9UQUJMRV9BUywKKwkJCQkJCQkJCQkJCSAgIENNRFRBR19TRUxFQ1RfSU5UTyk7CisJCUxpc3QJ ICAgKmVuZF9jb21tYW5kcyA9IE5JTDsKKworCQllbmRfY29tbWFuZHMgPSBsYXBwZW5kX2ludChl bmRfY29tbWFuZHMsIENNRFRBR19DUkVBVEVfVEFCTEUpOworCQllbmRfY29tbWFuZHMgPSBsYXBw ZW5kX2ludChlbmRfY29tbWFuZHMsIENNRFRBR19BTFRFUl9UQUJMRSk7CisJCWVuZF9jb21tYW5k cyA9IGxhcHBlbmRfaW50KGVuZF9jb21tYW5kcywgQ01EVEFHX0RST1BfVEFCTEUpOworCisJCS8q IENyZWF0ZSB0aGUgZGRsX2NvbW1hbmRfZW5kIGV2ZW50IHRyaWdnZXIgKi8KKwkJQ3JlYXRlRERM UmVwbGljYUV2ZW50VHJpZ2dlcihQVUJfVFJJR19FVkVOVDEsIGVuZF9jb21tYW5kcywKKwkJCQkJ CQkJCSBteXNlbGYsIHB1Ym9pZCk7CisKKwkJLyogQ3JlYXRlIHRoZSBkZGxfY29tbWFuZF9zdGFy dCBldmVudCB0cmlnZ2VyICovCisJCUNyZWF0ZURETFJlcGxpY2FFdmVudFRyaWdnZXIoUFVCX1RS SUdfRVZFTlQyLCBzdGFydF9jb21tYW5kcywKKwkJCQkJCQkJCSBteXNlbGYsIHB1Ym9pZCk7CisK KwkJLyogQ3JlYXRlIHRoZSB0YWJsZV9yZXdyaXRlIGV2ZW50IHRyaWdnZXIgKi8KKwkJQ3JlYXRl RERMUmVwbGljYUV2ZW50VHJpZ2dlcihQVUJfVFJJR19FVkVOVDMsIHJld3JpdGVfY29tbWFuZHMs CisJCQkJCQkJCQkgbXlzZWxmLCBwdWJvaWQpOworCisJCS8qIENyZWF0ZSB0aGUgdGFibGVfaW5p dF93cml0ZSBldmVudCB0cmlnZ2VyICovCisJCUNyZWF0ZURETFJlcGxpY2FFdmVudFRyaWdnZXIo UFVCX1RSSUdfRVZFTlQ0LCBpbml0X2NvbW1hbmRzLAorCQkJCQkJCQkJIG15c2VsZiwgcHVib2lk KTsKKwl9CisKIAl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJSW52b2tl T2JqZWN0UG9zdENyZWF0ZUhvb2soUHVibGljYXRpb25SZWxhdGlvbklkLCBwdWJvaWQsIDApOwpA QCAtODgyLDYgKzEwMjcsNyBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpw c3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCWJvb2wJCXJlcGxhY2VzW05hdHRz X3BnX3B1YmxpY2F0aW9uXTsKIAlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3B1YmxpY2F0aW9uXTsK IAlib29sCQlwdWJsaXNoX2dpdmVuOworCWJvb2wJCWRkbF90eXBlX2dpdmVuOwogCVB1YmxpY2F0 aW9uQWN0aW9ucyBwdWJhY3Rpb25zOwogCWJvb2wJCXB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 X2dpdmVuOwogCWJvb2wJCXB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290OwpAQCAtODkwLDExICsx MDM2LDE1IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0 ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJTGlzdAkgICAqcm9vdF9yZWxpZHMgPSBOSUw7CiAJ TGlzdENlbGwgICAqbGM7CiAKKwlwdWJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNU UlVDVCh0dXApOworCiAJcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhwc3RhdGUsCiAJCQkJCQkJ ICBzdG10LT5vcHRpb25zLAorCQkJCQkJCSAgcHViZm9ybS0+cHViYWxsdGFibGVzLAogCQkJCQkJ CSAgJnB1Ymxpc2hfZ2l2ZW4sICZwdWJhY3Rpb25zLAogCQkJCQkJCSAgJnB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290X2dpdmVuLAotCQkJCQkJCSAgJnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 KTsKKwkJCQkJCQkgICZwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCwKKwkJCQkJCQkgICZkZGxf dHlwZV9naXZlbik7CiAKIAlwdWJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVD VCh0dXApOwogCkBAIC05NzgsNiArMTEyOCwxOCBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQ YXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQl9CiAJfQog CisJaWYgKGRkbF90eXBlX2dpdmVuICYmIHB1YmFjdGlvbnMucHViZGRsX3RhYmxlKQorCXsKKwkJ aWYgKHJvb3RfcmVsaWRzID09IE5JTCkKKwkJCXJvb3RfcmVsaWRzID0gR2V0UHVibGljYXRpb25S ZWxhdGlvbnMocHViZm9ybS0+b2lkLAorCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJUX1JP T1QpOworCisJCWlmIChyb290X3JlbGlkcykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCWVycm1zZygiRERMIHJl cGxpY2F0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIGluIEZPUiBBTEwgVEFCTEVTIG9yIEZPUiBUQUJM RVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9uIikpOworCX0KKwogCS8qIEV2ZXJ5dGhpbmcgb2ssIGZv cm0gYSBuZXcgdHVwbGUuICovCiAJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOwog CW1lbXNldChudWxscywgZmFsc2UsIHNpemVvZihudWxscykpOwpAQCAtOTk2LDYgKzExNTgsOSBA QCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10LAogCiAJCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnRydW5j YXRlIC0gMV0gPSBCb29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSk7CiAJCXJlcGxh Y2VzW0FudW1fcGdfcHVibGljYXRpb25fcHVidHJ1bmNhdGUgLSAxXSA9IHRydWU7CisKKwkJdmFs dWVzW0FudW1fcGdfcHVibGljYXRpb25fcHViZGRsX3RhYmxlIC0gMV0gPSBCb29sR2V0RGF0dW0o cHViYWN0aW9ucy5wdWJkZGxfdGFibGUpOworCQlyZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9u X3B1YmRkbF90YWJsZSAtIDFdID0gdHJ1ZTsKIAl9CiAKIAlpZiAocHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3RfZ2l2ZW4pCkBAIC0xMTAzLDYgKzEyNjgsMTIgQEAgQWx0ZXJQdWJsaWNhdGlvblRh YmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAogCWlmIChz dG10LT5hY3Rpb24gPT0gQVBfQWRkT2JqZWN0cykKIAl7CisJCWlmIChwdWJmb3JtLT5wdWJkZGxf dGFibGUpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCQllcnJtc2coImNhbm5vdCBhZGQgdGFibGUgdG8gcHVibGlj YXRpb24gXCIlc1wiIGlmIERETCByZXBsaWNhdGlvbiBpcyBlbmFibGVkIiwKKwkJCQkJCSAgIHN0 bXQtPnB1Ym5hbWUpKTsKKwogCQlUcmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMocmVscywgcXVlcnlT dHJpbmcsIHB1YmZvcm0tPnB1YnZpYXJvb3QpOwogCiAJCXB1Ymxpc2hfc2NoZW1hIHw9IGlzX3Nj aGVtYV9wdWJsaWNhdGlvbihwdWJpZCk7CkBAIC0xMTIxLDYgKzEyOTIsMTIgQEAgQWx0ZXJQdWJs aWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwK IAkJTGlzdAkgICAqZGVscmVscyA9IE5JTDsKIAkJTGlzdENlbGwgICAqb2xkbGM7CiAKKwkJaWYg KHB1YmZvcm0tPnB1YmRkbF90YWJsZSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUo RVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCWVycm1zZygiY2Fubm90IGFk ZCB0YWJsZSB0byBwdWJsaWNhdGlvbiBcIiVzXCIgaWYgRERMIHJlcGxpY2F0aW9uIGlzIGVuYWJs ZWQiLAorCQkJCQkJICAgc3RtdC0+cHVibmFtZSkpOworCiAJCVRyYW5zZm9ybVB1YldoZXJlQ2xh dXNlcyhyZWxzLCBxdWVyeVN0cmluZywgcHViZm9ybS0+cHVidmlhcm9vdCk7CiAKIAkJQ2hlY2tQ dWJSZWxhdGlvbkNvbHVtbkxpc3Qoc3RtdC0+cHVibmFtZSwgcmVscywgcHVibGlzaF9zY2hlbWEs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQppbmRleCAyZGMyNWUzN2Ji Li5iNzlkZGQ4Y2RjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUK QEAgLTE2LDYgKzE2LDggQEAgb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLUkkKHNyY2RpcikgJChDUFBG TEFHUykKIAogT0JKUyA9IFwKIAlhcHBseXBhcmFsbGVsd29ya2VyLm8gXAorCWRkbG1lc3NhZ2Uu byBcCisJZGRsdHJpZ2dlci5vIFwKIAlkZWNvZGUubyBcCiAJbGF1bmNoZXIubyBcCiAJbG9naWNh bC5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsbWVz c2FnZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGxtZXNzYWdlLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTExZTU2ZTVhMwotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsbWVzc2FnZS5jCkBA IC0wLDAgKzEsODQgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGRkbG1lc3NhZ2UuYwor ICoJICBMb2dpY2FsIERETCBtZXNzYWdlcy4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjIsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04K KyAqCSAgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGxtZXNzYWdlLmMKKyAqCisg KiBOT1RFUworICoKKyAqIExvZ2ljYWwgRERMIG1lc3NhZ2VzIGFsbG93IFhMT0cgbG9nZ2luZyBv ZiBEREwgY29tbWFuZCBzdHJpbmdzIHRoYXQKKyAqIGdldCBwYXNzZWQgdG8gdGhlIGxvZ2ljYWwg ZGVjb2RpbmcgcGx1Z2luLiBJbiBub3JtYWwgWExPRyBwcm9jZXNzaW5nIHRoZXkKKyAqIGFyZSBz YW1lIGFzIE5PT1AuCisgKgorICogVW5saWtlIGdlbmVyaWMgbG9naWNhbCBtZXNzYWdlcywgdGhl c2UgRERMIG1lc3NhZ2VzIGhhdmUgb25seSB0cmFuc2FjdGlvbmFsCisgKiBtb2RlLiBOb3RlIGJ5 IGRlZmF1bHQgRERMcyBpbiBQb3N0Z3JlU1FMIGFyZSB0cmFuc2FjdGlvbmFsLgorICoKKyAqIFRo ZXNlIG1lc3NhZ2VzIGFyZSBwYXJ0IG9mIGN1cnJlbnQgdHJhbnNhY3Rpb24gYW5kIHdpbGwgYmUg c2VudCB0bworICogZGVjb2RpbmcgcGx1Z2luIHVzaW5nIGluIGEgc2FtZSB3YXkgYXMgRE1MIG9w ZXJhdGlvbnMuCisgKgorICogRXZlcnkgbWVzc2FnZSBjYXJyaWVzIHByZWZpeCB0byBhdm9pZCBj b25mbGljdHMgYmV0d2VlbiBkaWZmZXJlbnQgZGVjb2RpbmcKKyAqIHBsdWdpbnMuIFRoZSBwbHVn aW4gYXV0aG9ycyBtdXN0IHRha2UgZXh0cmEgY2FyZSB0byB1c2UgdW5pcXVlIHByZWZpeCwKKyAq IGdvb2Qgb3B0aW9ucyBzZWVtcyB0byBiZSBmb3IgZXhhbXBsZSB0byB1c2UgdGhlIG5hbWUgb2Yg dGhlIGV4dGVuc2lvbi4KKyAqCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVk ZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5jbHVkZSAiYWNj ZXNzL3hsb2dpbnNlcnQuaCIKKyNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgorI2luY2x1ZGUg InJlcGxpY2F0aW9uL2xvZ2ljYWwuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdl LmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKworLyoKKyAqIFdyaXRlIGxvZ2ljYWwg ZGVjb2RpbmcgRERMIG1lc3NhZ2UgaW50byBYTG9nLgorICovCitYTG9nUmVjUHRyCitMb2dMb2dp Y2FsRERMTWVzc2FnZShjb25zdCBjaGFyICpwcmVmaXgsIE9pZCByZWxpZCwgRGVwYXJzZWRDb21t YW5kVHlwZSBjbWR0eXBlLAorCQkJCQkgY29uc3QgY2hhciAqbWVzc2FnZSwgc2l6ZV90IHNpemUp Cit7CisJeGxfbG9naWNhbF9kZGxfbWVzc2FnZSB4bHJlYzsKKworCSAvKiBFbnN1cmUgd2UgaGF2 ZSBhIHZhbGlkIHRyYW5zYWN0aW9uIGlkLiAqLworCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUo KSk7CisJR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKKworCXhscmVjLmRiSWQgPSBNeURhdGFi YXNlSWQ7CisJLyogVHJhaWxpbmcgemVybyBpcyBjcml0aWNhbDsgc2VlIGxvZ2ljYWxkZGxtc2df ZGVzYyAqLworCXhscmVjLnByZWZpeF9zaXplID0gc3RybGVuKHByZWZpeCkgKyAxOworCXhscmVj Lm1lc3NhZ2Vfc2l6ZSA9IHNpemU7CisJeGxyZWMucmVsaWQgPSByZWxpZDsKKwl4bHJlYy5jbWR0 eXBlID0gY21kdHlwZTsKKworCVhMb2dCZWdpbkluc2VydCgpOworCVhMb2dSZWdpc3RlckRhdGEo KGNoYXIgKikgJnhscmVjLCBTaXplT2ZMb2dpY2FsRERMTWVzc2FnZSk7CisJWExvZ1JlZ2lzdGVy RGF0YSh1bmNvbnN0aWZ5KGNoYXIgKiwgcHJlZml4KSwgeGxyZWMucHJlZml4X3NpemUpOworCVhM b2dSZWdpc3RlckRhdGEodW5jb25zdGlmeShjaGFyICosIG1lc3NhZ2UpLCBzaXplKTsKKworCS8q IEFsbG93IG9yaWdpbiBmaWx0ZXJpbmcgKi8KKwlYTG9nU2V0UmVjb3JkRmxhZ3MoWExPR19JTkNM VURFX09SSUdJTik7CisKKwlyZXR1cm4gWExvZ0luc2VydChSTV9MT0dJQ0FMRERMTVNHX0lELCBY TE9HX0xPR0lDQUxfRERMX01FU1NBR0UpOworfQorCisvKgorICogUmVkbyBpcyBiYXNpY2FsbHkg anVzdCBub29wIGZvciBsb2dpY2FsIGRlY29kaW5nIGRkbCBtZXNzYWdlcy4KKyAqLwordm9pZAor bG9naWNhbGRkbG1zZ19yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQoreworCXVpbnQ4CQlp bmZvID0gWExvZ1JlY0dldEluZm8ocmVjb3JkKSAmIH5YTFJfSU5GT19NQVNLOworCisJaWYgKGlu Zm8gIT0gWExPR19MT0dJQ0FMX0RETF9NRVNTQUdFKQorCQllbG9nKFBBTklDLCAibG9naWNhbGRk bG1zZ19yZWRvOiB1bmtub3duIG9wIGNvZGUgJXUiLCBpbmZvKTsKKworCS8qIFRoaXMgaXMgb25s eSBpbnRlcmVzdGluZyBmb3IgbG9naWNhbCBkZWNvZGluZywgc2VlIGRlY29kZS5jLiAqLworfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4xMjgyMzQwYzJiCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMKQEAgLTAsMCAr MSwyODMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGRkbHRyaWdnZXIuYworICoJICBM b2dpY2FsIERETCBtZXNzYWdlcy4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjIsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAg c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMKKyAqCisgKiBOT1RF UworICoKKyAqIERlcGFyc2UgdGhlIGRkbCBjb21tYW5kIGFuZCBsb2cgaXQuCisgKgorICogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRl ICJhY2Nlc3MvdGFibGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NsYXNzLmgiCisjaW5jbHVk ZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNs dWRlICJsaWIvaWxpc3QuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCisj aW5jbHVkZSAidGNvcC9kZGxfZGVwYXJzZS5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3Mu aCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKworZXh0ZXJuIEV2ZW50VHJpZ2dlclF1 ZXJ5U3RhdGUgKmN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZTsKKworLyoKKyAqIERlcGFyc2UgdGhl IGRkbCBjb21tYW5kIGFuZCBsb2cgaXQgcHJpb3IgdG8KKyAqIGV4ZWN1dGlvbi4gQ3VycmVudGx5 IG9ubHkgdXNlZCBmb3IgRFJPUCBUQUJMRSBjb21tYW5kCisgKiBzbyB0aGF0IGNhdGFsb2cgY2Fu IGJlIGFjY2Vzc2VkIGJlZm9yZSBiZWluZyBkZWxldGVkLgorICogVGhpcyBpcyB0byBjaGVjayBp ZiB0aGUgdGFibGUgaXMgcGFydCBvZiB0aGUgcHVibGljYXRpb24KKyAqIG9yIG5vdC4KKyAqLwor RGF0dW0KK3B1YmxpY2F0aW9uX2RlcGFyc2VfZGRsX2NvbW1hbmRfc3RhcnQoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwlFdmVudFRyaWdnZXJEYXRhICp0cmlnZGF0YTsKKwljaGFyCSAgICpjb21tYW5k ID0gcHNwcmludGYoIkRyb3AgdGFibGUgY29tbWFuZCBzdGFydCIpOworCURyb3BTdG10ICAgKnN0 bXQ7CisJTGlzdENlbGwgICAqY2VsbDE7CisKKwlpZiAoIUNBTExFRF9BU19FVkVOVF9UUklHR0VS KGZjaW5mbykpCisJCWVsb2coRVJST1IsICJub3QgZmlyZWQgYnkgZXZlbnQgdHJpZ2dlciBtYW5h Z2VyIik7CisKKwl0cmlnZGF0YSA9IChFdmVudFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4 dDsKKwlzdG10ID0gKERyb3BTdG10ICopIHRyaWdkYXRhLT5wYXJzZXRyZWU7CisKKwkvKiBFeHRy YWN0IHRoZSByZWxpZCBmcm9tIHRoZSBwYXJzZSB0cmVlICovCisJZm9yZWFjaChjZWxsMSwgc3Rt dC0+b2JqZWN0cykKKwl7CisJCWNoYXIJCXJlbHBlcnNpc3Q7CisJCU5vZGUJICAgKm9iamVjdCA9 IGxmaXJzdChjZWxsMSk7CisJCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKKwkJUmVsYXRpb24JcmVs YXRpb24gPSBOVUxMOworCisJCWFkZHJlc3MgPSBnZXRfb2JqZWN0X2FkZHJlc3Moc3RtdC0+cmVt b3ZlVHlwZSwKKwkJCQkJCQkJCSBvYmplY3QsCisJCQkJCQkJCQkgJnJlbGF0aW9uLAorCQkJCQkJ CQkJIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssCisJCQkJCQkJCQkgdHJ1ZSk7CisKKwkJLyogT2JqZWN0 IGRvZXMgbm90IGV4aXN0LCBub3RoaW5nIHRvIGRvICovCisJCWlmICghcmVsYXRpb24pCisJCQlj b250aW51ZTsKKworCQlyZWxwZXJzaXN0ID0gZ2V0X3JlbF9wZXJzaXN0ZW5jZShhZGRyZXNzLm9i amVjdElkKTsKKworCQkvKgorCQkgKiBEbyBub3QgZ2VuZXJhdGUgd2FsIGxvZyBmb3IgY29tbWFu ZHMgd2hvc2UgdGFyZ2V0IHRhYmxlIGlzIGEKKwkJICogdGVtcG9yYXJ5IG9yIHVubG9nZ2VkIHRh YmxlLgorCQkgKgorCQkgKiBYWFggV2UgbWF5IGdlbmVyYXRlIHdhbCBsb2dzIGZvciB1bmxvZ2dl ZCB0YWJsZXMgaW4gdGhlIGZ1dHVyZSBzbworCQkgKiB0aGF0IHVubG9nZ2VkIHRhYmxlcyBjYW4g YWxzbyBiZSBjcmVhdGVkIGFuZCBhbHRlcmVkIG9uIHRoZQorCQkgKiBzdWJzY3JpYmVyIHNpZGUu IFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gZGlyZWN0bHkgcmVwbGF5IHRoZSBTRVQKKwkJICog TE9HR0VEIGNvbW1hbmQgYW5kIHRoZSBpbmNvbWluZyByZXdyaXRlIG1lc3NhZ2Ugd2l0aG91dCBj cmVhdGluZyBhCisJCSAqIG5ldyB0YWJsZS4KKwkJICovCisJCWlmIChyZWxwZXJzaXN0ID09IFJF TFBFUlNJU1RFTkNFX1BFUk1BTkVOVCkKKwkJCUxvZ0xvZ2ljYWxERExNZXNzYWdlKCJkZXBhcnNl IiwgYWRkcmVzcy5vYmplY3RJZCwgRENUX1RhYmxlRHJvcFN0YXJ0LAorCQkJCQkJCQkgY29tbWFu ZCwgc3RybGVuKGNvbW1hbmQpICsgMSk7CisKKwkJaWYgKHJlbGF0aW9uKQorCQkJdGFibGVfY2xv c2UocmVsYXRpb24sIE5vTG9jayk7CisJfQorCXJldHVybiBQb2ludGVyR2V0RGF0dW0oTlVMTCk7 Cit9CisKKy8qCisgKiBwdWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX3Jld3JpdGUKKyAqCisgKiBE ZXBhcnNlIHRoZSBkZGwgdGFibGUgcmV3cml0ZSBjb21tYW5kIGFuZCBsb2cgaXQuCisgKi8KK0Rh dHVtCitwdWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX3Jld3JpdGUoUEdfRlVOQ1RJT05fQVJHUykK K3sKKwljaGFyCQlyZWxwZXJzaXN0OworCUNvbGxlY3RlZENvbW1hbmQgKmNtZDsKKwljaGFyCSAg ICpqc29uX3N0cmluZzsKKworCWlmICghQ0FMTEVEX0FTX0VWRU5UX1RSSUdHRVIoZmNpbmZvKSkK KwkJZWxvZyhFUlJPUiwgIm5vdCBmaXJlZCBieSBldmVudCB0cmlnZ2VyIG1hbmFnZXIiKTsKKwor CWNtZCA9IGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQ7CisKKwlBc3Nl cnQoY21kICYmIGNtZC0+ZC5hbHRlclRhYmxlLnJld3JpdGUpOworCisJcmVscGVyc2lzdCA9IGdl dF9yZWxfcGVyc2lzdGVuY2UoY21kLT5kLmFsdGVyVGFibGUub2JqZWN0SWQpOworCisJLyoKKwkg KiBEbyBub3QgZ2VuZXJhdGUgd2FsIGxvZyBmb3IgY29tbWFuZHMgd2hvc2UgdGFyZ2V0IHRhYmxl IGlzIGEgdGVtcG9yYXJ5CisJICogb3IgdW5sb2dnZWQgdGFibGUuCisJICoKKwkgKiBYWFggV2Ug bWF5IGdlbmVyYXRlIHdhbCBsb2dzIGZvciB1bmxvZ2dlZCB0YWJsZXMgaW4gdGhlIGZ1dHVyZSBz byB0aGF0CisJICogdW5sb2dnZWQgdGFibGVzIGNhbiBhbHNvIGJlIGNyZWF0ZWQgYW5kIGFsdGVy ZWQgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4KKwkgKiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRv IGRpcmVjdGx5IHJlcGxheSB0aGUgU0VUIExPR0dFRCBjb21tYW5kIGFuZCB0aGUKKwkgKiBpbmNv bWluZyByZXdyaXRlIG1lc3NhZ2Ugd2l0aG91dCBjcmVhdGluZyBhIG5ldyB0YWJsZS4KKwkgKi8K KwlpZiAocmVscGVyc2lzdCA9PSBSRUxQRVJTSVNURU5DRV9QRVJNQU5FTlQpCisJeworCQkvKiBE ZXBhcnNlIHRoZSBEREwgY29tbWFuZCBhbmQgV0FMIGxvZyBpdCB0byBhbGxvdyBkZWNvZGluZyBv ZiB0aGUgc2FtZS4gKi8KKwkJanNvbl9zdHJpbmcgPSBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChj bWQsIGZhbHNlKTsKKworCQlpZiAoanNvbl9zdHJpbmcgIT0gTlVMTCkKKwkJCUxvZ0xvZ2ljYWxE RExNZXNzYWdlKCJkZXBhcnNlIiwgY21kLT5kLmFsdGVyVGFibGUub2JqZWN0SWQsIERDVF9UYWJs ZUFsdGVyLAorCQkJCQkJCQkganNvbl9zdHJpbmcsIHN0cmxlbihqc29uX3N0cmluZykgKyAxKTsK Kwl9CisKKwlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworfQorCisvKgorICogRGVwYXJz ZSB0aGUgZGRsIGNvbW1hbmQgYW5kIGxvZyBpdC4gVGhpcyBmdW5jdGlvbgorICogaXMgY2FsbGVk IGFmdGVyIHRoZSBleGVjdXRpb24gb2YgdGhlIGNvbW1hbmQgYnV0IGJlZm9yZSB0aGUKKyAqIHRy YW5zYWN0aW9uIGNvbW1pdHMuCisgKi8KK0RhdHVtCitwdWJsaWNhdGlvbl9kZXBhcnNlX2RkbF9j b21tYW5kX2VuZChQR19GVU5DVElPTl9BUkdTKQoreworCUxpc3RDZWxsICAgKmxjOworCXNsaXN0 X2l0ZXIJaXRlcjsKKwlEZXBhcnNlZENvbW1hbmRUeXBlIHR5cGU7CisJT2lkCQkJcmVsaWQ7CisJ Y2hhcgkJcmVsa2luZDsKKworCWlmICghQ0FMTEVEX0FTX0VWRU5UX1RSSUdHRVIoZmNpbmZvKSkK KwkJZWxvZyhFUlJPUiwgIm5vdCBmaXJlZCBieSBldmVudCB0cmlnZ2VyIG1hbmFnZXIiKTsKKwor CWZvcmVhY2gobGMsIGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y29tbWFuZExpc3QpCisJewor CQljaGFyCQlyZWxwZXJzaXN0ID0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UOworCQlDb2xsZWN0 ZWRDb21tYW5kICpjbWQgPSBsZmlyc3QobGMpOworCQljaGFyCSAgICpqc29uX3N0cmluZzsKKwor CQkvKiBSZXdyaXRlIERETCBoYXMgYmVlbiBoYW5kbGVkIGluIHRhYmxlX3Jld3JpdGUgdHJpZ2dl ciAqLworCQlpZiAoY21kLT5kLmFsdGVyVGFibGUucmV3cml0ZSkKKwkJeworCQkJUmVuYW1lU3Rt dCAqcmVuYW1lU3RtdCA9IChSZW5hbWVTdG10ICopIGNtZC0+cGFyc2V0cmVlOworCisJCQlpZiAo cmVuYW1lU3RtdCAmJiByZW5hbWVTdG10LT5yZWxhdGlvblR5cGUgIT0gT0JKRUNUX1RZUEUgJiYK KwkJCQlyZW5hbWVTdG10LT5yZWxhdGlvblR5cGUgIT0gT0JKRUNUX1RBQkxFKQorCQkJCWNvbnRp bnVlOworCQl9CisKKwkJaWYgKGNtZC0+dHlwZSA9PSBTQ1RfU2ltcGxlICYmCisJCQkhT2lkSXNW YWxpZChjbWQtPmQuc2ltcGxlLmFkZHJlc3Mub2JqZWN0SWQpKQorCQkJY29udGludWU7CisKKwkJ aWYgKGNtZC0+dHlwZSA9PSBTQ1RfQWx0ZXJUYWJsZSkKKwkJeworCQkJcmVsaWQgPSBjbWQtPmQu YWx0ZXJUYWJsZS5vYmplY3RJZDsKKwkJCXR5cGUgPSBEQ1RfVGFibGVBbHRlcjsKKwkJfQorCQll bHNlCisJCXsKKwkJCS8qIE9ubHkgU0NUX1NpbXBsZSBmb3Igbm93ICovCisJCQlyZWxpZCA9IGNt ZC0+ZC5zaW1wbGUuYWRkcmVzcy5vYmplY3RJZDsKKwkJCXR5cGUgPSBEQ1RfU2ltcGxlQ21kOwor CQl9CisKKwkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2luZChyZWxpZCk7CisJCWlmIChyZWxraW5k KQorCQkJcmVscGVyc2lzdCA9IGdldF9yZWxfcGVyc2lzdGVuY2UocmVsaWQpOworCisJCS8qCisJ CSAqIERvIG5vdCBnZW5lcmF0ZSB3YWwgbG9nIGZvciBjb21tYW5kcyB3aG9zZSB0YXJnZXQgdGFi bGUgaXMgYQorCQkgKiB0ZW1wb3Jhcnkgb3IgdW5sb2dnZWQgdGFibGUuCisJCSAqCisJCSAqIFhY WCBXZSBtYXkgZ2VuZXJhdGUgd2FsIGxvZ3MgZm9yIHVubG9nZ2VkIHRhYmxlcyBpbiB0aGUgZnV0 dXJlIHNvCisJCSAqIHRoYXQgdW5sb2dnZWQgdGFibGVzIGNhbiBhbHNvIGJlIGNyZWF0ZWQgYW5k IGFsdGVyZWQgb24gdGhlCisJCSAqIHN1YnNjcmliZXIgc2lkZS4gVGhpcyBtYWtlcyBpdCBwb3Nz aWJsZSB0byBkaXJlY3RseSByZXBsYXkgdGhlIFNFVAorCQkgKiBMT0dHRUQgY29tbWFuZCBhbmQg dGhlIGluY29taW5nIHJld3JpdGUgbWVzc2FnZSB3aXRob3V0IGNyZWF0aW5nIGEKKwkJICogbmV3 IHRhYmxlLgorCQkgKi8KKwkJaWYgKHJlbHBlcnNpc3QgPT0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFO RU5UKQorCQl7CisJCQkvKgorCQkJICogRGVwYXJzZSB0aGUgRERMIGNvbW1hbmQgYW5kIFdBTCBs b2cgaXQgdG8gYWxsb3cgZGVjb2Rpbmcgb2YgdGhlCisJCQkgKiBzYW1lLgorCQkJICovCisJCQlq c29uX3N0cmluZyA9IGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKGNtZCwgZmFsc2UpOworCisJCQlp ZiAoanNvbl9zdHJpbmcgIT0gTlVMTCkKKwkJCQlMb2dMb2dpY2FsRERMTWVzc2FnZSgiZGVwYXJz ZSIsIHJlbGlkLCB0eXBlLCBqc29uX3N0cmluZywKKwkJCQkJCQkJCSBzdHJsZW4oanNvbl9zdHJp bmcpICsgMSk7CisJCX0KKwl9CisKKwlzbGlzdF9mb3JlYWNoKGl0ZXIsICYoY3VycmVudEV2ZW50 VHJpZ2dlclN0YXRlLT5TUUxEcm9wTGlzdCkpCisJeworCQlTUUxEcm9wT2JqZWN0ICpvYmo7CisJ CURyb3BTdG10ICAgKnN0bXQ7CisJCUV2ZW50VHJpZ2dlckRhdGEgKnRyaWdkYXRhOworCQljaGFy CSAgICpjb21tYW5kOworCQlEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGU7CisKKwkJdHJpZ2Rh dGEgPSAoRXZlbnRUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQ7CisJCXN0bXQgPSAoRHJv cFN0bXQgKikgdHJpZ2RhdGEtPnBhcnNldHJlZTsKKworCQlvYmogPSBzbGlzdF9jb250YWluZXIo U1FMRHJvcE9iamVjdCwgbmV4dCwgaXRlci5jdXIpOworCisJCWlmIChzdHJjbXAob2JqLT5vYmpl Y3R0eXBlLCAidGFibGUiKSA9PSAwKQorCQkJY21kdHlwZSA9IERDVF9UYWJsZURyb3BFbmQ7CisJ CWVsc2UKKwkJCWNvbnRpbnVlOworCisJCWNvbW1hbmQgPSBkZXBhcnNlX2Ryb3BfY29tbWFuZChv YmotPm9iamlkZW50aXR5LCBvYmotPm9iamVjdHR5cGUsCisJCQkJCQkJCQkgICBzdG10LT5iZWhh dmlvcik7CisKKwkJaWYgKGNvbW1hbmQpCisJCQlMb2dMb2dpY2FsRERMTWVzc2FnZSgiZGVwYXJz ZSIsIG9iai0+YWRkcmVzcy5vYmplY3RJZCwgY21kdHlwZSwKKwkJCQkJCQkJIGNvbW1hbmQsIHN0 cmxlbihjb21tYW5kKSArIDEpOworCX0KKworCXJldHVybiBQb2ludGVyR2V0RGF0dW0oTlVMTCk7 Cit9CisKKworLyoKKyAqIHB1YmxpY2F0aW9uX2RlcGFyc2VfdGFibGVfaW5pdF93cml0ZQorICoK KyAqIERlcGFyc2UgdGhlIGRkbCB0YWJsZSBjcmVhdGUgY29tbWFuZCBhbmQgbG9nIGl0LgorICov CitEYXR1bQorcHVibGljYXRpb25fZGVwYXJzZV90YWJsZV9pbml0X3dyaXRlKFBHX0ZVTkNUSU9O X0FSR1MpCit7CisJY2hhcgkJcmVscGVyc2lzdDsKKwlDb2xsZWN0ZWRDb21tYW5kICpjbWQ7CisJ Y2hhcgkgICAqanNvbl9zdHJpbmc7CisKKwlpZiAoIUNBTExFRF9BU19FVkVOVF9UUklHR0VSKGZj aW5mbykpCisJCWVsb2coRVJST1IsICJub3QgZmlyZWQgYnkgZXZlbnQgdHJpZ2dlciBtYW5hZ2Vy Iik7CisKKwljbWQgPSBjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRDb21tYW5kOwor CUFzc2VydChjbWQpOworCisJcmVscGVyc2lzdCA9IGdldF9yZWxfcGVyc2lzdGVuY2UoY21kLT5k LnNpbXBsZS5hZGRyZXNzLm9iamVjdElkKTsKKworCS8qCisJICogRG8gbm90IGdlbmVyYXRlIHdh bCBsb2cgZm9yIGNvbW1hbmRzIHdob3NlIHRhcmdldCB0YWJsZSBpcyBhIHRlbXBvcmFyeQorCSAq IHRhYmxlLgorCSAqCisJICogV2Ugd2lsbCBnZW5lcmF0ZSB3YWwgbG9ncyBmb3IgdW5sb2dnZWQg dGFibGVzIHNvIHRoYXQgdW5sb2dnZWQgdGFibGVzCisJICogY2FuIGFsc28gYmUgY3JlYXRlZCBh bmQgYWx0ZXJlZCBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBUaGlzIG1ha2VzIGl0CisJICogcG9z c2libGUgdG8gZGlyZWN0bHkgcmVwbGF5IHRoZSBTRVQgTE9HR0VEIGNvbW1hbmQgYW5kIHRoZSBp bmNvbWluZworCSAqIHJld3JpdGUgbWVzc2FnZSB3aXRob3V0IGNyZWF0aW5nIGEgbmV3IHRhYmxl LgorCSAqLworCWlmIChyZWxwZXJzaXN0ICE9IFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVCkKKwkJ cmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKKworCS8qIERlcGFyc2UgdGhlIERETCBjb21t YW5kIGFuZCBXQUwgbG9nIGl0IHRvIGFsbG93IGRlY29kaW5nIG9mIHRoZSBzYW1lLiAqLworCWpz b25fc3RyaW5nID0gZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQoY21kLCBmYWxzZSk7CisKKwlpZiAo anNvbl9zdHJpbmcgIT0gTlVMTCkKKwkJTG9nTG9naWNhbERETE1lc3NhZ2UoImRlcGFyc2UiLCBj bWQtPmQuc2ltcGxlLmFkZHJlc3Mub2JqZWN0SWQsIERDVF9TaW1wbGVDbWQsCisJCQkJCQkJIGpz b25fc3RyaW5nLCBzdHJsZW4oanNvbl9zdHJpbmcpICsgMSk7CisKKwlyZXR1cm4gUG9pbnRlckdl dERhdHVtKE5VTEwpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMK aW5kZXggOGZlN2JiNjVmMS4uYzYxNWEyM2ZlNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2RlY29kZS5jCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2d1 dGlscy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29udHJvbC5oIgogI2luY2x1ZGUgInJlcGxp Y2F0aW9uL2RlY29kZS5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIKICNp bmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbWVz c2FnZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgpAQCAtNjEzLDYgKzYxNCw0 NiBAQCBsb2dpY2FsbXNnX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dS ZWNvcmRCdWZmZXIgKmJ1ZikKIAkJCQkJCQkgIG1lc3NhZ2UtPm1lc3NhZ2UgKyBtZXNzYWdlLT5w cmVmaXhfc2l6ZSk7CiB9CiAKKy8qCisgKiBIYW5kbGUgcm1nciBMT0dJQ0FMRERMTVNHX0lEIHJl Y29yZHMgZm9yIERlY29kZVJlY29yZEludG9SZW9yZGVyQnVmZmVyKCkuCisgKi8KK3ZvaWQKK2xv Z2ljYWxkZGxfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1 ZmZlciAqYnVmKQoreworCVNuYXBCdWlsZCAgKmJ1aWxkZXIgPSBjdHgtPnNuYXBzaG90X2J1aWxk ZXI7CisJWExvZ1JlYWRlclN0YXRlICpyID0gYnVmLT5yZWNvcmQ7CisJVHJhbnNhY3Rpb25JZCB4 aWQgPSBYTG9nUmVjR2V0WGlkKHIpOworCXVpbnQ4CQlpbmZvID0gWExvZ1JlY0dldEluZm8ocikg JiB+WExSX0lORk9fTUFTSzsKKwlSZXBPcmlnaW5JZCBvcmlnaW5faWQgPSBYTG9nUmVjR2V0T3Jp Z2luKHIpOworCXhsX2xvZ2ljYWxfZGRsX21lc3NhZ2UgKm1lc3NhZ2U7CisKKwlpZiAoaW5mbyAh PSBYTE9HX0xPR0lDQUxfRERMX01FU1NBR0UpCisJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIFJN X0xPR0lDQUxERExNU0dfSUQgcmVjb3JkIHR5cGU6ICV1IiwgaW5mbyk7CisKKwlSZW9yZGVyQnVm ZmVyUHJvY2Vzc1hpZChjdHgtPnJlb3JkZXIsIFhMb2dSZWNHZXRYaWQociksIGJ1Zi0+b3JpZ3B0 cik7CisKKwkvKgorCSAqIElmIHdlIGRvbid0IGhhdmUgc25hcHNob3Qgb3Igd2UgYXJlIGp1c3Qg ZmFzdC1mb3J3YXJkaW5nLCB0aGVyZSBpcyBubworCSAqIHBvaW50IGluIGRlY29kaW5nIGRkbCBt ZXNzYWdlcy4KKwkgKi8KKwlpZiAoU25hcEJ1aWxkQ3VycmVudFN0YXRlKGJ1aWxkZXIpIDwgU05B UEJVSUxEX0ZVTExfU05BUFNIT1QgfHwKKwkJY3R4LT5mYXN0X2ZvcndhcmQpCisJCXJldHVybjsK KworCW1lc3NhZ2UgPSAoeGxfbG9naWNhbF9kZGxfbWVzc2FnZSAqKSBYTG9nUmVjR2V0RGF0YShy KTsKKworCWlmIChtZXNzYWdlLT5kYklkICE9IGN0eC0+c2xvdC0+ZGF0YS5kYXRhYmFzZSB8fAor CQlGaWx0ZXJCeU9yaWdpbihjdHgsIG9yaWdpbl9pZCkpCisJCXJldHVybjsKKworCWlmIChTbmFw QnVpbGRQcm9jZXNzQ2hhbmdlKGJ1aWxkZXIsIHhpZCwgYnVmLT5vcmlncHRyKSkKKwkJUmVvcmRl ckJ1ZmZlclF1ZXVlRERMTWVzc2FnZShjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5lbmRwdHIsCisJ CQkJCQkJCQkgbWVzc2FnZS0+bWVzc2FnZSwgLyogZmlyc3QgcGFydCBvZiBtZXNzYWdlIGlzIHBy ZWZpeCAqLworCQkJCQkJCQkJIG1lc3NhZ2UtPm1lc3NhZ2Vfc2l6ZSwKKwkJCQkJCQkJCSBtZXNz YWdlLT5tZXNzYWdlICsgbWVzc2FnZS0+cHJlZml4X3NpemUsCisJCQkJCQkJCQkgbWVzc2FnZS0+ cmVsaWQsIG1lc3NhZ2UtPmNtZHR5cGUpOworfQorCiAvKgogICogQ29uc29saWRhdGVkIGNvbW1p dCByZWNvcmQgaGFuZGxpbmcgYmV0d2VlbiB0aGUgZGlmZmVyZW50IGZvcm0gb2YgY29tbWl0CiAg KiByZWNvcmRzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9s b2dpY2FsLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwppbmRl eCBjM2VjOTdhMGE2Li5mNTZhNzE2NTY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2xvZ2ljYWwuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2xvZ2ljYWwuYwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImZtZ3IuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNh dGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vZGVjb2RlLmgiCiAjaW5j bHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdp bi5oIgpAQCAtNzMsNiArNzQsMTAgQEAgc3RhdGljIHZvaWQgdHJ1bmNhdGVfY2Jfd3JhcHBlcihS ZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogc3RhdGljIHZvaWQg bWVzc2FnZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhO ICp0eG4sCiAJCQkJCQkJICAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwgYm9vbCB0cmFuc2FjdGlv bmFsLAogCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnByZWZpeCwgU2l6ZSBtZXNzYWdlX3NpemUsIGNv bnN0IGNoYXIgKm1lc3NhZ2UpOworc3RhdGljIHZvaWQgZGRsX2NiX3dyYXBwZXIoUmVvcmRlckJ1 ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJICBYTG9nUmVjUHRy IG1lc3NhZ2VfbHNuLCBjb25zdCBjaGFyICpwcmVmaXgsCisJCQkJCQkJCSAgT2lkIHJlbGlkLCBE ZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCQkJCSAgU2l6ZSBtZXNzYWdlX3NpemUs IGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCiAvKiBzdHJlYW1pbmcgY2FsbGJhY2tzICovCiBzdGF0 aWMgdm9pZCBzdHJlYW1fc3RhcnRfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVv cmRlckJ1ZmZlclRYTiAqdHhuLApAQCAtOTAsNiArOTUsMTEgQEAgc3RhdGljIHZvaWQgc3RyZWFt X2NoYW5nZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhO ICp0eG4KIHN0YXRpYyB2b2lkIHN0cmVhbV9tZXNzYWdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZl ciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJCQkJCSAgWExvZ1JlY1B0ciBt ZXNzYWdlX2xzbiwgYm9vbCB0cmFuc2FjdGlvbmFsLAogCQkJCQkJCQkJICBjb25zdCBjaGFyICpw cmVmaXgsIFNpemUgbWVzc2FnZV9zaXplLCBjb25zdCBjaGFyICptZXNzYWdlKTsKK3N0YXRpYyB2 b2lkIHN0cmVhbV9kZGxfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1 ZmZlclRYTiAqdHhuLAorCQkJCQkJCQkJCSBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAorCQkJCQkJ CQkJCSBjb25zdCBjaGFyICpwcmVmaXgsCisJCQkJCQkJCQkJIE9pZCByZWxpZCwgRGVwYXJzZWRD b21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCQkJCSBTaXplIG1lc3NhZ2Vfc2l6ZSwgY29uc3Qg Y2hhciAqbWVzc2FnZSk7CiBzdGF0aWMgdm9pZCBzdHJlYW1fdHJ1bmNhdGVfY2Jfd3JhcHBlcihS ZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkJCQkJICAg aW50IG5yZWxhdGlvbnMsIFJlbGF0aW9uIHJlbGF0aW9uc1tdLCBSZW9yZGVyQnVmZmVyQ2hhbmdl ICpjaGFuZ2UpOwogCkBAIC0yMjMsNiArMjMzLDcgQEAgU3RhcnR1cERlY29kaW5nQ29udGV4dChM aXN0ICpvdXRwdXRfcGx1Z2luX29wdGlvbnMsCiAJY3R4LT5yZW9yZGVyLT5hcHBseV90cnVuY2F0 ZSA9IHRydW5jYXRlX2NiX3dyYXBwZXI7CiAJY3R4LT5yZW9yZGVyLT5jb21taXQgPSBjb21taXRf Y2Jfd3JhcHBlcjsKIAljdHgtPnJlb3JkZXItPm1lc3NhZ2UgPSBtZXNzYWdlX2NiX3dyYXBwZXI7 CisJY3R4LT5yZW9yZGVyLT5kZGwgPSBkZGxfY2Jfd3JhcHBlcjsKIAogCS8qCiAJICogVG8gc3Vw cG9ydCBzdHJlYW1pbmcsIHdlIHJlcXVpcmUgc3RhcnQvc3RvcC9hYm9ydC9jb21taXQvY2hhbmdl CkBAIC0yMzksNiArMjUwLDcgQEAgU3RhcnR1cERlY29kaW5nQ29udGV4dChMaXN0ICpvdXRwdXRf cGx1Z2luX29wdGlvbnMsCiAJCShjdHgtPmNhbGxiYWNrcy5zdHJlYW1fY29tbWl0X2NiICE9IE5V TEwpIHx8CiAJCShjdHgtPmNhbGxiYWNrcy5zdHJlYW1fY2hhbmdlX2NiICE9IE5VTEwpIHx8CiAJ CShjdHgtPmNhbGxiYWNrcy5zdHJlYW1fbWVzc2FnZV9jYiAhPSBOVUxMKSB8fAorCQkoY3R4LT5j YWxsYmFja3Muc3RyZWFtX2RkbF9jYiAhPSBOVUxMKSB8fAogCQkoY3R4LT5jYWxsYmFja3Muc3Ry ZWFtX3RydW5jYXRlX2NiICE9IE5VTEwpOwogCiAJLyoKQEAgLTI1Niw2ICsyNjgsNyBAQCBTdGFy dHVwRGVjb2RpbmdDb250ZXh0KExpc3QgKm91dHB1dF9wbHVnaW5fb3B0aW9ucywKIAljdHgtPnJl b3JkZXItPnN0cmVhbV9jb21taXQgPSBzdHJlYW1fY29tbWl0X2NiX3dyYXBwZXI7CiAJY3R4LT5y ZW9yZGVyLT5zdHJlYW1fY2hhbmdlID0gc3RyZWFtX2NoYW5nZV9jYl93cmFwcGVyOwogCWN0eC0+ cmVvcmRlci0+c3RyZWFtX21lc3NhZ2UgPSBzdHJlYW1fbWVzc2FnZV9jYl93cmFwcGVyOworCWN0 eC0+cmVvcmRlci0+c3RyZWFtX2RkbCA9IHN0cmVhbV9kZGxfY2Jfd3JhcHBlcjsKIAljdHgtPnJl b3JkZXItPnN0cmVhbV90cnVuY2F0ZSA9IHN0cmVhbV90cnVuY2F0ZV9jYl93cmFwcGVyOwogCiAK QEAgLTEyMzMsNiArMTI0Niw0NCBAQCBtZXNzYWdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAq Y2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJy Y2FsbGJhY2sucHJldmlvdXM7CiB9CiAKK3N0YXRpYyB2b2lkCitkZGxfY2Jfd3JhcHBlcihSZW9y ZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkgIFhMb2dSZWNQ dHIgbWVzc2FnZV9sc24sCisJCQkJCSAgY29uc3QgY2hhciAqcHJlZml4LCBPaWQgcmVsaWQsIERl cGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJICBTaXplIG1lc3NhZ2Vfc2l6ZSwKKwkJ CQkJICBjb25zdCBjaGFyICptZXNzYWdlKQoreworCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0 eCA9IGNhY2hlLT5wcml2YXRlX2RhdGE7CisJTG9naWNhbEVycm9yQ2FsbGJhY2tTdGF0ZSBzdGF0 ZTsKKwlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKKworCUFzc2VydCghY3R4LT5m YXN0X2ZvcndhcmQpOworCisJaWYgKGN0eC0+Y2FsbGJhY2tzLmRkbF9jYiA9PSBOVUxMKQorCQly ZXR1cm47CisKKwkvKiBQdXNoIGNhbGxiYWNrICsgaW5mbyBvbiB0aGUgZXJyb3IgY29udGV4dCBz dGFjayAqLworCXN0YXRlLmN0eCA9IGN0eDsKKwlzdGF0ZS5jYWxsYmFja19uYW1lID0gImRkbCI7 CisJc3RhdGUucmVwb3J0X2xvY2F0aW9uID0gbWVzc2FnZV9sc247CisJZXJyY2FsbGJhY2suY2Fs bGJhY2sgPSBvdXRwdXRfcGx1Z2luX2Vycm9yX2NhbGxiYWNrOworCWVycmNhbGxiYWNrLmFyZyA9 ICh2b2lkICopICZzdGF0ZTsKKwllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRf c3RhY2s7CisJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKworCS8qIHNldCBv dXRwdXQgc3RhdGUgKi8KKwljdHgtPmFjY2VwdF93cml0ZXMgPSB0cnVlOworCWN0eC0+d3JpdGVf eGlkID0gdHhuICE9IE5VTEwgPyB0eG4tPnhpZCA6IEludmFsaWRUcmFuc2FjdGlvbklkOworCWN0 eC0+d3JpdGVfbG9jYXRpb24gPSBtZXNzYWdlX2xzbjsKKworCS8qIGRvIHRoZSBhY3R1YWwgd29y azogY2FsbCBjYWxsYmFjayAqLworCWN0eC0+Y2FsbGJhY2tzLmRkbF9jYihjdHgsIHR4biwgbWVz c2FnZV9sc24sIHByZWZpeCwgcmVsaWQsIGNtZHR5cGUsCisJCQkJCQkJCSBtZXNzYWdlX3NpemUs IG1lc3NhZ2UpOworCisJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCisJZXJyb3Jf Y29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOworfQorCiBzdGF0aWMgdm9pZAog c3RyZWFtX3N0YXJ0X2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZm ZXJUWE4gKnR4biwKIAkJCQkJCVhMb2dSZWNQdHIgZmlyc3RfbHNuKQpAQCAtMTU0OCw2ICsxNTk5 LDQ4IEBAIHN0cmVhbV9tZXNzYWdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwKIAllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2su cHJldmlvdXM7CiB9CiAKK3N0YXRpYyB2b2lkCitzdHJlYW1fZGRsX2NiX3dyYXBwZXIoUmVvcmRl ckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkgWExvZ1JlY1B0 ciBtZXNzYWdlX2xzbiwKKwkJCQkJCQkgY29uc3QgY2hhciAqcHJlZml4LCBPaWQgcmVsaWQsIERl cGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJCQkgU2l6ZSBtZXNzYWdlX3NpemUsCisJ CQkJCQkJIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7CisJTG9naWNhbERlY29kaW5nQ29udGV4dCAq Y3R4ID0gY2FjaGUtPnByaXZhdGVfZGF0YTsKKwlMb2dpY2FsRXJyb3JDYWxsYmFja1N0YXRlIHN0 YXRlOworCUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNhbGxiYWNrOworCisJQXNzZXJ0KCFjdHgt PmZhc3RfZm9yd2FyZCk7CisKKwkvKiBXZSdyZSBvbmx5IHN1cHBvc2VkIHRvIGNhbGwgdGhpcyB3 aGVuIHN0cmVhbWluZyBpcyBzdXBwb3J0ZWQuICovCisJQXNzZXJ0KGN0eC0+c3RyZWFtaW5nKTsK KworCS8qIHRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwgKi8KKwlpZiAoY3R4LT5jYWxsYmFja3Mu c3RyZWFtX2RkbF9jYiA9PSBOVUxMKQorCQlyZXR1cm47CisKKwkvKiBQdXNoIGNhbGxiYWNrICsg aW5mbyBvbiB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLworCXN0YXRlLmN0eCA9IGN0eDsKKwlz dGF0ZS5jYWxsYmFja19uYW1lID0gInN0cmVhbV9kZGwiOworCXN0YXRlLnJlcG9ydF9sb2NhdGlv biA9IG1lc3NhZ2VfbHNuOworCWVycmNhbGxiYWNrLmNhbGxiYWNrID0gb3V0cHV0X3BsdWdpbl9l cnJvcl9jYWxsYmFjazsKKwllcnJjYWxsYmFjay5hcmcgPSAodm9pZCAqKSAmc3RhdGU7CisJZXJy Y2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOworCWVycm9yX2NvbnRleHRf c3RhY2sgPSAmZXJyY2FsbGJhY2s7CisKKwkvKiBzZXQgb3V0cHV0IHN0YXRlICovCisJY3R4LT5h Y2NlcHRfd3JpdGVzID0gdHJ1ZTsKKwljdHgtPndyaXRlX3hpZCA9IHR4biAhPSBOVUxMID8gdHhu LT54aWQgOiBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwljdHgtPndyaXRlX2xvY2F0aW9uID0gbWVz c2FnZV9sc247CisKKwkvKiBkbyB0aGUgYWN0dWFsIHdvcms6IGNhbGwgY2FsbGJhY2sgKi8KKwlj dHgtPmNhbGxiYWNrcy5zdHJlYW1fZGRsX2NiKGN0eCwgdHhuLCBtZXNzYWdlX2xzbiwgcHJlZml4 LCByZWxpZCwKKwkJCQkJCQkJCQljbWR0eXBlLCBtZXNzYWdlX3NpemUsIG1lc3NhZ2UpOworCisJ LyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCisJZXJyb3JfY29udGV4dF9zdGFjayA9 IGVycmNhbGxiYWNrLnByZXZpb3VzOworfQorCiBzdGF0aWMgdm9pZAogc3RyZWFtX3RydW5jYXRl X2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwK IAkJCQkJCSAgIGludCBucmVsYXRpb25zLCBSZWxhdGlvbiByZWxhdGlvbnNbXSwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCmluZGV4IGZhMWI2NDFh MmIuLjkyZjVmOTM1N2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbG9naWNhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9s b2dpY2FsZnVuY3MuYwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5j cy5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RlY29kZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL2xvZ2ljYWwuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5j bHVkZSAicmVwbGljYXRpb24vbWVzc2FnZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNp bmNsdWRlICJ1dGlscy9hcnJheS5oIgpAQCAtMzg4LDMgKzM4OSwyNiBAQCBwZ19sb2dpY2FsX2Vt aXRfbWVzc2FnZV90ZXh0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJLyogYnl0ZWEgYW5kIHRleHQgYXJl IGNvbXBhdGlibGUgKi8KIAlyZXR1cm4gcGdfbG9naWNhbF9lbWl0X21lc3NhZ2VfYnl0ZWEoZmNp bmZvKTsKIH0KKworLyoKKyAqIFNRTCBmdW5jdGlvbiBmb3Igd3JpdGluZyBsb2dpY2FsIGRlY29k aW5nIERETCBtZXNzYWdlIGludG8gV0FMLgorICovCitEYXR1bQorcGdfbG9naWNhbF9lbWl0X2Rk bF9tZXNzYWdlX2J5dGVhKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJY2hhcgkgICAqcHJlZml4ID0g dGV4dF90b19jc3RyaW5nKFBHX0dFVEFSR19URVhUX1BQKDApKTsKKwlPaWQJCQlyZWxpZCA9IFBH X0dFVEFSR19PSUQoMSk7CisJRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlID0gUEdfR0VUQVJH X0lOVDE2KDIpOworCWNoYXIJICAgKmRhdGEgPSB0ZXh0X3RvX2NzdHJpbmcoUEdfR0VUQVJHX1RF WFRfUFAoMykpOworCVhMb2dSZWNQdHIJbHNuOworCisJbHNuID0gTG9nTG9naWNhbERETE1lc3Nh Z2UocHJlZml4LCByZWxpZCwgY21kdHlwZSwgZGF0YSwgc3RybGVuKGRhdGEpKTsKKwlQR19SRVRV Uk5fTFNOKGxzbik7Cit9CisKK0RhdHVtCitwZ19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2VfdGV4 dChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIGJ5dGVhIGFuZCB0ZXh0IGFyZSBjb21wYXRpYmxl ICovCisJcmV0dXJuIHBnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZV9ieXRlYShmY2luZm8pOwor fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWls ZCBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKaW5kZXggZDQ4 Y2Q0YzU5MC4uMDVlNzc1Njk3ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L21lc29uLmJ1aWxkCkBAIC0yLDYgKzIsOCBAQAogCiBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMo CiAgICdhcHBseXBhcmFsbGVsd29ya2VyLmMnLAorICAnZGRsbWVzc2FnZS5jJywKKyAgJ2RkbHRy aWdnZXIuYycsCiAgICdkZWNvZGUuYycsCiAgICdsYXVuY2hlci5jJywKICAgJ2xvZ2ljYWwuYycs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggZjMwODcxMzI3NS4u MWJhM2ZlYjE4NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9w cm90by5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAt NjYzLDYgKzY2Myw0NyBAQCBsb2dpY2FscmVwX3dyaXRlX21lc3NhZ2UoU3RyaW5nSW5mbyBvdXQs IFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKIAlwcV9zZW5kYnl0ZXMob3V0LCBt ZXNzYWdlLCBzeik7CiB9CiAKKy8qCisgKiBSZWFkIERETCBNRVNTQUdFIGZyb20gc3RyZWFtCisg Ki8KK2NoYXIgKgorbG9naWNhbHJlcF9yZWFkX2RkbChTdHJpbmdJbmZvIGluLCBYTG9nUmVjUHRy ICpsc24sCisJCQkJCQkgICBjb25zdCBjaGFyICoqcHJlZml4LAorCQkJCQkJICAgU2l6ZSAqc3op Cit7CisJdWludDggZmxhZ3M7CisJY2hhciAqbXNnOworCisJZmxhZ3MgPSBwcV9nZXRtc2dpbnQo aW4sIDEpOworCWlmIChmbGFncyAhPSAwKQorCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGZs YWdzICV1IGluIGRkbCBtZXNzYWdlIiwgZmxhZ3MpOworCisJKmxzbiA9IHBxX2dldG1zZ2ludDY0 KGluKTsKKwkqcHJlZml4ID0gcHFfZ2V0bXNnc3RyaW5nKGluKTsKKwkqc3ogPSBwcV9nZXRtc2dp bnQoaW4sIDQpOworCW1zZyA9IChjaGFyICopIHBxX2dldG1zZ2J5dGVzKGluLCAqc3opOworCisJ cmV0dXJuIG1zZzsKK30KKworLyoKKyAqIFdyaXRlIERETCBNRVNTQUdFIHRvIHN0cmVhbQorICov Cit2b2lkCitsb2dpY2FscmVwX3dyaXRlX2RkbChTdHJpbmdJbmZvIG91dCwgWExvZ1JlY1B0ciBs c24sCisJCQkJCQkJY29uc3QgY2hhciAqcHJlZml4LCBTaXplIHN6LCBjb25zdCBjaGFyICptZXNz YWdlKQoreworCXVpbnQ4CQlmbGFncyA9IDA7CisKKwlwcV9zZW5kYnl0ZShvdXQsIExPR0lDQUxf UkVQX01TR19EREwpOworCisJcHFfc2VuZGludDgob3V0LCBmbGFncyk7CisJcHFfc2VuZGludDY0 KG91dCwgbHNuKTsKKwlwcV9zZW5kc3RyaW5nKG91dCwgcHJlZml4KTsKKwlwcV9zZW5kaW50MzIo b3V0LCBzeik7CisJcHFfc2VuZGJ5dGVzKG91dCwgbWVzc2FnZSwgc3opOworfQorCiAvKgogICog V3JpdGUgcmVsYXRpb24gZGVzY3JpcHRpb24gdG8gdGhlIG91dHB1dCBzdHJlYW0uCiAgKi8KQEAg LTEyMzgsNiArMTI3OSw4IEBAIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKExvZ2ljYWxSZXBNc2dU eXBlIGFjdGlvbikKIAkJCXJldHVybiAiVFlQRSI7CiAJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX01F U1NBR0U6CiAJCQlyZXR1cm4gIk1FU1NBR0UiOworCQljYXNlIExPR0lDQUxfUkVQX01TR19EREw6 CisJCQlyZXR1cm4gIkRETCI7CiAJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX0JFR0lOX1BSRVBBUkU6 CiAJCQlyZXR1cm4gIkJFR0lOIFBSRVBBUkUiOwogCQljYXNlIExPR0lDQUxfUkVQX01TR19QUkVQ QVJFOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVy YnVmZmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIu YwppbmRleCA5ZjQ0OTc0NDczLi5lODhlYjJmNDJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwpAQCAtOTQsNiArOTQsNyBAQAogI2luY2x1 ZGUgImxpYi9iaW5hcnloZWFwLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi cGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vZGRsbWVzc2FnZS5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL2xvZ2ljYWwuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9yZW9yZGVyYnVm ZmVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgpAQCAtNTE2LDYgKzUxNywxNCBA QCBSZW9yZGVyQnVmZmVyUmV0dXJuQ2hhbmdlKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVm ZmVyQ2hhbmdlICpjaGFuZ2UsCiAJCQkJcGZyZWUoY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlKTsK IAkJCWNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZSA9IE5VTEw7CiAJCQlicmVhazsKKwkJY2FzZSBS RU9SREVSX0JVRkZFUl9DSEFOR0VfRERMOgorCQkJaWYgKGNoYW5nZS0+ZGF0YS5kZGwucHJlZml4 ICE9IE5VTEwpCisJCQkJcGZyZWUoY2hhbmdlLT5kYXRhLmRkbC5wcmVmaXgpOworCQkJY2hhbmdl LT5kYXRhLmRkbC5wcmVmaXggPSBOVUxMOworCQkJaWYgKGNoYW5nZS0+ZGF0YS5kZGwubWVzc2Fn ZSAhPSBOVUxMKQorCQkJCXBmcmVlKGNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZSk7CisJCQljaGFu Z2UtPmRhdGEuZGRsLm1lc3NhZ2UgPSBOVUxMOworCQkJYnJlYWs7CiAJCWNhc2UgUkVPUkRFUl9C VUZGRVJfQ0hBTkdFX0lOVkFMSURBVElPTjoKIAkJCWlmIChjaGFuZ2UtPmRhdGEuaW52YWwuaW52 YWxpZGF0aW9ucykKIAkJCQlwZnJlZShjaGFuZ2UtPmRhdGEuaW52YWwuaW52YWxpZGF0aW9ucyk7 CkBAIC04OTUsNiArOTA0LDM2IEBAIFJlb3JkZXJCdWZmZXJRdWV1ZU1lc3NhZ2UoUmVvcmRlckJ1 ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCX0KIH0KIAorLyoKKyAqIEEgdHJhbnNhY3Rp b25hbCBEREwgbWVzc2FnZSBpcyBxdWV1ZWQgdG8gYmUgcHJvY2Vzc2VkIHVwb24gY29tbWl0Lgor ICovCit2b2lkCitSZW9yZGVyQnVmZmVyUXVldWVERExNZXNzYWdlKFJlb3JkZXJCdWZmZXIgKnJi LCBUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJCQkgWExvZ1JlY1B0ciBsc24sIGNvbnN0IGNoYXIg KnByZWZpeCwKKwkJCQkJCQkgU2l6ZSBtZXNzYWdlX3NpemUsIGNvbnN0IGNoYXIgKm1lc3NhZ2Us CisJCQkJCQkJIE9pZCByZWxpZCwgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlKQoreworCU1l bW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlSZW9yZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2U7CisK KwlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSk7CisKKwlvbGRjb250ZXh0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKHJiLT5jb250ZXh0KTsKKworCWNoYW5nZSA9IFJlb3JkZXJCdWZm ZXJHZXRDaGFuZ2UocmIpOworCWNoYW5nZS0+YWN0aW9uID0gUkVPUkRFUl9CVUZGRVJfQ0hBTkdF X0RETDsKKwljaGFuZ2UtPmRhdGEuZGRsLnByZWZpeCA9IHBzdHJkdXAocHJlZml4KTsKKwljaGFu Z2UtPmRhdGEuZGRsLnJlbGlkID0gcmVsaWQ7CisJY2hhbmdlLT5kYXRhLmRkbC5jbWR0eXBlID0g Y21kdHlwZTsKKwljaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2Vfc2l6ZSA9IG1lc3NhZ2Vfc2l6ZTsK KwljaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2UgPSBwYWxsb2MobWVzc2FnZV9zaXplKTsKKwltZW1j cHkoY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdlLCBtZXNzYWdlLCBtZXNzYWdlX3NpemUpOworCisJ UmVvcmRlckJ1ZmZlclF1ZXVlQ2hhbmdlKHJiLCB4aWQsIGxzbiwgY2hhbmdlLCBmYWxzZSk7CisK KwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7Cit9CisKIC8qCiAgKiBBc3NlcnRU WE5Mc25PcmRlcgogICoJCVZlcmlmeSBMU04gb3JkZXJpbmcgb2YgdHJhbnNhY3Rpb24gbGlzdHMg aW4gdGhlIHJlb3JkZXJidWZmZXIKQEAgLTE5OTcsNiArMjAzNiwyOSBAQCBSZW9yZGVyQnVmZmVy QXBwbHlNZXNzYWdlKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJ CQkJCWNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZSk7CiB9CiAKKy8qCisgKiBIZWxwZXIgZnVuY3Rp b24gZm9yIFJlb3JkZXJCdWZmZXJQcm9jZXNzVFhOIGZvciBhcHBseWluZyB0aGUgRERMIG1lc3Nh Z2UuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorUmVvcmRlckJ1ZmZlckFwcGx5RERMTWVzc2Fn ZShSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCSBSZW9y ZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2UsIGJvb2wgc3RyZWFtaW5nKQoreworCWlmIChzdHJlYW1p bmcpCisJCXJiLT5zdHJlYW1fZGRsKHJiLCB0eG4sIGNoYW5nZS0+bHNuLAorCQkJCQkJCSAgY2hh bmdlLT5kYXRhLmRkbC5wcmVmaXgsCisJCQkJCQkJICBjaGFuZ2UtPmRhdGEuZGRsLnJlbGlkLAor CQkJCQkJCSAgY2hhbmdlLT5kYXRhLmRkbC5jbWR0eXBlLAorCQkJCQkJCSAgY2hhbmdlLT5kYXRh LmRkbC5tZXNzYWdlX3NpemUsCisJCQkJCQkJICBjaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2UpOwor CWVsc2UKKwkJcmItPmRkbChyYiwgdHhuLCBjaGFuZ2UtPmxzbiwKKwkJCQkJICAgY2hhbmdlLT5k YXRhLmRkbC5wcmVmaXgsCisJCQkJCSAgIGNoYW5nZS0+ZGF0YS5kZGwucmVsaWQsCisJCQkJCSAg IGNoYW5nZS0+ZGF0YS5kZGwuY21kdHlwZSwKKwkJCQkJICAgY2hhbmdlLT5kYXRhLmRkbC5tZXNz YWdlX3NpemUsCisJCQkJCSAgIGNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZSk7Cit9CisKIC8qCiAg KiBGdW5jdGlvbiB0byBzdG9yZSB0aGUgY29tbWFuZCBpZCBhbmQgc25hcHNob3QgYXQgdGhlIGVu ZCBvZiB0aGUgY3VycmVudAogICogc3RyZWFtIHNvIHRoYXQgd2UgY2FuIHJldXNlIHRoZSBzYW1l IHdoaWxlIHNlbmRpbmcgdGhlIG5leHQgc3RyZWFtLgpAQCAtMjM3OSw2ICsyNDQxLDEwIEBAIFJl b3JkZXJCdWZmZXJQcm9jZXNzVFhOKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhO ICp0eG4sCiAJCQkJCVJlb3JkZXJCdWZmZXJBcHBseU1lc3NhZ2UocmIsIHR4biwgY2hhbmdlLCBz dHJlYW1pbmcpOwogCQkJCQlicmVhazsKIAorCQkJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdF X0RETDoKKwkJCQkJUmVvcmRlckJ1ZmZlckFwcGx5RERMTWVzc2FnZShyYiwgdHhuLCBjaGFuZ2Us IHN0cmVhbWluZyk7CisJCQkJCWJyZWFrOworCiAJCQkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFO R0VfSU5WQUxJREFUSU9OOgogCQkJCQkvKiBFeGVjdXRlIHRoZSBpbnZhbGlkYXRpb24gbWVzc2Fn ZXMgbG9jYWxseSAqLwogCQkJCQlSZW9yZGVyQnVmZmVyRXhlY3V0ZUludmFsaWRhdGlvbnMoY2hh bmdlLT5kYXRhLmludmFsLm5pbnZhbGlkYXRpb25zLApAQCAtMzgzNSw2ICszOTAxLDM5IEBAIFJl b3JkZXJCdWZmZXJTZXJpYWxpemVDaGFuZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZm ZXJUWE4gKnR4biwKIAkJCQkJICAgY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemUpOwogCQkJ CWRhdGEgKz0gY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemU7CiAKKwkJCQlicmVhazsKKwkJ CX0KKwkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfRERMOgorCQkJeworCQkJCWNoYXIJICAg KmRhdGE7CisJCQkJU2l6ZQkJcHJlZml4X3NpemUgPSBzdHJsZW4oY2hhbmdlLT5kYXRhLmRkbC5w cmVmaXgpICsgMTsKKworCQkJCXN6ICs9IHByZWZpeF9zaXplICsgY2hhbmdlLT5kYXRhLmRkbC5t ZXNzYWdlX3NpemUgKworCQkJCQlzaXplb2YoU2l6ZSkgKyBzaXplb2YoT2lkKSArIHNpemVvZihp bnQpICsgc2l6ZW9mKFNpemUpOworCQkJCVJlb3JkZXJCdWZmZXJTZXJpYWxpemVSZXNlcnZlKHJi LCBzeik7CisKKwkJCQlkYXRhID0gKChjaGFyICopIHJiLT5vdXRidWYpICsgc2l6ZW9mKFJlb3Jk ZXJCdWZmZXJEaXNrQ2hhbmdlKTsKKworCQkJCS8qIG1pZ2h0IGhhdmUgYmVlbiByZWFsbG9jYXRl ZCBhYm92ZSAqLworCQkJCW9uZGlzayA9IChSZW9yZGVyQnVmZmVyRGlza0NoYW5nZSAqKSByYi0+ b3V0YnVmOworCisJCQkJLyogd3JpdGUgdGhlIHByZWZpeCwgcmVsaWQgYW5kIGNtZHR5cGUgaW5j bHVkaW5nIHRoZSBzaXplICovCisJCQkJbWVtY3B5KGRhdGEsICZwcmVmaXhfc2l6ZSwgc2l6ZW9m KFNpemUpKTsKKwkJCQlkYXRhICs9IHNpemVvZihTaXplKTsKKwkJCQltZW1jcHkoZGF0YSwgJmNo YW5nZS0+ZGF0YS5kZGwucmVsaWQsIHNpemVvZihPaWQpKTsKKwkJCQlkYXRhICs9IHNpemVvZihP aWQpOworCQkJCW1lbWNweShkYXRhLCAmY2hhbmdlLT5kYXRhLmRkbC5jbWR0eXBlLCBzaXplb2Yo RGVwYXJzZWRDb21tYW5kVHlwZSkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKGludCk7CisJCQkJbWVt Y3B5KGRhdGEsIGNoYW5nZS0+ZGF0YS5kZGwucHJlZml4LCBwcmVmaXhfc2l6ZSk7CisJCQkJZGF0 YSArPSBwcmVmaXhfc2l6ZTsKKworCQkJCS8qIHdyaXRlIHRoZSBtZXNzYWdlIGluY2x1ZGluZyB0 aGUgc2l6ZSAqLworCQkJCW1lbWNweShkYXRhLCAmY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdlX3Np emUsIHNpemVvZihTaXplKSk7CisJCQkJZGF0YSArPSBzaXplb2YoU2l6ZSk7CisJCQkJbWVtY3B5 KGRhdGEsIGNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZSwKKwkJCQkJICAgY2hhbmdlLT5kYXRhLmRk bC5tZXNzYWdlX3NpemUpOworCQkJCWRhdGEgKz0gY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdlX3Np emU7CisKIAkJCQlicmVhazsKIAkJCX0KIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5W QUxJREFUSU9OOgpAQCAtNDE0OSw2ICs0MjQ4LDE1IEBAIFJlb3JkZXJCdWZmZXJDaGFuZ2VTaXpl KFJlb3JkZXJCdWZmZXJDaGFuZ2UgKmNoYW5nZSkKIAkJCQlzeiArPSBwcmVmaXhfc2l6ZSArIGNo YW5nZS0+ZGF0YS5tc2cubWVzc2FnZV9zaXplICsKIAkJCQkJc2l6ZW9mKFNpemUpICsgc2l6ZW9m KFNpemUpOwogCisJCQkJYnJlYWs7CisJCQl9CisJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdF X0RETDoKKwkJCXsKKwkJCQlTaXplCQlwcmVmaXhfc2l6ZSA9IHN0cmxlbihjaGFuZ2UtPmRhdGEu ZGRsLnByZWZpeCkgKyAxOworCisJCQkJc3ogKz0gcHJlZml4X3NpemUgKyBjaGFuZ2UtPmRhdGEu ZGRsLm1lc3NhZ2Vfc2l6ZSArCisJCQkJCXNpemVvZihTaXplKSArIHNpemVvZihTaXplKSArIHNp emVvZihPaWQpICsgc2l6ZW9mKERlcGFyc2VkQ29tbWFuZFR5cGUpOworCiAJCQkJYnJlYWs7CiAJ CQl9CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVkFMSURBVElPTjoKQEAgLTQ0MjYs NiArNDUzNCwzMyBAQCBSZW9yZGVyQnVmZmVyUmVzdG9yZUNoYW5nZShSZW9yZGVyQnVmZmVyICpy YiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkgICBjaGFuZ2UtPmRhdGEubXNnLm1lc3Nh Z2Vfc2l6ZSk7CiAJCQkJZGF0YSArPSBjaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2Vfc2l6ZTsKIAor CQkJCWJyZWFrOworCQkJfQorCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9EREw6CisJCQl7 CisJCQkJU2l6ZQkJcHJlZml4X3NpemU7CisKKwkJCQkvKiByZWFkIHByZWZpeCAqLworCQkJCW1l bWNweSgmcHJlZml4X3NpemUsIGRhdGEsIHNpemVvZihTaXplKSk7CisJCQkJZGF0YSArPSBzaXpl b2YoU2l6ZSk7CisJCQkJbWVtY3B5KCZjaGFuZ2UtPmRhdGEuZGRsLnJlbGlkLCBkYXRhLCBzaXpl b2YoT2lkKSk7CisJCQkJZGF0YSArPSBzaXplb2YoT2lkKTsKKwkJCQltZW1jcHkoJmNoYW5nZS0+ ZGF0YS5kZGwuY21kdHlwZSwgZGF0YSwgc2l6ZW9mKERlcGFyc2VkQ29tbWFuZFR5cGUpKTsKKwkJ CQlkYXRhICs9IHNpemVvZihpbnQpOworCQkJCWNoYW5nZS0+ZGF0YS5kZGwucHJlZml4ID0gTWVt b3J5Q29udGV4dEFsbG9jKHJiLT5jb250ZXh0LCBwcmVmaXhfc2l6ZSk7CisJCQkJbWVtY3B5KGNo YW5nZS0+ZGF0YS5kZGwucHJlZml4LCBkYXRhLCBwcmVmaXhfc2l6ZSk7CisJCQkJQXNzZXJ0KGNo YW5nZS0+ZGF0YS5kZGwucHJlZml4W3ByZWZpeF9zaXplIC0gMV0gPT0gJ1wwJyk7CisJCQkJZGF0 YSArPSBwcmVmaXhfc2l6ZTsKKworCQkJCS8qIHJlYWQgdGhlIG1lc3NhZ2UgKi8KKwkJCQltZW1j cHkoJmNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZV9zaXplLCBkYXRhLCBzaXplb2YoU2l6ZSkpOwor CQkJCWRhdGEgKz0gc2l6ZW9mKFNpemUpOworCQkJCWNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZSA9 IE1lbW9yeUNvbnRleHRBbGxvYyhyYi0+Y29udGV4dCwKKwkJCQkJCQkJCQkJCQkJCSAgY2hhbmdl LT5kYXRhLm1zZy5tZXNzYWdlX3NpemUpOworCQkJCW1lbWNweShjaGFuZ2UtPmRhdGEubXNnLm1l c3NhZ2UsIGRhdGEsCisJCQkJCSAgIGNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZV9zaXplKTsKKwkJ CQlkYXRhICs9IGNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZV9zaXplOworCiAJCQkJYnJlYWs7CiAJ CQl9CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVkFMSURBVElPTjoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDZmZDY3NGI1ZDYuLjFhZWYxNDky MDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMTY2LDYg KzE2Niw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1 bmNzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgorI2luY2x1ZGUgInBhcnNl ci9hbmFseXplLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVk ZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgpAQCAtMTkxLDcg KzE5MiwxMCBAQAogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAidGNvcC9k ZGxfZGVwYXJzZS5oIgorI2luY2x1ZGUgInRjb3AvcHF1ZXJ5LmgiCiAjaW5jbHVkZSAidGNvcC90 Y29wcHJvdC5oIgorI2luY2x1ZGUgInRjb3AvdXRpbGl0eS5oIgogI2luY2x1ZGUgInV0aWxzL2Fj bC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvY2F0Y2Fj aGUuaCIKQEAgLTMyMjgsNiArMzIzMiwyMzggQEAgYXBwbHlfaGFuZGxlX3RydW5jYXRlKFN0cmlu Z0luZm8gcykKIAllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogfQogCisvKgorICogU3BlY2lhbCBo YW5kbGluZyBmb3IgQ1JFQVRFIFRBQkxFIEFTIGFuZCBTRUxFQ1QgSU5UTworICogdG8gbm90IHBv cHVsYXRlIGRhdGEgZnJvbSB0aGUgc291cmNlIHRhYmxlIG9uIHRoZSBzdWJzY3JpYmVyLgorICog QWxsb3cgdGhlIGRhdGEgdG8gYmUgcmVwbGljYXRlZCB0aHJvdWdoIElOU0VSVHMgb24gdGhlIHB1 Ymxpc2hlci4KKyAqLworc3RhdGljIHZvaWQKK3ByZXByb2Nlc3NfY3JlYXRlX3RhYmxlKFJhd1N0 bXQgKmNvbW1hbmQpCit7CisJQ29tbWFuZFRhZwljb21tYW5kVGFnOworCisJY29tbWFuZFRhZyA9 IENyZWF0ZUNvbW1hbmRUYWcoKE5vZGUgKikgY29tbWFuZCk7CisKKwlzd2l0Y2ggKGNvbW1hbmRU YWcpCisJeworCQljYXNlIENNRFRBR19DUkVBVEVfVEFCTEVfQVM6CisJCWNhc2UgQ01EVEFHX1NF TEVDVF9JTlRPOgorCQkJeworCQkJCUNyZWF0ZVRhYmxlQXNTdG10ICpjYXN0bXQgPSAoQ3JlYXRl VGFibGVBc1N0bXQgKikgY29tbWFuZC0+c3RtdDsKKworCQkJCWlmIChjYXN0bXQtPm9ianR5cGUg PT0gT0JKRUNUX1RBQkxFKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogRm9yY2Ugc2tpcHBpbmcg ZGF0YSBwb3B1bGF0aW9uIHRvIGF2b2lkIGRhdGEKKwkJCQkJICogaW5jb25zaXN0ZW5jeS4gRGF0 YSBzaG91bGQgYmUgcmVwbGljYXRlZCBmcm9tIHRoZQorCQkJCQkgKiBwdWJsaXNoZXIgaW5zdGVh ZC4KKwkJCQkJICovCisJCQkJCWNhc3RtdC0+aW50by0+c2tpcERhdGEgPSB0cnVlOworCQkJCX0K KwkJCX0KKwkJCWJyZWFrOworCQljYXNlIENNRFRBR19TRUxFQ1Q6CisJCQl7CisJCQkJU2VsZWN0 U3RtdCAqc3N0bXQgPSAoU2VsZWN0U3RtdCAqKSBjb21tYW5kLT5zdG10OworCisJCQkJaWYgKHNz dG10LT5pbnRvQ2xhdXNlICE9IE5VTEwpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBGb3JjZSBz a2lwcGluZyBkYXRhIHBvcHVsYXRpb24gdG8gYXZvaWQgZGF0YQorCQkJCQkgKiBpbmNvbnNpc3Rl bmN5LiBEYXRhIHNob3VsZCBiZSByZXBsaWNhdGVkIGZyb20gdGhlCisJCQkJCSAqIHB1Ymxpc2hl ciBpbnN0ZWFkLgorCQkJCQkgKi8KKwkJCQkJc3N0bXQtPmludG9DbGF1c2UtPnNraXBEYXRhID0g dHJ1ZTsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWJyZWFrOworCX0K K30KKworLyoKKyAqIEhhbmRsZSBDUkVBVEUgVEFCTEUgY29tbWFuZAorICoKKyAqIENhbGwgQWRk U3Vic2NyaXB0aW9uUmVsU3RhdGUgZm9yIENSRUFURSBMQUJFTCBjb21tYW5kIHRvIHNldCB0aGUg cmVsc3RhdGUgdG8KKyAqIFNVQlJFTF9TVEFURV9SRUFEWSBzbyBETUwgY2hhbmdlcyBvbiB0aGlz IG5ldyB0YWJsZSBjYW4gYmUgcmVwbGljYXRlZCB3aXRob3V0CisgKiBoYXZpbmcgdG8gbWFudWFs bHkgcnVuICJhbHRlciBzdWJzY3JpcHRpb24gLi4uIHJlZnJlc2ggcHVibGljYXRpb24iCisgKi8K K3N0YXRpYyB2b2lkCitoYW5kbGVfY3JlYXRlX3RhYmxlKFJhd1N0bXQgKmNvbW1hbmQpCit7CisJ Q29tbWFuZFRhZwljb21tYW5kVGFnOworCVJhbmdlVmFyICAgKnJ2ID0gTlVMTDsKKwlPaWQJCQly ZWxpZDsKKwlPaWQJCQlyZWxuYW1lc3BhY2UgPSBJbnZhbGlkT2lkOworCUNyZWF0ZVN0bXQgKmNz dG10OworCWNoYXIJICAgKnNjaGVtYW5hbWUgPSBOVUxMOworCWNoYXIJICAgKnJlbG5hbWUgPSBO VUxMOworCisJY29tbWFuZFRhZyA9IENyZWF0ZUNvbW1hbmRUYWcoKE5vZGUgKikgY29tbWFuZCk7 CisJY3N0bXQgPSAoQ3JlYXRlU3RtdCAqKSBjb21tYW5kLT5zdG10OworCXJ2ID0gY3N0bXQtPnJl bGF0aW9uOworCisJaWYgKGNvbW1hbmRUYWcgPT0gQ01EVEFHX0NSRUFURV9UQUJMRSkKKwl7CisJ CWNzdG10ID0gKENyZWF0ZVN0bXQgKikgY29tbWFuZC0+c3RtdDsKKwkJcnYgPSBjc3RtdC0+cmVs YXRpb247CisJfQorCWVsc2UKKwl7CisJCXJldHVybjsKKwl9CisKKwlpZiAoIXJ2KQorCQlyZXR1 cm47CisKKwlzY2hlbWFuYW1lID0gcnYtPnNjaGVtYW5hbWU7CisJcmVsbmFtZSA9IHJ2LT5yZWxu YW1lOworCisJaWYgKHNjaGVtYW5hbWUgIT0gTlVMTCkKKwkJcmVsbmFtZXNwYWNlID0gZ2V0X25h bWVzcGFjZV9vaWQoc2NoZW1hbmFtZSwgZmFsc2UpOworCisJaWYgKHJlbG5hbWVzcGFjZSAhPSBJ bnZhbGlkT2lkKQorCQlyZWxpZCA9IGdldF9yZWxuYW1lX3JlbGlkKHJlbG5hbWUsIHJlbG5hbWVz cGFjZSk7CisJZWxzZQorCQlyZWxpZCA9IFJlbG5hbWVHZXRSZWxpZChyZWxuYW1lKTsKKworCWlm IChPaWRJc1ZhbGlkKHJlbGlkKSkKKwl7CisJCUFkZFN1YnNjcmlwdGlvblJlbFN0YXRlKE15U3Vi c2NyaXB0aW9uLT5vaWQsIHJlbGlkLAorCQkJCQkJCQlTVUJSRUxfU1RBVEVfUkVBRFksCisJCQkJ CQkJCUludmFsaWRYTG9nUmVjUHRyKTsKKwkJZXJlcG9ydChERUJVRzEsCisJCQkJKGVycm1zZ19p bnRlcm5hbCgidGFibGUgXCIlc1wiIGFkZGVkIHRvIHN1YnNjcmlwdGlvbiBcIiVzXCIiLAorCQkJ CQkJCQkgcmVsbmFtZSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJfQorfQorCisvKgorICog SGFuZGxlIERETCByZXBsaWNhdGlvbiBtZXNzYWdlcy4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5 X2hhbmRsZV9kZGwoU3RyaW5nSW5mbyBzKQoreworCVhMb2dSZWNQdHIJbHNuOworCWNvbnN0IGNo YXIgKnByZWZpeCA9IE5VTEw7CisJY2hhcgkgICAqbWVzc2FnZSA9IE5VTEw7CisJY2hhcgkgICAq ZGRsX2NvbW1hbmQ7CisJU2l6ZQkJc3o7CisJTGlzdAkgICAqcGFyc2V0cmVlX2xpc3Q7CisJTGlz dENlbGwgICAqcGFyc2V0cmVlX2l0ZW07CisJRGVzdFJlY2VpdmVyICpyZWNlaXZlcjsKKwlNZW1v cnlDb250ZXh0IG9sZGNvbnRleHQ7CisJY29uc3QgY2hhciAqc2F2ZV9kZWJ1Z19xdWVyeV9zdHJp bmcgPSBkZWJ1Z19xdWVyeV9zdHJpbmc7CisKKwltZXNzYWdlID0gbG9naWNhbHJlcF9yZWFkX2Rk bChzLCAmbHNuLCAmcHJlZml4LCAmc3opOworCisJLyogTWFrZSBzdXJlIHdlIGFyZSBpbiBhIHRy YW5zYWN0aW9uIGNvbW1hbmQgKi8KKwliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CisKKwlkZGxf Y29tbWFuZCA9IGRlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nKG1lc3NhZ2UpOworCWRlYnVnX3F1 ZXJ5X3N0cmluZyA9IGRkbF9jb21tYW5kOworCisJLyogRGVzdE5vbmUgZm9yIGxvZ2ljYWwgcmVw bGljYXRpb24gKi8KKwlyZWNlaXZlciA9IENyZWF0ZURlc3RSZWNlaXZlcihEZXN0Tm9uZSk7CisJ cGFyc2V0cmVlX2xpc3QgPSBwZ19wYXJzZV9xdWVyeShkZGxfY29tbWFuZCk7CisKKwlmb3JlYWNo KHBhcnNldHJlZV9pdGVtLCBwYXJzZXRyZWVfbGlzdCkKKwl7CisJCUxpc3QJICAgKnBsYW50cmVl X2xpc3Q7CisJCUxpc3QJICAgKnF1ZXJ5dHJlZV9saXN0OworCQlSYXdTdG10ICAgICpjb21tYW5k ID0gKFJhd1N0bXQgKikgbGZpcnN0KHBhcnNldHJlZV9pdGVtKTsKKwkJQ29tbWFuZFRhZwljb21t YW5kVGFnOworCQlNZW1vcnlDb250ZXh0IHBlcl9wYXJzZXRyZWVfY29udGV4dCA9IE5VTEw7CisJ CVBvcnRhbAkJcG9ydGFsOworCQlib29sCQlzbmFwc2hvdF9zZXQgPSBmYWxzZTsKKworCQljb21t YW5kVGFnID0gQ3JlYXRlQ29tbWFuZFRhZygoTm9kZSAqKSBjb21tYW5kKTsKKworCQkvKiBJZiB3 ZSBnb3QgYSBjYW5jZWwgc2lnbmFsIGluIHBhcnNpbmcgb3IgcHJpb3IgY29tbWFuZCwgcXVpdCAq LworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8qIFJlbW92ZSBkYXRhIHBvcHVsYXRp b24gZnJvbSB0aGUgY29tbWFuZCAqLworCQlwcmVwcm9jZXNzX2NyZWF0ZV90YWJsZShjb21tYW5k KTsKKworCQkvKgorCQkgKiBTZXQgdXAgYSBzbmFwc2hvdCBpZiBwYXJzZSBhbmFseXNpcy9wbGFu bmluZyB3aWxsIG5lZWQgb25lLgorCQkgKi8KKwkJaWYgKGFuYWx5emVfcmVxdWlyZXNfc25hcHNo b3QoY29tbWFuZCkpCisJCXsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNu YXBzaG90KCkpOworCQkJc25hcHNob3Rfc2V0ID0gdHJ1ZTsKKwkJfQorCisJCS8qCisJCSAqIFdl IGRvIHRoZSB3b3JrIGZvciBlYWNoIHBhcnNldHJlZSBpbiBhIHNob3J0LWxpdmVkIGNvbnRleHQs IHRvCisJCSAqIGxpbWl0IHRoZSBtZW1vcnkgdXNlZCB3aGVuIHRoZXJlIGFyZSBtYW55IGNvbW1h bmRzIGluIHRoZSBzdHJpbmcuCisJCSAqLworCQlwZXJfcGFyc2V0cmVlX2NvbnRleHQgPQorCQkJ QWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkgICJl eGVjdXRlX3NxbF9zdHJpbmcgcGVyLXN0YXRlbWVudCBjb250ZXh0IiwKKwkJCQkJCQkJICBBTExP Q1NFVF9ERUZBVUxUX1NJWkVTKTsKKwkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhwZXJfcGFyc2V0cmVlX2NvbnRleHQpOworCisJCXF1ZXJ5dHJlZV9saXN0ID0gcGdfYW5hbHl6 ZV9hbmRfcmV3cml0ZV9maXhlZHBhcmFtcyhjb21tYW5kLAorCQkJCQkJCQkJCQkJCQkJZGRsX2Nv bW1hbmQsCisJCQkJCQkJCQkJCQkJCQlOVUxMLCAwLCBOVUxMKTsKKworCQlwbGFudHJlZV9saXN0 ID0gcGdfcGxhbl9xdWVyaWVzKHF1ZXJ5dHJlZV9saXN0LCBkZGxfY29tbWFuZCwgMCwgTlVMTCk7 CisKKwkJLyogRG9uZSB3aXRoIHRoZSBzbmFwc2hvdCB1c2VkIGZvciBwYXJzaW5nL3BsYW5uaW5n ICovCisJCWlmIChzbmFwc2hvdF9zZXQpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJCXBv cnRhbCA9IENyZWF0ZVBvcnRhbCgibG9naWNhbCByZXBsaWNhdGlvbiIsIHRydWUsIHRydWUpOwor CisJCS8qCisJCSAqIFdlIGRvbid0IGhhdmUgdG8gY29weSBhbnl0aGluZyBpbnRvIHRoZSBwb3J0 YWwsIGJlY2F1c2UgZXZlcnl0aGluZworCQkgKiB3ZSBhcmUgcGFzc2luZyBoZXJlIGlzIGluIEFw cGx5TWVzc2FnZUNvbnRleHQgb3IgdGhlCisJCSAqIHBlcl9wYXJzZXRyZWVfY29udGV4dCwgYW5k IHNvIHdpbGwgb3V0bGl2ZSB0aGUgcG9ydGFsIGFueXdheS4KKwkJICovCisJCVBvcnRhbERlZmlu ZVF1ZXJ5KHBvcnRhbCwKKwkJCQkJCSAgTlVMTCwKKwkJCQkJCSAgZGRsX2NvbW1hbmQsCisJCQkJ CQkgIGNvbW1hbmRUYWcsCisJCQkJCQkgIHBsYW50cmVlX2xpc3QsCisJCQkJCQkgIE5VTEwpOwor CisJCS8qCisJCSAqIFN0YXJ0IHRoZSBwb3J0YWwuICBObyBwYXJhbWV0ZXJzIGhlcmUuCisJCSAq LworCQlQb3J0YWxTdGFydChwb3J0YWwsIE5VTEwsIDAsIEludmFsaWRTbmFwc2hvdCk7CisKKwkJ LyoKKwkJICogU3dpdGNoIGJhY2sgdG8gdHJhbnNhY3Rpb24gY29udGV4dCBmb3IgZXhlY3V0aW9u LgorCQkgKi8KKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJCSh2b2lk KSBQb3J0YWxSdW4ocG9ydGFsLAorCQkJCQkJIEZFVENIX0FMTCwKKwkJCQkJCSB0cnVlLAorCQkJ CQkJIHRydWUsCisJCQkJCQkgcmVjZWl2ZXIsCisJCQkJCQkgcmVjZWl2ZXIsCisJCQkJCQkgTlVM TCk7CisKKwkJUG9ydGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKKworCQlDb21tYW5kQ291bnRlcklu Y3JlbWVudCgpOworCisJCS8qCisJCSAqIFRhYmxlIGNyZWF0ZWQgYnkgRERMIHJlcGxpY2F0aW9u IChkYXRhYmFzZSBsZXZlbCkgaXMgYXV0b21hdGljYWxseQorCQkgKiBhZGRlZCB0byB0aGUgc3Vi c2NyaXB0aW9uIGhlcmUuCisJCSAqLworCQloYW5kbGVfY3JlYXRlX3RhYmxlKGNvbW1hbmQpOwor CisJCS8qIE5vdyB3ZSBtYXkgZHJvcCB0aGUgcGVyLXBhcnNldHJlZSBjb250ZXh0LCBpZiBvbmUg d2FzIGNyZWF0ZWQuICovCisJCU1lbW9yeUNvbnRleHREZWxldGUocGVyX3BhcnNldHJlZV9jb250 ZXh0KTsKKwl9CisKKwlkZWJ1Z19xdWVyeV9zdHJpbmcgPSBzYXZlX2RlYnVnX3F1ZXJ5X3N0cmlu ZzsKKwllbmRfcmVwbGljYXRpb25fc3RlcCgpOworfQogCiAvKgogICogTG9naWNhbCByZXBsaWNh dGlvbiBwcm90b2NvbCBtZXNzYWdlIGRpc3BhdGNoZXIuCkBAIC0zMjkzLDYgKzM1MjksMTAgQEAg YXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKQogCQkJICovCiAJCQlicmVhazsKIAorCQljYXNl IExPR0lDQUxfUkVQX01TR19EREw6CisJCQlhcHBseV9oYW5kbGVfZGRsKHMpOworCQkJYnJlYWs7 CisKIAkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUQVJUOgogCQkJYXBwbHlfaGFuZGxl X3N0cmVhbV9zdGFydChzKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bn b3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggZWJhZjU1NWQ1Ni4uN2VhOWZmNTFlYyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0xOCw2ICsxOCw3IEBA CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgorI2lu Y2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3N1 YnNjcmlwdGlvbmNtZHMuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1 ZGUgImZtZ3IuaCIKQEAgLTU1LDYgKzU2LDExIEBAIHN0YXRpYyB2b2lkIHBnb3V0cHV0X21lc3Nh Z2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCSBSZW9yZGVyQnVmZmVyVFhO ICp0eG4sIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCiAJCQkJCQkJIGJvb2wgdHJhbnNhY3Rpb25h bCwgY29uc3QgY2hhciAqcHJlZml4LAogCQkJCQkJCSBTaXplIHN6LCBjb25zdCBjaGFyICptZXNz YWdlKTsKK3N0YXRpYyB2b2lkIHBnb3V0cHV0X2RkbChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHgsCisJCQkJCQkgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNu LAorCQkJCQkJIGNvbnN0IGNoYXIgKnByZWZpeCwgT2lkIHJlbGlkLAorCQkJCQkJIERlcGFyc2Vk Q29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJCSBTaXplIHN6LCBjb25zdCBjaGFyICptZXNzYWdl KTsKIHN0YXRpYyBib29sIHBnb3V0cHV0X29yaWdpbl9maWx0ZXIoTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LAogCQkJCQkJCQkgICBSZXBPcmlnaW5JZCBvcmlnaW5faWQpOwogc3RhdGljIHZv aWQgcGdvdXRwdXRfYmVnaW5fcHJlcGFyZV90eG4oTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 LApAQCAtMjA3LDYgKzIxMyw3IEBAIHR5cGVkZWYgc3RydWN0IFJlbGF0aW9uU3luY0VudHJ5CiB0 eXBlZGVmIHN0cnVjdCBQR091dHB1dFR4bkRhdGEKIHsKIAlib29sCQlzZW50X2JlZ2luX3R4bjsg LyogZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgQkVHSU4gaGFzIGJlZW4gc2VudCAqLworCUxpc3QJ ICAgKmRlbGV0ZWRfcmVsaWRzOwogfSBQR091dHB1dFR4bkRhdGE7CiAKIC8qIE1hcCB1c2VkIHRv IHJlbWVtYmVyIHdoaWNoIHJlbGF0aW9uIHNjaGVtYXMgd2Ugc2VudC4gKi8KQEAgLTI1NCw2ICsy NjEsNyBAQCBfUEdfb3V0cHV0X3BsdWdpbl9pbml0KE91dHB1dFBsdWdpbkNhbGxiYWNrcyAqY2Ip CiAJY2ItPmNoYW5nZV9jYiA9IHBnb3V0cHV0X2NoYW5nZTsKIAljYi0+dHJ1bmNhdGVfY2IgPSBw Z291dHB1dF90cnVuY2F0ZTsKIAljYi0+bWVzc2FnZV9jYiA9IHBnb3V0cHV0X21lc3NhZ2U7CisJ Y2ItPmRkbF9jYiA9IHBnb3V0cHV0X2RkbDsKIAljYi0+Y29tbWl0X2NiID0gcGdvdXRwdXRfY29t bWl0X3R4bjsKIAogCWNiLT5iZWdpbl9wcmVwYXJlX2NiID0gcGdvdXRwdXRfYmVnaW5fcHJlcGFy ZV90eG47CkBAIC0yNzAsNiArMjc4LDcgQEAgX1BHX291dHB1dF9wbHVnaW5faW5pdChPdXRwdXRQ bHVnaW5DYWxsYmFja3MgKmNiKQogCWNiLT5zdHJlYW1fY29tbWl0X2NiID0gcGdvdXRwdXRfc3Ry ZWFtX2NvbW1pdDsKIAljYi0+c3RyZWFtX2NoYW5nZV9jYiA9IHBnb3V0cHV0X2NoYW5nZTsKIAlj Yi0+c3RyZWFtX21lc3NhZ2VfY2IgPSBwZ291dHB1dF9tZXNzYWdlOworCWNiLT5zdHJlYW1fZGRs X2NiID0gcGdvdXRwdXRfZGRsOwogCWNiLT5zdHJlYW1fdHJ1bmNhdGVfY2IgPSBwZ291dHB1dF90 cnVuY2F0ZTsKIAkvKiB0cmFuc2FjdGlvbiBzdHJlYW1pbmcgLSB0d28tcGhhc2UgY29tbWl0ICov CiAJY2ItPnN0cmVhbV9wcmVwYXJlX2NiID0gcGdvdXRwdXRfc3RyZWFtX3ByZXBhcmVfdHhuOwpA QCAtNDI1LDYgKzQzNCw3IEBAIHBnb3V0cHV0X3N0YXJ0dXAoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LCBPdXRwdXRQbHVnaW5PcHRpb25zICpvcHQsCiAKIAkvKiBUaGlzIHBsdWdpbiB1c2Vz IGJpbmFyeSBwcm90b2NvbC4gKi8KIAlvcHQtPm91dHB1dF90eXBlID0gT1VUUFVUX1BMVUdJTl9C SU5BUllfT1VUUFVUOworCW9wdC0+cmVjZWl2ZV9yZXdyaXRlcyA9IHRydWU7CiAKIAkvKgogCSAq IFRoaXMgaXMgcmVwbGljYXRpb24gc3RhcnQgYW5kIG5vdCBzbG90IGluaXRpYWxpemF0aW9uLgpA QCAtNTA1LDYgKzUxNSw3IEBAIHBnb3V0cHV0X3N0YXJ0dXAoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LCBPdXRwdXRQbHVnaW5PcHRpb25zICpvcHQsCiAKIAkJLyogSW5pdCBwdWJsaWNhdGlv biBzdGF0ZS4gKi8KIAkJZGF0YS0+cHVibGljYXRpb25zID0gTklMOworCQlkYXRhLT5kZWxldGVk X3JlbGlkcyA9IE5JTDsKIAkJcHVibGljYXRpb25zX3ZhbGlkID0gZmFsc2U7CiAKIAkJLyoKQEAg LTUzMyw2ICs1NDQsMzQgQEAgcGdvdXRwdXRfc3RhcnR1cChMb2dpY2FsRGVjb2RpbmdDb250ZXh0 ICpjdHgsIE91dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwKIAl9CiB9CiAKKy8qIEluaXRpYWxpemUg dGhlIHBlci10cmFuc2FjdGlvbiBsZXZlbCB2YXJpYWJsZSBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0 aW9uLiAqLworc3RhdGljIHZvaWQKK2luaXRfdHhuX2RhdGEoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4pCit7CisJUEdPdXRwdXRUeG5EYXRhICp0eG5k YXRhOworCisJaWYgKHR4bi0+b3V0cHV0X3BsdWdpbl9wcml2YXRlICE9IE5VTEwpCisJCXJldHVy bjsKKworCXR4bmRhdGEgPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKGN0eC0+Y29udGV4dCwgc2l6 ZW9mKFBHT3V0cHV0VHhuRGF0YSkpOworCisJdHhuLT5vdXRwdXRfcGx1Z2luX3ByaXZhdGUgPSB0 eG5kYXRhOworfQorCisvKiBDbGVhbiB1cCB0aGUgcGVyLXRyYW5zYWN0aW9uIGxldmVsIHZhcmlh YmxlIGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24uICovCitzdGF0aWMgdm9pZAorY2xlYW5fdHhu X2RhdGEoUmVvcmRlckJ1ZmZlclRYTiAqdHhuKQoreworCVBHT3V0cHV0VHhuRGF0YSAqdHhuZGF0 YSA9IChQR091dHB1dFR4bkRhdGEgKikgdHhuLT5vdXRwdXRfcGx1Z2luX3ByaXZhdGU7CisKKwlp ZiAodHhuZGF0YSA9PSBOVUxMKQorCQlyZXR1cm47CisKKwlsaXN0X2ZyZWUodHhuZGF0YS0+ZGVs ZXRlZF9yZWxpZHMpOworCXBmcmVlKHR4bmRhdGEpOworCXR4bi0+b3V0cHV0X3BsdWdpbl9wcml2 YXRlID0gTlVMTDsKK30KKwogLyoKICAqIEJFR0lOIGNhbGxiYWNrLgogICoKQEAgLTU0NiwxMCAr NTg1LDcgQEAgcGdvdXRwdXRfc3RhcnR1cChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE91 dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwKIHN0YXRpYyB2b2lkCiBwZ291dHB1dF9iZWdpbl90eG4o TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4pCiB7Ci0J UEdPdXRwdXRUeG5EYXRhICp0eG5kYXRhID0gTWVtb3J5Q29udGV4dEFsbG9jWmVybyhjdHgtPmNv bnRleHQsCi0JCQkJCQkJCQkJCQkJICBzaXplb2YoUEdPdXRwdXRUeG5EYXRhKSk7Ci0KLQl0eG4t Pm91dHB1dF9wbHVnaW5fcHJpdmF0ZSA9IHR4bmRhdGE7CisJaW5pdF90eG5fZGF0YShjdHgsIHR4 bik7CiB9CiAKIC8qCkBAIC01OTQsOCArNjMwLDcgQEAgcGdvdXRwdXRfY29tbWl0X3R4bihMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkgKi8KIAlz ZW50X2JlZ2luX3R4biA9IHR4bmRhdGEtPnNlbnRfYmVnaW5fdHhuOwogCU91dHB1dFBsdWdpblVw ZGF0ZVByb2dyZXNzKGN0eCwgIXNlbnRfYmVnaW5fdHhuKTsKLQlwZnJlZSh0eG5kYXRhKTsKLQl0 eG4tPm91dHB1dF9wbHVnaW5fcHJpdmF0ZSA9IE5VTEw7CisJY2xlYW5fdHhuX2RhdGEodHhuKTsK IAogCWlmICghc2VudF9iZWdpbl90eG4pCiAJewpAQCAtNjM3LDYgKzY3Miw4IEBAIHBnb3V0cHV0 X3ByZXBhcmVfdHhuKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRY TiAqdHhuLAogCU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRydWUpOwogCWxvZ2ljYWxy ZXBfd3JpdGVfcHJlcGFyZShjdHgtPm91dCwgdHhuLCBwcmVwYXJlX2xzbik7CiAJT3V0cHV0UGx1 Z2luV3JpdGUoY3R4LCB0cnVlKTsKKworCWNsZWFuX3R4bl9kYXRhKHR4bik7CiB9CiAKIC8qCkBA IC0xNDExLDYgKzE0NDgsMTkgQEAgcGdvdXRwdXRfY2hhbmdlKExvZ2ljYWxEZWNvZGluZ0NvbnRl eHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCVJlb3JkZXJCdWZmZXJDaGFuZ2VUeXBl IGFjdGlvbiA9IGNoYW5nZS0+YWN0aW9uOwogCVR1cGxlVGFibGVTbG90ICpvbGRfc2xvdCA9IE5V TEw7CiAJVHVwbGVUYWJsZVNsb3QgKm5ld19zbG90ID0gTlVMTDsKKwlib29sCQkJdGFibGVfcmV3 cml0ZSA9IGZhbHNlOworCisJLyoKKwkgKiBGb3IgaGVhcCByZXdyaXRlcywgd2UgbWlnaHQgbmVl ZCB0byByZXBsaWNhdGUgdGhlbSBpZiB0aGUgcmV3cml0dGVuCisJICogdGFibGUgcHVibGlzaGVz IHJld3JpdGUgZGRsIG1lc3NhZ2UuIFNvIGdldCB0aGUgYWN0dWFsIHJlbGF0aW9uIGhlcmUKKwkg KiBhbmQgY2hlY2sgdGhlIHB1YmFjdGlvbiBsYXRlci4KKwkgKi8KKwlpZiAocmVsYXRpb24tPnJk X3JlbC0+cmVscmV3cml0ZSkKKwl7CisJCXRhYmxlX3Jld3JpdGUgPSB0cnVlOworCQlyZWxhdGlv biA9IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihyZWxhdGlvbi0+cmRfcmVsLT5yZWxyZXdyaXRlKTsK KwkJdGFyZ2V0cmVsID0gcmVsYXRpb247CisJfQogCiAJaWYgKCFpc19wdWJsaXNoYWJsZV9yZWxh dGlvbihyZWxhdGlvbikpCiAJCXJldHVybjsKQEAgLTE0NTYsNiArMTUwNiwxMyBAQCBwZ291dHB1 dF9jaGFuZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0 eG4sCiAJCQlBc3NlcnQoZmFsc2UpOwogCX0KIAorCS8qCisJICogV2UgZG9uJ3QgcHVibGlzaCB0 YWJsZSByZXdyaXRlIGNoYW5nZSB1bmxlc3Mgd2UgcHVibGlzaCB0aGUgcmV3cml0ZSBkZGwKKwkg KiBtZXNzYWdlLgorCSAqLworCWlmICh0YWJsZV9yZXdyaXRlICYmICFyZWxlbnRyeS0+cHViYWN0 aW9ucy5wdWJkZGxfdGFibGUpCisJCXJldHVybjsKKwogCS8qIEF2b2lkIGxlYWtpbmcgbWVtb3J5 IGJ5IHVzaW5nIGFuZCByZXNldHRpbmcgb3VyIG93biBjb250ZXh0ICovCiAJb2xkID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKGRhdGEtPmNvbnRleHQpOwogCkBAIC0xNTAzLDcgKzE1NjAsOCBAQCBw Z291dHB1dF9jaGFuZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVy VFhOICp0eG4sCiAJICogVXBkYXRlcyBjb3VsZCBiZSB0cmFuc2Zvcm1lZCB0byBpbnNlcnRzIG9y IGRlbGV0ZXMgYmFzZWQgb24gdGhlIHJlc3VsdHMKIAkgKiBvZiB0aGUgcm93IGZpbHRlciBmb3Ig b2xkIGFuZCBuZXcgdHVwbGUuCiAJICovCi0JaWYgKCFwZ291dHB1dF9yb3dfZmlsdGVyKHRhcmdl dHJlbCwgb2xkX3Nsb3QsICZuZXdfc2xvdCwgcmVsZW50cnksICZhY3Rpb24pKQorCWlmICghdGFi bGVfcmV3cml0ZSAmJgorCQkhcGdvdXRwdXRfcm93X2ZpbHRlcih0YXJnZXRyZWwsIG9sZF9zbG90 LCAmbmV3X3Nsb3QsIHJlbGVudHJ5LCAmYWN0aW9uKSkKIAkJZ290byBjbGVhbnVwOwogCiAJLyoK QEAgLTE1MjgsOCArMTU4NiwxOCBAQCBwZ291dHB1dF9jaGFuZ2UoTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJc3dpdGNoIChhY3Rpb24pCiAJewog CQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlNFUlQ6Ci0JCQlsb2dpY2FscmVwX3dyaXRl X2luc2VydChjdHgtPm91dCwgeGlkLCB0YXJnZXRyZWwsIG5ld19zbG90LAotCQkJCQkJCQkJZGF0 YS0+YmluYXJ5LCByZWxlbnRyeS0+Y29sdW1ucyk7CisJCQkvKgorCQkJICogQ29udmVydCB0aGUg cmV3cml0ZSBpbnNlcnRzIHRvIHVwZGF0ZXMgc28gdGhhdCB0aGUgc3Vic2NyaWJlcgorCQkJICog Y2FuIHJlcGxheSBpdC4gVGhpcyBpcyBuZWVkZWQgdG8gbWFrZSBzdXJlIHRoZSBkYXRhIGJldHdl ZW4KKwkJCSAqIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBpcyBjb25zaXN0ZW50LgorCQkJICov CisJCQlpZiAodGFibGVfcmV3cml0ZSkKKwkJCQlsb2dpY2FscmVwX3dyaXRlX3VwZGF0ZShjdHgt Pm91dCwgeGlkLCB0YXJnZXRyZWwsCisJCQkJCQkJCQkJTlVMTCwgbmV3X3Nsb3QsIGRhdGEtPmJp bmFyeSwKKwkJCQkJCQkJCQlyZWxlbnRyeS0+Y29sdW1ucyk7CisJCQllbHNlCisJCQkJbG9naWNh bHJlcF93cml0ZV9pbnNlcnQoY3R4LT5vdXQsIHhpZCwgdGFyZ2V0cmVsLCBuZXdfc2xvdCwKKwkJ CQkJCQkJCQlkYXRhLT5iaW5hcnksIHJlbGVudHJ5LT5jb2x1bW5zKTsKIAkJCWJyZWFrOwogCQlj YXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9VUERBVEU6CiAJCQlsb2dpY2FscmVwX3dyaXRlX3Vw ZGF0ZShjdHgtPm91dCwgeGlkLCB0YXJnZXRyZWwsIG9sZF9zbG90LApAQCAtMTU1Miw2ICsxNjIw LDkgQEAgY2xlYW51cDoKIAkJYW5jZXN0b3IgPSBOVUxMOwogCX0KIAorCWlmICh0YWJsZV9yZXdy aXRlKQorCQlSZWxhdGlvbkNsb3NlKHJlbGF0aW9uKTsKKwogCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGQpOwogCU1lbW9yeUNvbnRleHRSZXNldChkYXRhLT5jb250ZXh0KTsKIH0KQEAgLTE2NjUs NiArMTczNiwxNDAgQEAgcGdvdXRwdXRfbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUp OwogfQogCisvKiBDaGVjayBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGlzIHB1Ymxpc2hlZC4gKi8KK3N0 YXRpYyBib29sCitpc19vYmplY3RfcHVibGlzaGVkKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0 eCwgT2lkIG9iamlkKQoreworCVJlbGF0aW9uCXJlbGF0aW9uID0gTlVMTDsKKwlSZWxhdGlvblN5 bmNFbnRyeSAqcmVsZW50cnk7CisJUEdPdXRwdXREYXRhICpkYXRhID0gKFBHT3V0cHV0RGF0YSAq KSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKworCS8qIEZpcnN0IGNoZWNrIHRoZSBEREwg Y29tbWFuZCBmaWx0ZXIuICovCisJc3dpdGNoIChnZXRfcmVsX3JlbGtpbmQob2JqaWQpKQorCXsK KwkJY2FzZSBSRUxLSU5EX1JFTEFUSU9OOgorCQkJcmVsYXRpb24gPSBSZWxhdGlvbklkR2V0UmVs YXRpb24ob2JqaWQpOworCQkJcmVsZW50cnkgPSBnZXRfcmVsX3N5bmNfZW50cnkoZGF0YSwgcmVs YXRpb24pOworCQkJUmVsYXRpb25DbG9zZShyZWxhdGlvbik7CisKKwkJCS8qCisJCQkgKiBTa2lw IHNlbmRpbmcgdGhpcyBkZGwgaWYgd2UgZG9uJ3QgcHVibGlzaCBkZGwgbWVzc2FnZSBvciB0aGUg ZGRsCisJCQkgKiBuZWVkIHRvIGJlIHB1Ymxpc2hlZCB2aWEgaXRzIHJvb3QgcmVsYXRpb24uCisJ CQkgKi8KKwkJCWlmICghcmVsZW50cnktPnB1YmFjdGlvbnMucHViZGRsX3RhYmxlIHx8CisJCQkJ cmVsZW50cnktPnB1Ymxpc2hfYXNfcmVsaWQgIT0gb2JqaWQpCisJCQkJcmV0dXJuIGZhbHNlOwor CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCS8qIHVuc3VwcG9ydGVkIG9iamVjdHMgKi8KKwkJ CXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIFNlbmQgdGhl IGRlY29kZWQgRERMIG92ZXIgd2lyZS4KKyAqLworc3RhdGljIHZvaWQKK3Bnb3V0cHV0X2RkbChM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCSBY TG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAorCQkJIGNvbnN0IGNoYXIgKnByZWZpeCwgT2lkIHJlbGlk LCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkgU2l6ZSBzeiwgY29uc3QgY2hhciAq bWVzc2FnZSkKK3sKKwlQR091dHB1dFR4bkRhdGEgKnR4bmRhdGEgPSAoUEdPdXRwdXRUeG5EYXRh ICopIHR4bi0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCisJLyoKKwkgKiBDaGVjayBpZiB0aGUg Z2l2ZW4gb2JqZWN0IGlzIHB1Ymxpc2hlZC4gTm90ZSB0aGF0IGZvciBkcm9wcGVkIG9iamVjdHMs CisJICogd2UgY2Fubm90IGdldCB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24gZnJvbSB0aGUgY2F0 YWxvZywgc28gd2Ugc2tpcCB0aGUKKwkgKiBjaGVjayBmb3IgdGhlbS4KKwkgKi8KKwlpZiAoY21k dHlwZSAhPSBEQ1RfVGFibGVEcm9wRW5kICYmICFpc19vYmplY3RfcHVibGlzaGVkKGN0eCwgcmVs aWQpKQorCQlyZXR1cm47CisKKwlzd2l0Y2ggKGNtZHR5cGUpCisJeworCQljYXNlIERDVF9UYWJs ZURyb3BTdGFydDoKKwkJCXsKKwkJCQlNZW1vcnlDb250ZXh0CW9sZDsKKworCQkJCWluaXRfdHhu X2RhdGEoY3R4LCB0eG4pOworCisJCQkJdHhuZGF0YSA9IChQR091dHB1dFR4bkRhdGEgKikgdHhu LT5vdXRwdXRfcGx1Z2luX3ByaXZhdGU7CisKKwkJCQkvKgorCQkJCSAqIE9uIERST1Agc3RhcnQs IGFkZCB0aGUgcmVsaWQgdG8gYSBkZWxldGVkX3JlbGlkIGxpc3QgaWYgdGhlCisJCQkJICogcmVs aWQgaXMgcGFydCBvZiBhIHB1YmxpY2F0aW9uIHRoYXQgc3VwcG9ydHMgZGRsCisJCQkJICogcHVi bGljYXRpb24uIFdlIG5lZWQgdGhpcyBiZWNhdXNlIG9uIERST1AgZW5kLCB0aGUgcmVsaWQKKwkJ CQkgKiB3aWxsIG5vIGxvbmdlciBiZSB2YWxpZC4gTGF0ZXIgb24gRHJvcCBlbmQsIHZlcmlmeSB0 aGF0IHRoZQorCQkJCSAqIGRyb3AgaXMgZm9yIGEgcmVsaWQgdGhhdCBpcyBvbiB0aGUgZGVsZXRl ZF9yaWQgbGlzdCwgYW5kCisJCQkJICogb25seSB0aGVuIHNlbmQgdGhlIGRkbCBtZXNzYWdlLgor CQkJCSAqLworCQkJCW9sZCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjdHgtPmNvbnRleHQpOwor CQkJCXR4bmRhdGEtPmRlbGV0ZWRfcmVsaWRzID0gbGFwcGVuZF9vaWQodHhuZGF0YS0+ZGVsZXRl ZF9yZWxpZHMsCisJCQkJCQkJCQkJCQkJICByZWxpZCk7CisJCQkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZCk7CisJCQl9CisJCQlyZXR1cm47CisKKwkJY2FzZSBEQ1RfVGFibGVEcm9wRW5kOgor CQkJaWYgKCFsaXN0X21lbWJlcl9vaWQodHhuZGF0YS0+ZGVsZXRlZF9yZWxpZHMsIHJlbGlkKSkK KwkJCQlyZXR1cm47CisKKwkJCXR4bmRhdGEtPmRlbGV0ZWRfcmVsaWRzID0gbGlzdF9kZWxldGVf b2lkKHR4bmRhdGEtPmRlbGV0ZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJCSAgcmVsaWQpOworCQkJ YnJlYWs7CisKKwkJY2FzZSBEQ1RfVGFibGVBbHRlcjoKKworCQkJLyoKKwkJCSAqIEZvciB0YWJs ZSByZXdyaXRlIGRkbCwgd2UgZmlyc3Qgc2VuZCB0aGUgb3JpZ2luYWwgZGRsIG1lc3NhZ2UKKwkJ CSAqIHRvIHN1YnNjcmliZXIsIHRoZW4gY29udmVydCB0aGUgdXBjb21pbmcgcmV3cml0ZSBJTlNF UlQgdG8KKwkJCSAqIFVQREFURSBhbmQgc2VuZCB0aGVtIHRvIHN1YnNjcmliZXIgc28gdGhhdCB0 aGUgZGF0YSBiZXR3ZWVuCisJCQkgKiBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgY2FuIGFsd2F5 cyBiZSBjb25zaXN0ZW50LgorCQkJICoKKwkJCSAqIFdlIGRvIHRoaXMgd2F5IGJlY2F1c2Ugb2Yg dHdvIHJlYXNvbjoKKwkJCSAqCisJCQkgKiAoMSkgVGhlIGRhdGEgYmVmb3JlIHRoZSByZXdyaXRl IGRkbCBjb3VsZCBhbHJlYWR5IGJlIGRpZmZlcmVudAorCQkJICogYW1vbmcgcHVibGlzaGVyIGFu ZCBzdWJzY3JpYmVyLiBUbyBtYWtlIHN1cmUgdGhlIGV4dHJhIGRhdGEgaW4KKwkJCSAqIHN1YnNj cmliZXIgd2hpY2ggZG9lc24ndCBleGlzdCBpbiBwdWJsaXNoZXIgYWxzbyBnZXQgcmV3cml0dGVu LAorCQkJICogd2UgbmVlZCB0byBsZXQgdGhlIHN1YnNjcmliZXIgZXhlY3V0ZSB0aGUgb3JpZ2lu YWwgcmV3cml0ZSBkZGwKKwkJCSAqIHRvIHJld3JpdGUgYWxsIHRoZSBkYXRhIGF0IGZpcnN0Lgor CQkJICoKKwkJCSAqICgyKSB0aGUgZGF0YSBhZnRlciBleGVjdXRpbmcgcmV3cml0ZSBkZGwgY291 bGQgYmUgZGlmZmVyZW50CisJCQkgKiBhbW9uZyBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIoZHVl IHRvIGRpZmZlcmVudAorCQkJICogZnVuY3Rpb25zL29wZXJhdG9ycyB1c2VkIGR1cmluZyByZXdy aXRlKSwgc28gd2UgbmVlZCB0bworCQkJICogcmVwbGljYXRlIHRoZSByZXdyaXRlIFVQREFURXMg dG8ga2VlcCB0aGUgZGF0YSBjb25zaXN0ZW50LgorCQkJICoKKwkJCSAqIFRPIElNUFJPVkU6IFdl IGNvdWxkIGltcHJvdmUgdGhpcyBieSBsZXR0aW5nIHRoZSBzdWJzY3JpYmVyCisJCQkgKiBvbmx5 IHJld3JpdGUgdGhlIGV4dHJhIGRhdGEgaW5zdGVhZCBvZiBkb2luZyBmdWxseSByZXdyaXRlIGFu ZAorCQkJICogdXNlIHRoZSB1cGNvbWluZyByZXdyaXRlIFVQREFURXMgdG8gcmV3cml0ZSB0aGUg cmVzdCBkYXRhLgorCQkJICogQmVzaWRlcywgd2UgbWF5IG5vdCBuZWVkIHRvIHNlbmQgcmV3cml0 ZSBjaGFuZ2VzIGZvciBhbGwgdHlwZQorCQkJICogb2YgcmV3cml0ZSBkZGwsIGZvciBleGFtcGxl LCBpdCBzZWVtcyBmaW5lIHRvIHNraXAgc2VuZGluZworCQkJICogcmV3cml0ZSBjaGFuZ2VzIGZv ciBBTFRFUiBUQUJMRSBTRVQgTE9HR0VEIGFzIHRoZSBkYXRhIGluIHRoZQorCQkJICogdGFibGUg ZG9lc24ndCBhY3R1YWxseSBiZSBjaGFuZ2VkLgorCQkJICovCisJCQlicmVhazsKKworCQljYXNl IERDVF9TaW1wbGVDbWQ6CisJCQkvKiBkbyBub3RoaW5nICovCisJCQlicmVhazsKKworCQlkZWZh dWx0OgorCQkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIHR5cGUgJWQiLCBjbWR0eXBlKTsKKwkJ CWJyZWFrOworCX0KKworCS8qIFNlbmQgQkVHSU4gaWYgd2UgaGF2ZW4ndCB5ZXQgKi8KKwlpZiAo dHhuZGF0YSAmJiAhdHhuZGF0YS0+c2VudF9iZWdpbl90eG4pCisJCXBnb3V0cHV0X3NlbmRfYmVn aW4oY3R4LCB0eG4pOworCisJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7CisJ bG9naWNhbHJlcF93cml0ZV9kZGwoY3R4LT5vdXQsIG1lc3NhZ2VfbHNuLCBwcmVmaXgsIHN6LCBt ZXNzYWdlKTsKKwlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOworfQorCiAvKgogICogUmV0 dXJuIHRydWUgaWYgdGhlIGRhdGEgaXMgYXNzb2NpYXRlZCB3aXRoIGFuIG9yaWdpbiBhbmQgdGhl IHVzZXIgaGFzCiAgKiByZXF1ZXN0ZWQgdGhlIGNoYW5nZXMgdGhhdCBkb24ndCBoYXZlIGFuIG9y aWdpbiwgZmFsc2Ugb3RoZXJ3aXNlLgpAQCAtMTgxMyw2ICsyMDE4LDcgQEAgcGdvdXRwdXRfc3Ry ZWFtX2Fib3J0KHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJT3V0cHV0UGx1 Z2luV3JpdGUoY3R4LCB0cnVlKTsKIAogCWNsZWFudXBfcmVsX3N5bmNfY2FjaGUodG9wdHhuLT54 aWQsIGZhbHNlKTsKKwljbGVhbl90eG5fZGF0YSh0eG4pOwogfQogCiAvKgpAQCAtMTgzOCw2ICsy MDQ0LDcgQEAgcGdvdXRwdXRfc3RyZWFtX2NvbW1pdChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LAogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiAKIAljbGVhbnVwX3Jl bF9zeW5jX2NhY2hlKHR4bi0+eGlkLCB0cnVlKTsKKwljbGVhbl90eG5fZGF0YSh0eG4pOwogfQog CiAvKgpAQCAtMTg1Niw2ICsyMDYzLDggQEAgcGdvdXRwdXRfc3RyZWFtX3ByZXBhcmVfdHhuKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4 LCB0cnVlKTsKIAlsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9wcmVwYXJlKGN0eC0+b3V0LCB0eG4s IHByZXBhcmVfbHNuKTsKIAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOworCisJY2xlYW5f dHhuX2RhdGEodHhuKTsKIH0KIAogLyoKQEAgLTE5NDEsNiArMjE1MCwyNyBAQCBzZXRfc2NoZW1h X3NlbnRfaW5fc3RyZWFtZWRfdHhuKFJlbGF0aW9uU3luY0VudHJ5ICplbnRyeSwgVHJhbnNhY3Rp b25JZCB4aWQpCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiB9CiAKKy8qIFJlbG9h ZCBwdWJsaWNhdGlvbnMgaWYgbmVlZGVkLiAqLworc3RhdGljIHZvaWQKK3JlbG9hZF9wdWJsaWNh dGlvbnMoUEdPdXRwdXREYXRhICpkYXRhKQoreworCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCisJ aWYgKCFwdWJsaWNhdGlvbnNfdmFsaWQpCisJeworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oQ2FjaGVNZW1vcnlDb250ZXh0KTsKKwkJaWYgKGRhdGEtPnB1YmxpY2F0aW9ucykKKwkJ eworCQkJbGlzdF9mcmVlX2RlZXAoZGF0YS0+cHVibGljYXRpb25zKTsKKwkJCWRhdGEtPnB1Ymxp Y2F0aW9ucyA9IE5JTDsKKwkJfQorCQlkYXRhLT5wdWJsaWNhdGlvbnMgPSBMb2FkUHVibGljYXRp b25zKGRhdGEtPnB1YmxpY2F0aW9uX25hbWVzKTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGN0eCk7CisJCXB1YmxpY2F0aW9uc192YWxpZCA9IHRydWU7CisJfQorfQorCisKIC8qCiAgKiBG aW5kIG9yIGNyZWF0ZSBlbnRyeSBpbiB0aGUgcmVsYXRpb24gc2NoZW1hIGNhY2hlLgogICoKQEAg LTE5NTUsNyArMjE4NSw2IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEs IFJlbGF0aW9uIHJlbGF0aW9uKQogewogCVJlbGF0aW9uU3luY0VudHJ5ICplbnRyeTsKIAlib29s CQlmb3VuZDsKLQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKIAlPaWQJCQlyZWxpZCA9IFJlbGF0aW9u R2V0UmVsaWQocmVsYXRpb24pOwogCiAJQXNzZXJ0KFJlbGF0aW9uU3luY0NhY2hlICE9IE5VTEwp OwpAQCAtMTk3Myw3ICsyMjAyLDggQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAq ZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCWVudHJ5LT5zY2hlbWFfc2VudCA9IGZhbHNlOwog CQllbnRyeS0+c3RyZWFtZWRfdHhucyA9IE5JTDsKIAkJZW50cnktPnB1YmFjdGlvbnMucHViaW5z ZXJ0ID0gZW50cnktPnB1YmFjdGlvbnMucHVidXBkYXRlID0KLQkJCWVudHJ5LT5wdWJhY3Rpb25z LnB1YmRlbGV0ZSA9IGVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID0gZmFsc2U7CisJCQll bnRyeS0+cHViYWN0aW9ucy5wdWJkZWxldGUgPSBlbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0 ZSA9CisJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUgPSBmYWxzZTsKIAkJZW50cnkt Pm5ld19zbG90ID0gTlVMTDsKIAkJZW50cnktPm9sZF9zbG90ID0gTlVMTDsKIAkJbWVtc2V0KGVu dHJ5LT5leHByc3RhdGUsIDAsIHNpemVvZihlbnRyeS0+ZXhwcnN0YXRlKSk7CkBAIC0yMDAyLDE5 ICsyMjMyLDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRp b24gcmVsYXRpb24pCiAJCWNoYXIJCXJlbGtpbmQgPSBnZXRfcmVsX3JlbGtpbmQocmVsaWQpOwog CQlMaXN0CSAgICpyZWxfcHVibGljYXRpb25zID0gTklMOwogCi0JCS8qIFJlbG9hZCBwdWJsaWNh dGlvbnMgaWYgbmVlZGVkIGJlZm9yZSB1c2UuICovCi0JCWlmICghcHVibGljYXRpb25zX3ZhbGlk KQotCQl7Ci0JCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQ2FjaGVNZW1vcnlDb250 ZXh0KTsKLQkJCWlmIChkYXRhLT5wdWJsaWNhdGlvbnMpCi0JCQl7Ci0JCQkJbGlzdF9mcmVlX2Rl ZXAoZGF0YS0+cHVibGljYXRpb25zKTsKLQkJCQlkYXRhLT5wdWJsaWNhdGlvbnMgPSBOSUw7Ci0J CQl9Ci0JCQlkYXRhLT5wdWJsaWNhdGlvbnMgPSBMb2FkUHVibGljYXRpb25zKGRhdGEtPnB1Ymxp Y2F0aW9uX25hbWVzKTsKLQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwotCQkJcHVi bGljYXRpb25zX3ZhbGlkID0gdHJ1ZTsKLQkJfQorCQlyZWxvYWRfcHVibGljYXRpb25zKGRhdGEp OwogCiAJCS8qCiAJCSAqIFJlc2V0IHNjaGVtYV9zZW50IHN0YXR1cyBhcyB0aGUgcmVsYXRpb24g ZGVmaW5pdGlvbiBtYXkgaGF2ZQpAQCAtMjAzMSw2ICsyMjQ5LDcgQEAgZ2V0X3JlbF9zeW5jX2Vu dHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCWVudHJ5LT5wdWJh Y3Rpb25zLnB1YnVwZGF0ZSA9IGZhbHNlOwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZWxldGUg PSBmYWxzZTsKIAkJZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPSBmYWxzZTsKKwkJZW50 cnktPnB1YmFjdGlvbnMucHViZGRsX3RhYmxlID0gZmFsc2U7CiAKIAkJLyoKIAkJICogVHVwbGUg c2xvdHMgY2xlYW51cHMuIChXaWxsIGJlIHJlYnVpbHQgbGF0ZXIgaWYgbmVlZGVkKS4KQEAgLTIx NDQsNiArMjM2Myw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJl bGF0aW9uIHJlbGF0aW9uKQogCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnVwZGF0ZSB8PSBwdWIt PnB1YmFjdGlvbnMucHVidXBkYXRlOwogCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSB8 PSBwdWItPnB1YmFjdGlvbnMucHViZGVsZXRlOwogCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnRy dW5jYXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZTsKKwkJCQllbnRyeS0+cHViYWN0 aW9ucy5wdWJkZGxfdGFibGUgfD0gcHViLT5wdWJhY3Rpb25zLnB1YmRkbF90YWJsZTsKIAogCQkJ CS8qCiAJCQkJICogV2Ugd2FudCB0byBwdWJsaXNoIHRoZSBjaGFuZ2VzIGFzIHRoZSB0b3AtbW9z dCBhbmNlc3RvcgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9jbWR0YWcuYyBiL3NyYy9i YWNrZW5kL3Rjb3AvY21kdGFnLmMKaW5kZXggNGJkNzEzYTBiNC4uY2UwOWM1ZjIzMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9jbWR0YWcuYworKysgYi9zcmMvYmFja2VuZC90Y29wL2Nt ZHRhZy5jCkBAIC0yNiwxMCArMjYsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29tbWFuZFRhZ0JlaGF2 aW9yCiAJY29uc3QgYm9vbAl0YWJsZV9yZXdyaXRlX29rOwogCWNvbnN0IGJvb2wJZGlzcGxheV9y b3djb3VudDsJLyogc2hvdWxkIHRoZSBudW1iZXIgb2Ygcm93cyBhZmZlY3RlZCBiZQogCQkJCQkJ CQkJICogc2hvd24gaW4gdGhlIGNvbW1hbmQgY29tcGxldGlvbiBzdHJpbmcgKi8KKwljb25zdCBi b29sCWRkbF9yZXBsaWNhdGlvbl9vazsKIH0gQ29tbWFuZFRhZ0JlaGF2aW9yOwogCi0jZGVmaW5l IFBHX0NNRFRBRyh0YWcsIG5hbWUsIGV2dHJnb2ssIHJ3cm9rLCByb3djbnQpIFwKLQl7IG5hbWUs ICh1aW50OCkgKHNpemVvZihuYW1lKSAtIDEpLCBldnRyZ29rLCByd3Jvaywgcm93Y250IH0sCisj ZGVmaW5lIFBHX0NNRFRBRyh0YWcsIG5hbWUsIGV2dHJnb2ssIHJ3cm9rLCByb3djbnQsIGRkbHJl cGxvaykgXAorCXsgbmFtZSwgKHVpbnQ4KSAoc2l6ZW9mKG5hbWUpIC0gMSksIGV2dHJnb2ssIHJ3 cm9rLCByb3djbnQsIGRkbHJlcGxvayB9LAogCiBzdGF0aWMgY29uc3QgQ29tbWFuZFRhZ0JlaGF2 aW9yIHRhZ19iZWhhdmlvcltDT01NQU5EX1RBR19ORVhUVEFHXSA9IHsKICNpbmNsdWRlICJ0Y29w L2NtZHRhZ2xpc3QuaCIKQEAgLTU3LDYgKzU4LDIxIEBAIEdldENvbW1hbmRUYWdOYW1lQW5kTGVu KENvbW1hbmRUYWcgY29tbWFuZFRhZywgU2l6ZSAqbGVuKQogCXJldHVybiB0YWdfYmVoYXZpb3Jb Y29tbWFuZFRhZ10ubmFtZTsKIH0KIAorQ29tbWFuZFRhZyAqCitHZXRDb21tYW5kVGFnc0ZvckRE TFJlcGwoaW50ICpuY29tbWFuZHMpCit7CisJQ29tbWFuZFRhZyAqZGRscmVwbF9jb21tYW5kcyA9 IHBhbGxvYzAoQ09NTUFORF9UQUdfTkVYVFRBRyAqIHNpemVvZihDb21tYW5kVGFnKSk7CisJKm5j b21tYW5kcyA9IDA7CisKKwlmb3IoaW50IGkgPSAwOyBpIDwgQ09NTUFORF9UQUdfTkVYVFRBRzsg aSsrKQorCXsKKwkJaWYgKHRhZ19iZWhhdmlvcltpXS5kZGxfcmVwbGljYXRpb25fb2spCisJCQlk ZGxyZXBsX2NvbW1hbmRzWygqbmNvbW1hbmRzKSsrXSA9IChDb21tYW5kVGFnKSBpOworCX0KKwor CXJldHVybiBkZGxyZXBsX2NvbW1hbmRzOworfQorCiBib29sCiBjb21tYW5kX3RhZ19kaXNwbGF5 X3Jvd2NvdW50KENvbW1hbmRUYWcgY29tbWFuZFRhZykKIHsKQEAgLTc1LDYgKzkxLDEyIEBAIGNv bW1hbmRfdGFnX3RhYmxlX3Jld3JpdGVfb2soQ29tbWFuZFRhZyBjb21tYW5kVGFnKQogCXJldHVy biB0YWdfYmVoYXZpb3JbY29tbWFuZFRhZ10udGFibGVfcmV3cml0ZV9vazsKIH0KIAorYm9vbAor Y29tbWFuZF90YWdfZGRsX3JlcGxpY2F0aW9uX29rKENvbW1hbmRUYWcgY29tbWFuZFRhZykKK3sK KwlyZXR1cm4gdGFnX2JlaGF2aW9yW2NvbW1hbmRUYWddLmRkbF9yZXBsaWNhdGlvbl9vazsKK30K KwogLyoKICAqIFNlYXJjaCBDb21tYW5kVGFnIGJ5IG5hbWUKICAqCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCmluZGV4 IDQ1MDFjYzMzN2MuLjU3OGEyMjlmZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRp bGl0eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCkBAIC0yMjY0LDYgKzIyNjQs OCBAQCBzdHJpbmdpZnlfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5cGUsIGJvb2wgaXNncmFudCkK IAkJCXJldHVybiAiUE9MSUNZIjsKIAkJY2FzZSBPQkpFQ1RfUFJPQ0VEVVJFOgogCQkJcmV0dXJu ICJQUk9DRURVUkUiOworCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTjoKKwkJCXJldHVybiAiUFVC TElDQVRJT04iOwogCQljYXNlIE9CSkVDVF9ST0xFOgogCQkJcmV0dXJuICJST0xFIjsKIAkJY2Fz ZSBPQkpFQ1RfUk9VVElORToKQEAgLTIyNzYsNiArMjI3OCw4IEBAIHN0cmluZ2lmeV9vYmp0eXBl KE9iamVjdFR5cGUgb2JqdHlwZSwgYm9vbCBpc2dyYW50KQogCQkJcmV0dXJuICJTRVFVRU5DRSI7 CiAJCWNhc2UgT0JKRUNUX1NUQVRJU1RJQ19FWFQ6CiAJCQlyZXR1cm4gIlNUQVRJU1RJQ1MiOwor CQljYXNlIE9CSkVDVF9TVUJTQ1JJUFRJT046CisJCQlyZXR1cm4gIlNVQlNDUklQVElPTiI7CiAJ CWNhc2UgT0JKRUNUX1RBQkxFOgogCQkJcmV0dXJuICJUQUJMRSI7CiAJCWNhc2UgT0JKRUNUX1RB QkxFU1BBQ0U6CkBAIC0yMzA0LDEwICsyMzA4LDggQEAgc3RyaW5naWZ5X29ianR5cGUoT2JqZWN0 VHlwZSBvYmp0eXBlLCBib29sIGlzZ3JhbnQpCiAJCWNhc2UgT0JKRUNUX0RFRkFDTDoKIAkJY2Fz ZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKLQkJ Y2FzZSBPQkpFQ1RfUFVCTElDQVRJT046CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVT UEFDRToKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fUkVMOgotCQljYXNlIE9CSkVDVF9TVUJT Q1JJUFRJT046CiAJCWNhc2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CiAJCWNhc2UgT0JKRUNUX1RS QU5TRk9STToKIAkJCWVsb2coRVJST1IsICJ1bnN1cHBvcnRlZCBvYmplY3QgdHlwZSAlZCIsIG9i anR5cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggNDAxNDBkZTk1OC4uOTE5 OGRhMmViMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC01NzIwLDYgKzU3MjAs NyBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJs aWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJCXB1YmRlc2MtPnB1YmFjdGlvbnMucHVidXBkYXRlIHw9 IHB1YmZvcm0tPnB1YnVwZGF0ZTsKIAkJcHViZGVzYy0+cHViYWN0aW9ucy5wdWJkZWxldGUgfD0g cHViZm9ybS0+cHViZGVsZXRlOwogCQlwdWJkZXNjLT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlIHw9 IHB1YmZvcm0tPnB1YnRydW5jYXRlOworCQlwdWJkZXNjLT5wdWJhY3Rpb25zLnB1YmRkbF90YWJs ZSB8PSBwdWJmb3JtLT5wdWJkZGxfdGFibGU7CiAKIAkJLyoKIAkJICogQ2hlY2sgaWYgYWxsIGNv bHVtbnMgcmVmZXJlbmNlZCBpbiB0aGUgZmlsdGVyIGV4cHJlc3Npb24gYXJlIHBhcnQKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jCmluZGV4IDZhYmJjZmY2ODMuLjUyNjk4NzQxOGMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNTEsNiAr NTEsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfbGFyZ2VvYmplY3RfZC5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfbGFyZ2VvYmplY3RfbWV0YWRhdGFfZC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfcHJvY19kLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmln Z2VyX2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGVfZC5oIgpAQCAtNDA2Myw2ICs0MDY0 LDcgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtUHVibGljYXRpb25z KQogCWludAkJCWlfcHVidXBkYXRlOwogCWludAkJCWlfcHViZGVsZXRlOwogCWludAkJCWlfcHVi dHJ1bmNhdGU7CisJaW50CQkJaV9wdWJkZGxfdGFibGU7CiAJaW50CQkJaV9wdWJ2aWFyb290Owog CWludAkJCWksCiAJCQkJbnR1cHM7CkBAIC00MDc4LDIzICs0MDgwLDI5IEBAIGdldFB1YmxpY2F0 aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykKIAlyZXNldFBRRXhwQnVm ZmVyKHF1ZXJ5KTsKIAogCS8qIEdldCB0aGUgcHVibGljYXRpb25zLiAqLwotCWlmIChmb3V0LT5y ZW1vdGVWZXJzaW9uID49IDEzMDAwMCkKKwlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNjAw MDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAiU0VMRUNUIHAudGFi bGVvaWQsIHAub2lkLCBwLnB1Ym5hbWUsICIKKwkJCQkJCQkgInAucHVib3duZXIsICIKKwkJCQkJ CQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRl LCBwLnB1YnRydW5jYXRlLCBwLnB1YmRkbF90YWJsZSwgcC5wdWJ2aWFyb290ICIKKwkJCQkJCQkg IkZST00gcGdfcHVibGljYXRpb24gcCIpOworCWVsc2UgaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24g Pj0gMTMwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVD VCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5wdWJuYW1lLCAiCiAJCQkJCQkJICJwLnB1Ym93bmVyLCAi Ci0JCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1 YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgcC5wdWJ2aWFyb290ICIKKwkJCQkJCQkgInAucHViYWxs dGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5j YXRlLCBmYWxzZSBhcyBwLnB1YmRkbF90YWJsZSwgcC5wdWJ2aWFyb290ICIKIAkJCQkJCQkgIkZS T00gcGdfcHVibGljYXRpb24gcCIpOwogCWVsc2UgaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0g MTEwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVDVCBw LnRhYmxlb2lkLCBwLm9pZCwgcC5wdWJuYW1lLCAiCiAJCQkJCQkJICJwLnB1Ym93bmVyLCAiCi0J CQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRl bGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgZmFsc2UgQVMgcHVidmlhcm9vdCAiCisJCQkJCQkJICJwLnB1 YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgcC5wdWJ0 cnVuY2F0ZSwgZmFsc2UgYXMgcC5wdWJkZGxfdGFibGUsIGZhbHNlIEFTIHB1YnZpYXJvb3QgIgog CQkJCQkJCSAiRlJPTSBwZ19wdWJsaWNhdGlvbiBwIik7CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5wdWJu YW1lLCAiCiAJCQkJCQkJICJwLnB1Ym93bmVyLCAiCi0JCQkJCQkJICJwLnB1YmFsbHRhYmxlcywg cC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgZmFsc2UgQVMgcHVidHJ1bmNh dGUsIGZhbHNlIEFTIHB1YnZpYXJvb3QgIgorCQkJCQkJCSAicC5wdWJhbGx0YWJsZXMsIHAucHVi aW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIGZhbHNlIEFTIHB1YnRydW5jYXRlLCBm YWxzZSBhcyBwLnB1YmRkbF90YWJsZSwgZmFsc2UgQVMgcHVidmlhcm9vdCAiCiAJCQkJCQkJICJG Uk9NIHBnX3B1YmxpY2F0aW9uIHAiKTsKIAogCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBx dWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKQEAgLTQxMTAsNiArNDExOCw3IEBAIGdldFB1 YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykKIAlpX3B1YnVw ZGF0ZSA9IFBRZm51bWJlcihyZXMsICJwdWJ1cGRhdGUiKTsKIAlpX3B1YmRlbGV0ZSA9IFBRZm51 bWJlcihyZXMsICJwdWJkZWxldGUiKTsKIAlpX3B1YnRydW5jYXRlID0gUFFmbnVtYmVyKHJlcywg InB1YnRydW5jYXRlIik7CisJaV9wdWJkZGxfdGFibGUgPSBQUWZudW1iZXIocmVzLCAicHViZGRs X3RhYmxlIik7CiAJaV9wdWJ2aWFyb290ID0gUFFmbnVtYmVyKHJlcywgInB1YnZpYXJvb3QiKTsK IAogCXB1YmluZm8gPSBwZ19tYWxsb2MobnR1cHMgKiBzaXplb2YoUHVibGljYXRpb25JbmZvKSk7 CkBAIC00MTMzLDYgKzQxNDIsOCBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCwgaW50 ICpudW1QdWJsaWNhdGlvbnMpCiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YmRl bGV0ZSksICJ0IikgPT0gMCk7CiAJCXB1YmluZm9baV0ucHVidHJ1bmNhdGUgPQogCQkJKHN0cmNt cChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJ0cnVuY2F0ZSksICJ0IikgPT0gMCk7CisJCXB1Ymlu Zm9baV0ucHViZGRsX3RhYmxlID0KKwkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHVi ZGRsX3RhYmxlKSwgInQiKSA9PSAwKTsKIAkJcHViaW5mb1tpXS5wdWJ2aWFyb290ID0KIAkJCShz dHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHVidmlhcm9vdCksICJ0IikgPT0gMCk7CiAKQEAg LTQyMTIsNyArNDIyMywxMCBAQCBkdW1wUHVibGljYXRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3Qg UHVibGljYXRpb25JbmZvICpwdWJpbmZvKQogCQlmaXJzdCA9IGZhbHNlOwogCX0KIAotCWFwcGVu ZFBRRXhwQnVmZmVyQ2hhcihxdWVyeSwgJ1wnJyk7CisJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICInIik7CisKKwlpZiAocHViaW5mby0+cHViZGRsX3RhYmxlKQorCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiwgZGRsID0gJ3RhYmxlJyIpOwogCiAJaWYgKHB1YmluZm8tPnB1YnZp YXJvb3QpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBwdWJsaXNoX3ZpYV9wYXJ0 aXRpb25fcm9vdCA9IHRydWUiKTsKQEAgLTc5NzYsNiArNzk5MCw1MCBAQCBnZXRUcmlnZ2VycyhB cmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCWRlc3Ry b3lQUUV4cEJ1ZmZlcih0YmxvaWRzKTsKIH0KIAorLyoKKyAqIGdldFB1YmxpY2F0aW9uRXZlbnRU cmlnZ2VycworICoJICBnZXQgdGhlIHB1YmxpY2F0aW9uIGV2ZW50IHRyaWdnZXJzIHRoYXQgc2hv dWxkIGJlIHNraXBwZWQKKyAqLworc3RhdGljIHZvaWQKK2dldFB1YmxpY2F0aW9uRXZlbnRUcmln Z2VycyhBcmNoaXZlICpmb3V0LCBTaW1wbGVTdHJpbmdMaXN0ICpza2lwVHJpZ2dlcnMpCit7CisJ UFFFeHBCdWZmZXIgcXVlcnk7CisJUEdyZXN1bHQgICAqcmVzOworCWludAkJCWk7CisJaW50CQkJ bnR1cHM7CisKKwlxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisKKwlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwKKwkJCQkJCSAiU0VMRUNUIG9pZCBGUk9NIHBnX3B1YmxpY2F0aW9uICIK KwkJCQkJCSAiV0hFUkUgcHViZGRsX3RhYmxlIik7CisKKwlyZXMgPSBFeGVjdXRlU3FsUXVlcnko Zm91dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CisJbnR1cHMgPSBQUW50dXBsZXMo cmVzKTsKKworCWZvciAoaSA9IDA7IGkgPCBudHVwczsgaSsrKQorCXsKKwkJY2hhciAqdHJpZ25h bWU7CisJCU9pZCBwdWJpZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgMCwgMCkpOworCisJCXRy aWduYW1lID0gcHNwcmludGYoUFVCX0VWRU5UX1RSSUdfUFJFRklYLCBQVUJfVFJJR19FVkVOVDEs IHB1YmlkKTsKKwkJc2ltcGxlX3N0cmluZ19saXN0X2FwcGVuZChza2lwVHJpZ2dlcnMsIHRyaWdu YW1lKTsKKworCQl0cmlnbmFtZSA9IHBzcHJpbnRmKFBVQl9FVkVOVF9UUklHX1BSRUZJWCwgUFVC X1RSSUdfRVZFTlQyLCBwdWJpZCk7CisJCXNpbXBsZV9zdHJpbmdfbGlzdF9hcHBlbmQoc2tpcFRy aWdnZXJzLCB0cmlnbmFtZSk7CisKKwkJdHJpZ25hbWUgPSBwc3ByaW50ZihQVUJfRVZFTlRfVFJJ R19QUkVGSVgsIFBVQl9UUklHX0VWRU5UMywgcHViaWQpOworCQlzaW1wbGVfc3RyaW5nX2xpc3Rf YXBwZW5kKHNraXBUcmlnZ2VycywgdHJpZ25hbWUpOworCisJCXRyaWduYW1lID0gcHNwcmludGYo UFVCX0VWRU5UX1RSSUdfUFJFRklYLCBQVUJfVFJJR19FVkVOVDQsIHB1YmlkKTsKKwkJc2ltcGxl X3N0cmluZ19saXN0X2FwcGVuZChza2lwVHJpZ2dlcnMsIHRyaWduYW1lKTsKKwl9CisKKwlQUWNs ZWFyKHJlcyk7CisKKwlkZXN0cm95UFFFeHBCdWZmZXIocXVlcnkpOworfQorCiAvKgogICogZ2V0 RXZlbnRUcmlnZ2VycwogICoJICBnZXQgaW5mb3JtYXRpb24gYWJvdXQgZXZlbnQgdHJpZ2dlcnMK QEAgLTc5OTYsNiArODA1NCw3IEBAIGdldEV2ZW50VHJpZ2dlcnMoQXJjaGl2ZSAqZm91dCwgaW50 ICpudW1FdmVudFRyaWdnZXJzKQogCQkJCWlfZXZ0Zm5hbWUsCiAJCQkJaV9ldnRlbmFibGVkOwog CWludAkJCW50dXBzOworCVNpbXBsZVN0cmluZ0xpc3Qgc2tpcFRyaWdnZXJzID0ge05VTEwsIE5V TEx9OwogCiAJLyogQmVmb3JlIDkuMywgdGhlcmUgYXJlIG5vIGV2ZW50IHRyaWdnZXJzICovCiAJ aWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPCA5MDMwMCkKQEAgLTgwMDQsNiArODA2Myw4IEBAIGdl dEV2ZW50VHJpZ2dlcnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1FdmVudFRyaWdnZXJzKQogCQly ZXR1cm4gTlVMTDsKIAl9CiAKKwlnZXRQdWJsaWNhdGlvbkV2ZW50VHJpZ2dlcnMoZm91dCwgJnNr aXBUcmlnZ2Vycyk7CisKIAlxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CiAKIAlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwKQEAgLTgwNDgsOSArODEwOSwxNCBAQCBnZXRFdmVudFRyaWdn ZXJzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtRXZlbnRUcmlnZ2VycykKIAkJZXZ0aW5mb1tpXS5l dnRlbmFibGVkID0gKihQUWdldHZhbHVlKHJlcywgaSwgaV9ldnRlbmFibGVkKSk7CiAKIAkJLyog RGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCi0JCXNlbGVjdER1bXBhYmxlT2Jq ZWN0KCYoZXZ0aW5mb1tpXS5kb2JqKSwgZm91dCk7CisJCWlmIChzaW1wbGVfc3RyaW5nX2xpc3Rf bWVtYmVyKCZza2lwVHJpZ2dlcnMsIGV2dGluZm9baV0uZXZ0bmFtZSkpCisJCQlldnRpbmZvW2ld LmRvYmouZHVtcD0gRFVNUF9DT01QT05FTlRfTk9ORTsKKwkJZWxzZQorCQkJc2VsZWN0RHVtcGFi bGVPYmplY3QoJihldnRpbmZvW2ldLmRvYmopLCBmb3V0KTsKIAl9CiAKKwlzaW1wbGVfc3RyaW5n X2xpc3RfZGVzdHJveSgmc2tpcFRyaWdnZXJzKTsKKwogCVBRY2xlYXIocmVzKTsKIAogCWRlc3Ry b3lQUUV4cEJ1ZmZlcihxdWVyeSk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCBlZDZjZTQxYWQ3Li5iZDVmOGZi NjY5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmgKQEAgLTYyMCw2ICs2MjAsNyBAQCB0eXBlZGVmIHN0cnVjdCBfUHVi bGljYXRpb25JbmZvCiAJYm9vbAkJcHVidXBkYXRlOwogCWJvb2wJCXB1YmRlbGV0ZTsKIAlib29s CQlwdWJ0cnVuY2F0ZTsKKwlib29sCQlwdWJkZGxfdGFibGU7CiAJYm9vbAkJcHVidmlhcm9vdDsK IH0gUHVibGljYXRpb25JbmZvOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJf cGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IDQyMjE1 ZjgyZjcuLjMxN2FiOTMzYjEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19k dW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0yODA0LDcg KzI4MDQsNyBAQCBteSAldGVzdHMgPSAoCiAJCWNyZWF0ZV9vcmRlciA9PiA1MCwKIAkJY3JlYXRl X3NxbCAgID0+ICdDUkVBVEUgUFVCTElDQVRJT04gcHViMgogCQkJCQkJIEZPUiBBTEwgVEFCTEVT Ci0JCQkJCQkgV0lUSCAocHVibGlzaCA9IFwnXCcpOycsCisJCQkJCQkgV0lUSCAocHVibGlzaCA9 IFwnXCcsIGRkbCA9IFwnXCcpOycsCiAJCXJlZ2V4cCA9PiBxci9eCiAJCQlcUUNSRUFURSBQVUJM SUNBVElPTiBwdWIyIEZPUiBBTEwgVEFCTEVTIFdJVEggKHB1Ymxpc2ggPSAnJyk7XEUKIAkJCS94 bSwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9ybWdyZGVzYy5jIGIvc3JjL2Jpbi9w Z193YWxkdW1wL3JtZ3JkZXNjLmMKaW5kZXggNmI4YzE3YmI0Yy4uZGFmMTczMDI1MiAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3JtZ3JkZXNjLmMKKysrIGIvc3JjL2Jpbi9wZ193YWxk dW1wL3JtZ3JkZXNjLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9kYmNv bW1hbmRzX3hsb2cuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdl LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbWVzc2FnZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL29yaWdpbi5oIgogI2luY2x1ZGUgInJtZ3JkZXNjLmgiCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDk5ZTI4ZjYw N2UuLmE0MTUwMGRlZWQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBi L3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC02MTgzLDcgKzYxODMsNyBAQCBsaXN0UHVibGlj YXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKIAlQR3Jl c3VsdCAgICpyZXM7CiAJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKLQlzdGF0aWMg Y29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisJc3RhdGljIGNvbnN0IGJvb2wgdHJh bnNsYXRlX2NvbHVtbnNbXSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CiAKIAlpZiAocHNldC5zdmVyc2lvbiA8 IDEwMDAwMCkKIAl7CkBAIC02MjAwLDEzICs2MjAwLDE4IEBAIGxpc3RQdWJsaWNhdGlvbnMoY29u c3QgY2hhciAqcGF0dGVybikKIAlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkgICJTRUxF Q1QgcHVibmFtZSBBUyBcIiVzXCIsXG4iCiAJCQkJCSAgIiAgcGdfY2F0YWxvZy5wZ19nZXRfdXNl cmJ5aWQocHVib3duZXIpIEFTIFwiJXNcIixcbiIKLQkJCQkJICAiICBwdWJhbGx0YWJsZXMgQVMg XCIlc1wiLFxuIgotCQkJCQkgICIgIHB1Ymluc2VydCBBUyBcIiVzXCIsXG4iCi0JCQkJCSAgIiAg cHVidXBkYXRlIEFTIFwiJXNcIixcbiIKLQkJCQkJICAiICBwdWJkZWxldGUgQVMgXCIlc1wiIiwK KwkJCQkJICAiICBwdWJhbGx0YWJsZXMgQVMgXCIlc1wiIiwKIAkJCQkJICBnZXR0ZXh0X25vb3Ao Ik5hbWUiKSwKIAkJCQkJICBnZXR0ZXh0X25vb3AoIk93bmVyIiksCi0JCQkJCSAgZ2V0dGV4dF9u b29wKCJBbGwgdGFibGVzIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJBbGwgdGFibGVzIikpOwor CWlmIChwc2V0LnN2ZXJzaW9uID49IDE2MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwK KwkJCQkJCSAgIixcbiAgcHViZGRsX3RhYmxlIEFTIFwiJXNcIiIsCisJCQkJCQkgIGdldHRleHRf bm9vcCgiVGFibGUgRERMcyIpKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgICIs XG4gIHB1Ymluc2VydCBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgcHVidXBkYXRlIEFTIFwiJXNc IixcbiIKKwkJCQkJICAiICBwdWJkZWxldGUgQVMgXCIlc1wiIiwKIAkJCQkJICBnZXR0ZXh0X25v b3AoIkluc2VydHMiKSwKIAkJCQkJICBnZXR0ZXh0X25vb3AoIlVwZGF0ZXMiKSwKIAkJCQkJICBn ZXR0ZXh0X25vb3AoIkRlbGV0ZXMiKSk7CkBAIC02MjE4LDcgKzYyMjMsNiBAQCBsaXN0UHVibGlj YXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJ CQkJCQkgICIsXG4gIHB1YnZpYXJvb3QgQVMgXCIlc1wiIiwKIAkJCQkJCSAgZ2V0dGV4dF9ub29w KCJWaWEgcm9vdCIpKTsKLQogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCiAJCQkJCQkgIlxu RlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uXG4iKTsKIApAQCAtNjMwOCw2ICs2MzEyLDcg QEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAlQR3Jlc3VsdCAg ICpyZXM7CiAJYm9vbAkJaGFzX3B1YnRydW5jYXRlOwogCWJvb2wJCWhhc19wdWJ2aWFyb290Owor CWJvb2wJCWhhc19wdWJkZGw7CiAKIAlQUUV4cEJ1ZmZlckRhdGEgdGl0bGU7CiAJcHJpbnRUYWJs ZUNvbnRlbnQgY29udDsKQEAgLTYzMjQsMTMgKzYzMjksMTkgQEAgZGVzY3JpYmVQdWJsaWNhdGlv bnMoY29uc3QgY2hhciAqcGF0dGVybikKIAogCWhhc19wdWJ0cnVuY2F0ZSA9IChwc2V0LnN2ZXJz aW9uID49IDExMDAwMCk7CiAJaGFzX3B1YnZpYXJvb3QgPSAocHNldC5zdmVyc2lvbiA+PSAxMzAw MDApOworCWhhc19wdWJkZGwgPSAgKHBzZXQuc3ZlcnNpb24gPj0gMTYwMDAwKTsKIAogCWluaXRQ UUV4cEJ1ZmZlcigmYnVmKTsKIAogCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCSAgIlNF TEVDVCBvaWQsIHB1Ym5hbWUsXG4iCiAJCQkJCSAgIiAgcGdfY2F0YWxvZy5wZ19nZXRfdXNlcmJ5 aWQocHVib3duZXIpIEFTIG93bmVyLFxuIgotCQkJCQkgICIgIHB1YmFsbHRhYmxlcywgcHViaW5z ZXJ0LCBwdWJ1cGRhdGUsIHB1YmRlbGV0ZSIpOworCQkJCQkgICIgIHB1YmFsbHRhYmxlcyIpOwor CWlmIChoYXNfcHViZGRsKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAorCQkJCQkJCSAi LCBwdWJkZGxfdGFibGUiKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAorCQkJCQkJICIs ICBwdWJpbnNlcnQsIHB1YnVwZGF0ZSwgcHViZGVsZXRlIik7CiAJaWYgKGhhc19wdWJ0cnVuY2F0 ZSkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwKIAkJCQkJCQkgIiwgcHVidHJ1bmNhdGUi KTsKQEAgLTYzODgsNiArNjM5OSw4IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIg KnBhdHRlcm4pCiAJCQluY29scysrOwogCQlpZiAoaGFzX3B1YnZpYXJvb3QpCiAJCQluY29scysr OworCQlpZiAoaGFzX3B1YmRkbCkKKwkJCW5jb2xzKys7CiAKIAkJaW5pdFBRRXhwQnVmZmVyKCZ0 aXRsZSk7CiAJCXByaW50ZlBRRXhwQnVmZmVyKCZ0aXRsZSwgXygiUHVibGljYXRpb24gJXMiKSwg cHVibmFtZSk7CkBAIC02Mzk1LDYgKzY0MDgsOCBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25z dCBjaGFyICpwYXR0ZXJuKQogCiAJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRf bm9vcCgiT3duZXIiKSwgdHJ1ZSwgYWxpZ24pOwogCQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250 LCBnZXR0ZXh0X25vb3AoIkFsbCB0YWJsZXMiKSwgdHJ1ZSwgYWxpZ24pOworCQlpZiAoaGFzX3B1 YmRkbCkKKwkJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiVGFibGUg RERMcyIpLCB0cnVlLCBhbGlnbik7CiAJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRl eHRfbm9vcCgiSW5zZXJ0cyIpLCB0cnVlLCBhbGlnbik7CiAJCXByaW50VGFibGVBZGRIZWFkZXIo JmNvbnQsIGdldHRleHRfbm9vcCgiVXBkYXRlcyIpLCB0cnVlLCBhbGlnbik7CiAJCXByaW50VGFi bGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiRGVsZXRlcyIpLCB0cnVlLCBhbGlnbik7 CkBAIC02NDEyLDYgKzY0MjcsOCBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpw YXR0ZXJuKQogCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA3 KSwgZmFsc2UsIGZhbHNlKTsKIAkJaWYgKGhhc19wdWJ2aWFyb290KQogCQkJcHJpbnRUYWJsZUFk ZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA4KSwgZmFsc2UsIGZhbHNlKTsKKwkJaWYg KGhhc19wdWJkZGwpCisJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMs IGksIDkpLCBmYWxzZSwgZmFsc2UpOwogCiAJCWlmICghcHViYWxsdGFibGVzKQogCQl7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3QuaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9ybWdybGlzdC5oCmluZGV4IDQ2M2JjYjY3YzUuLmFiY2JlOTc1OTMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9ybWdybGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9ybWdy bGlzdC5oCkBAIC00NywzICs0Nyw0IEBAIFBHX1JNR1IoUk1fQ09NTUlUX1RTX0lELCAiQ29tbWl0 VHMiLCBjb21taXRfdHNfcmVkbywgY29tbWl0X3RzX2Rlc2MsIGNvbW1pdF90c19pCiBQR19STUdS KFJNX1JFUExPUklHSU5fSUQsICJSZXBsaWNhdGlvbk9yaWdpbiIsIHJlcGxvcmlnaW5fcmVkbywg cmVwbG9yaWdpbl9kZXNjLCByZXBsb3JpZ2luX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMKQogUEdfUk1HUihSTV9HRU5FUklDX0lELCAiR2VuZXJpYyIsIGdlbmVyaWNfcmVkbywgZ2Vu ZXJpY19kZXNjLCBnZW5lcmljX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBnZW5lcmljX21hc2ssIE5V TEwpCiBQR19STUdSKFJNX0xPR0lDQUxNU0dfSUQsICJMb2dpY2FsTWVzc2FnZSIsIGxvZ2ljYWxt c2dfcmVkbywgbG9naWNhbG1zZ19kZXNjLCBsb2dpY2FsbXNnX2lkZW50aWZ5LCBOVUxMLCBOVUxM LCBOVUxMLCBsb2dpY2FsbXNnX2RlY29kZSkKK1BHX1JNR1IoUk1fTE9HSUNBTERETE1TR19JRCwg IkxvZ2ljYWxERExNZXNzYWdlIiwgbG9naWNhbGRkbG1zZ19yZWRvLCBsb2dpY2FsZGRsbXNnX2Rl c2MsIGxvZ2ljYWxkZGxtc2dfaWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIGxvZ2ljYWxkZGxf ZGVjb2RlKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggNzQyZGY0NzM4MS4uMzcyNDE0YWYw ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMTE1Niw2ICsxMTE1NiwxNCBAQAogICBw cm9uYW1lID0+ICdwZ19sb2dpY2FsX2VtaXRfbWVzc2FnZScsIHByb3ZvbGF0aWxlID0+ICd2Jywg cHJvcGFyYWxsZWwgPT4gJ3UnLAogICBwcm9yZXR0eXBlID0+ICdwZ19sc24nLCBwcm9hcmd0eXBl cyA9PiAnYm9vbCB0ZXh0IGJ5dGVhJywKICAgcHJvc3JjID0+ICdwZ19sb2dpY2FsX2VtaXRfbWVz c2FnZV9ieXRlYScgfSwKK3sgb2lkID0+ICczODEzJywgZGVzY3IgPT4gJ2VtaXQgYSB0ZXh0dWFs IGxvZ2ljYWwgZGVjb2RpbmcgbWVzc2FnZScsCisgIHByb25hbWUgPT4gJ3BnX2xvZ2ljYWxfZW1p dF9kZGxfbWVzc2FnZScsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3UnLAor ICBwcm9yZXR0eXBlID0+ICdwZ19sc24nLCBwcm9hcmd0eXBlcyA9PiAnYm9vbCB0ZXh0IHRleHQn LAorICBwcm9zcmMgPT4gJ3BnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZV90ZXh0JyB9LAoreyBv aWQgPT4gJzM4MTQnLCBkZXNjciA9PiAnZW1pdCBhIGJpbmFyeSBsb2dpY2FsIGRlY29kaW5nIG1l c3NhZ2UnLAorICBwcm9uYW1lID0+ICdwZ19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2UnLCBwcm92 b2xhdGlsZSA9PiAndicsIHByb3BhcmFsbGVsID0+ICd1JywKKyAgcHJvcmV0dHlwZSA9PiAncGdf bHNuJywgcHJvYXJndHlwZXMgPT4gJ3RleHQgcmVnY2xhc3MgaW50NCB0ZXh0JywKKyAgcHJvc3Jj ID0+ICdwZ19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2VfYnl0ZWEnIH0sCiAKICMgZXZlbnQgdHJp Z2dlcnMKIHsgb2lkID0+ICczNTY2JywgZGVzY3IgPT4gJ2xpc3Qgb2JqZWN0cyBkcm9wcGVkIGJ5 IHRoZSBjdXJyZW50IGNvbW1hbmQnLApAQCAtMTIwNTksNSArMTIwNjcsMTcgQEAKIHsgb2lkID0+ ICc0NjQzJywgZGVzY3IgPT4gJ2V4cGFuZCBKU09OIGZvcm1hdCBEREwgdG8gYSBwbGFpbiB0ZXh0 IERETCBjb21tYW5kJywKICAgcHJvbmFtZSA9PiAnZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQn LCBwcm9yZXR0eXBlID0+ICd0ZXh0JywKICAgcHJvYXJndHlwZXMgPT4gJ3RleHQnLCBwcm9zcmMg PT4gJ2RkbF9kZXBhcnNlX2V4cGFuZF9jb21tYW5kJyB9LAoreyBvaWQgPT4gJzQ2NDQnLCBkZXNj ciA9PiAndHJpZ2dlciBmb3IgZGRsIGNvbW1hbmQgZGVwYXJzZSBlbmQnLAorICBwcm9uYW1lID0+ ICdwdWJsaWNhdGlvbl9kZXBhcnNlX2RkbF9jb21tYW5kX2VuZCcsIHByb3JldHR5cGUgPT4gJ2V2 ZW50X3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdwdWJsaWNhdGlv bl9kZXBhcnNlX2RkbF9jb21tYW5kX2VuZCcgfSwKK3sgb2lkID0+ICc0NjQ1JywgZGVzY3IgPT4g J3RyaWdnZXIgZm9yIGRkbCBjb21tYW5kIGRlcGFyc2Ugc3RhcnQnLAorICBwcm9uYW1lID0+ICdw dWJsaWNhdGlvbl9kZXBhcnNlX2RkbF9jb21tYW5kX3N0YXJ0JywgcHJvcmV0dHlwZSA9PiAnZXZl bnRfdHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ3B1YmxpY2F0aW9u X2RlcGFyc2VfZGRsX2NvbW1hbmRfc3RhcnQnIH0sCit7IG9pZCA9PiAnNDY0NicsIGRlc2NyID0+ ICd0cmlnZ2VyIGZvciBkZGwgY29tbWFuZCBkZXBhcnNlIHRhYmxlIHJld3JpdGUnLAorICBwcm9u YW1lID0+ICdwdWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX3Jld3JpdGUnLCBwcm9yZXR0eXBlID0+ ICdldmVudF90cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAncHVibGlj YXRpb25fZGVwYXJzZV90YWJsZV9yZXdyaXRlJyB9LAoreyBvaWQgPT4gJzQ2NDcnLCBkZXNjciA9 PiAndHJpZ2dlciBmb3IgZGRsIGNvbW1hbmQgZGVwYXJzZSB0YWJsZSBpbml0JywKKyAgcHJvbmFt ZSA9PiAncHVibGljYXRpb25fZGVwYXJzZV90YWJsZV9pbml0X3dyaXRlJywgcHJvcmV0dHlwZSA9 PiAnZXZlbnRfdHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ3B1Ymxp Y2F0aW9uX2RlcGFyc2VfdGFibGVfaW5pdF93cml0ZScgfSwKIAogXQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5oCmluZGV4IDZlY2FhMmEwMWUuLjc0YjI4ZDczNTAgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTE4LDggKzE4LDE3IEBACiAjZGVmaW5lIFBHX1BV QkxJQ0FUSU9OX0gKIAogI2luY2x1ZGUgImNhdGFsb2cvZ2VuYmtpLmgiCi0jaW5jbHVkZSAiY2F0 YWxvZy9vYmplY3RhZGRyZXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9k LmgiCisjaW5jbHVkZSAibm9kZXMvcGdfbGlzdC5oIgorCisvKiBQdWJsaWNhdGlvbiB0cmlnZ2Vy IGV2ZW50cyAqLworI2RlZmluZSBQVUJfVFJJR19FVkVOVDEgImRkbF9jb21tYW5kX2VuZCIKKyNk ZWZpbmUgUFVCX1RSSUdfRVZFTlQyICJkZGxfY29tbWFuZF9zdGFydCIKKyNkZWZpbmUgUFVCX1RS SUdfRVZFTlQzICJ0YWJsZV9yZXdyaXRlIgorI2RlZmluZSBQVUJfVFJJR19FVkVOVDQgInRhYmxl X2luaXRfd3JpdGUiCisKKy8qIFB1YmxpY2F0aW9uIGV2ZW50IHRyaWdnZXIgcHJlZml4ICovCisj ZGVmaW5lIFBVQl9FVkVOVF9UUklHX1BSRUZJWCAicGdfZGVwYXJzZV90cmlnXyVzXyV1IgogCiAv KiAtLS0tLS0tLS0tLS0tLS0tCiAgKgkJcGdfcHVibGljYXRpb24gZGVmaW5pdGlvbi4gIGNwcCB0 dXJucyB0aGlzIGludG8KQEAgLTU0LDYgKzYzLDkgQEAgQ0FUQUxPRyhwZ19wdWJsaWNhdGlvbiw2 MTA0LFB1YmxpY2F0aW9uUmVsYXRpb25JZCkKIAogCS8qIHRydWUgaWYgcGFydGl0aW9uIGNoYW5n ZXMgYXJlIHB1Ymxpc2hlZCB1c2luZyByb290IHNjaGVtYSAqLwogCWJvb2wJCXB1YnZpYXJvb3Q7 CisKKwkvKiB0cnVlIGlmIHRhYmxlIGRkbHMgYXJlIHB1Ymxpc2hlZCAqLworCWJvb2wJCXB1YmRk bF90YWJsZTsKIH0gRm9ybURhdGFfcGdfcHVibGljYXRpb247CiAKIC8qIC0tLS0tLS0tLS0tLS0t LS0KQEAgLTcyLDYgKzg0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25BY3Rpb25zCiAJ Ym9vbAkJcHVidXBkYXRlOwogCWJvb2wJCXB1YmRlbGV0ZTsKIAlib29sCQlwdWJ0cnVuY2F0ZTsK Kwlib29sCQlwdWJkZGxfdGFibGU7CiB9IFB1YmxpY2F0aW9uQWN0aW9uczsKIAogdHlwZWRlZiBz dHJ1Y3QgUHVibGljYXRpb25EZXNjCkBAIC0xMDMsMTMgKzExNiw2IEBAIHR5cGVkZWYgc3RydWN0 IFB1YmxpY2F0aW9uCiAJUHVibGljYXRpb25BY3Rpb25zIHB1YmFjdGlvbnM7CiB9IFB1YmxpY2F0 aW9uOwogCi10eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblJlbEluZm8KLXsKLQlSZWxhdGlvbgly ZWxhdGlvbjsKLQlOb2RlCSAgICp3aGVyZUNsYXVzZTsKLQlMaXN0CSAgICpjb2x1bW5zOwotfSBQ dWJsaWNhdGlvblJlbEluZm87Ci0KIGV4dGVybiBQdWJsaWNhdGlvbiAqR2V0UHVibGljYXRpb24o T2lkIHB1YmlkKTsKIGV4dGVybiBQdWJsaWNhdGlvbiAqR2V0UHVibGljYXRpb25CeU5hbWUoY29u c3QgY2hhciAqcHVibmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiBMaXN0ICpHZXRSZWxh dGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpOwpAQCAtMTQ1LDE0ICsxNTEsNiBAQCBleHRlcm4g TGlzdCAqR2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKExpc3QgKnJlc3VsdCwKIGV4dGVy biBPaWQJR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICph bmNlc3RvcnMsCiAJCQkJCQkJCQkJCWludCAqYW5jZXN0b3JfbGV2ZWwpOwogCi1leHRlcm4gYm9v bCBpc19wdWJsaXNoYWJsZV9yZWxhdGlvbihSZWxhdGlvbiByZWwpOwogZXh0ZXJuIGJvb2wgaXNf c2NoZW1hX3B1YmxpY2F0aW9uKE9pZCBwdWJpZCk7Ci1leHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJs aWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwK LQkJCQkJCQkJCQkJICBib29sIGlmX25vdF9leGlzdHMpOwotZXh0ZXJuIE9iamVjdEFkZHJlc3Mg cHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFpZCwKLQkJCQkJCQkJ CQkJYm9vbCBpZl9ub3RfZXhpc3RzKTsKLQotZXh0ZXJuIEJpdG1hcHNldCAqcHViX2NvbGxpc3Rf dG9fYml0bWFwc2V0KEJpdG1hcHNldCAqY29sdW1ucywgRGF0dW0gcHViY29scywKLQkJCQkJCQkJ CQkgICBNZW1vcnlDb250ZXh0IG1jeHQpOwogCiAjZW5kaWYJCQkJCQkJLyogUEdfUFVCTElDQVRJ T05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRz LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaAppbmRleCA3MGQ1ZTM2 ODBhLi5hM2ZjYTllNjRjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNh dGlvbmNtZHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaApA QCAtMjIsNiArMjIsMTMgQEAKIC8qIFNhbWUgYXMgTUFYTlVNTUVTU0FHRVMgaW4gc2ludmFsYWR0 LmMgKi8KICNkZWZpbmUgTUFYX1JFTENBQ0hFX0lOVkFMX01TR1MgNDA5NgogCit0eXBlZGVmIHN0 cnVjdCBQdWJsaWNhdGlvblJlbEluZm8KK3sKKwlSZWxhdGlvbglyZWxhdGlvbjsKKwlOb2RlCSAg ICp3aGVyZUNsYXVzZTsKKwlMaXN0CSAgICpjb2x1bW5zOworfSBQdWJsaWNhdGlvblJlbEluZm87 CisKIGV4dGVybiBPYmplY3RBZGRyZXNzIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KTsKIGV4dGVybiB2b2lkIEFsdGVyUHVi bGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCk7 CiBleHRlcm4gdm9pZCBSZW1vdmVQdWJsaWNhdGlvbkJ5SWQoT2lkIHB1YmlkKTsKQEAgLTM1LDUg KzQyLDEyIEBAIGV4dGVybiBib29sIHB1Yl9yZl9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQg cHViaWQsIFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCSAgIExpc3QgKmFuY2VzdG9ycywg Ym9vbCBwdWJ2aWFyb290KTsKIGV4dGVybiBib29sIHB1Yl9jb2xsaXN0X2NvbnRhaW5zX2ludmFs aWRfY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJCQlMaXN0 ICphbmNlc3RvcnMsIGJvb2wgcHVidmlhcm9vdCk7CitleHRlcm4gQml0bWFwc2V0ICpwdWJfY29s bGlzdF90b19iaXRtYXBzZXQoQml0bWFwc2V0ICpjb2x1bW5zLCBEYXR1bSBwdWJjb2xzLAorCQkJ CQkJCQkJCSAgIE1lbW9yeUNvbnRleHQgbWN4dCk7CitleHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJs aWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwK KwkJCQkJCQkJCQkJICBib29sIGlmX25vdF9leGlzdHMpOworZXh0ZXJuIE9iamVjdEFkZHJlc3Mg cHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFpZCwKKwkJCQkJCQkJ CQkJYm9vbCBpZl9ub3RfZXhpc3RzKTsKK2V4dGVybiBib29sIGlzX3B1Ymxpc2hhYmxlX3JlbGF0 aW9uKFJlbGF0aW9uIHJlbCk7CiAKICNlbmRpZgkJCQkJCQkvKiBQVUJMSUNBVElPTkNNRFNfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vZGRsbWVzc2FnZS5oIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vZGRsbWVzc2FnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLjc3ZGY2ZWExMWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgKQEAgLTAsMCArMSw2MCBAQAorLyotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKiBkZGxtZXNzYWdlLmgKKyAqCSAgIEV4cG9ydHMgZnJvbSByZXBsaWNhdGlvbi9s b2dpY2FsL2RkbG1lc3NhZ2UuYworICoKKyAqIENvcHlyaWdodCAoYykgMjAyMiwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9kZGxtZXNzYWdlLmgKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFBHX0xPR0lD QUxfRERMX01FU1NBR0VfSAorI2RlZmluZSBQR19MT0dJQ0FMX0RETF9NRVNTQUdFX0gKKworI2lu Y2x1ZGUgImFjY2Vzcy94bG9nLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCisjaW5j bHVkZSAiYWNjZXNzL3hsb2dyZWFkZXIuaCIKKyNpbmNsdWRlICJub2Rlcy9ub2Rlcy5oIgorCisK Ky8qCisgKiBTdXBwb3J0IGZvciBrZWVwaW5nIHRyYWNrIG9mIGRlcGFyc2VkIGNvbW1hbmRzLgor ICovCit0eXBlZGVmIGVudW0gRGVwYXJzZWRDb21tYW5kVHlwZQoreworCURDVF9TaW1wbGVDbWQs CisJRENUX1RhYmxlRHJvcFN0YXJ0LAorCURDVF9UYWJsZURyb3BFbmQsCisJRENUX1RhYmxlQWx0 ZXIsCisJRENUX09iamVjdENyZWF0ZSwKKwlEQ1RfT2JqZWN0RHJvcAorfSBEZXBhcnNlZENvbW1h bmRUeXBlOworCisvKgorICogR2VuZXJpYyBsb2dpY2FsIGRlY29kaW5nIERETCBtZXNzYWdlIHdh bCByZWNvcmQuCisgKi8KK3R5cGVkZWYgc3RydWN0IHhsX2xvZ2ljYWxfZGRsX21lc3NhZ2UKK3sK KwlPaWQJCQlkYklkOwkJCS8qIGRhdGFiYXNlIE9pZCBlbWl0dGVkIGZyb20gKi8KKwlTaXplCQlw cmVmaXhfc2l6ZTsJLyogbGVuZ3RoIG9mIHByZWZpeCBpbmNsdWRpbmcgbnVsbCB0ZXJtaW5hdG9y ICovCisJT2lkCQkJcmVsaWQ7CQkJLyogaWQgb2YgdGhlIHRhYmxlICovCisJRGVwYXJzZWRDb21t YW5kVHlwZSBjbWR0eXBlOwkvKiB0eXBlIG9mIHNxbCBjb21tYW5kICovCisJU2l6ZQkJbWVzc2Fn ZV9zaXplOwkvKiBzaXplIG9mIHRoZSBtZXNzYWdlICovCisKKwkvKgorCSAqIHBheWxvYWQsIGlu Y2x1ZGluZyBudWxsLXRlcm1pbmF0ZWQgcHJlZml4IG9mIGxlbmd0aCBwcmVmaXhfc2l6ZQorCSAq LworCWNoYXIJCW1lc3NhZ2VbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKK30geGxfbG9naWNhbF9k ZGxfbWVzc2FnZTsKKworI2RlZmluZSBTaXplT2ZMb2dpY2FsRERMTWVzc2FnZQkob2Zmc2V0b2Yo eGxfbG9naWNhbF9kZGxfbWVzc2FnZSwgbWVzc2FnZSkpCisKK2V4dGVybiBYTG9nUmVjUHRyIExv Z0xvZ2ljYWxERExNZXNzYWdlKGNvbnN0IGNoYXIgKnByZWZpeCwgT2lkIHJlbGlkLCBEZXBhcnNl ZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCQkJCQkgICBjb25zdCBjaGFyICpkZGxfbWVzc2Fn ZSwgc2l6ZV90IHNpemUpOworCisvKiBSTUdSIEFQSSovCisjZGVmaW5lIFhMT0dfTE9HSUNBTF9E RExfTUVTU0FHRQkweDAwCit2b2lkCQlsb2dpY2FsZGRsbXNnX3JlZG8oWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpOwordm9pZAkJbG9naWNhbGRkbG1zZ19kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9n UmVhZGVyU3RhdGUgKnJlY29yZCk7Citjb25zdCBjaGFyICpsb2dpY2FsZGRsbXNnX2lkZW50aWZ5 KHVpbnQ4IGluZm8pOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2RlY29kZS5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vZGVjb2RlLmgKaW5kZXggMTRm YTkyMWFiNC4uYzlhYzcwOGQzMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v ZGVjb2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vZGVjb2RlLmgKQEAgLTI3LDYg KzI3LDcgQEAgZXh0ZXJuIHZvaWQgaGVhcDJfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKTsKIGV4dGVybiB2b2lkIHhhY3RfZGVjb2RlKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKTsKIGV4dGVy biB2b2lkIHN0YW5kYnlfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1Jl Y29yZEJ1ZmZlciAqYnVmKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxtc2dfZGVjb2RlKExvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKTsKK2V4dGVybiB2b2lk IGxvZ2ljYWxkZGxfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29y ZEJ1ZmZlciAqYnVmKTsKIAogZXh0ZXJuIHZvaWQgTG9naWNhbERlY29kaW5nUHJvY2Vzc1JlY29y ZChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJCQkJIFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxw cm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggMGVh MmRmNTA4OC4uNWZiM2JhYWViMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3Rv LmgKQEAgLTY2LDYgKzY2LDcgQEAgdHlwZWRlZiBlbnVtIExvZ2ljYWxSZXBNc2dUeXBlCiAJTE9H SUNBTF9SRVBfTVNHX1JFTEFUSU9OID0gJ1InLAogCUxPR0lDQUxfUkVQX01TR19UWVBFID0gJ1kn LAogCUxPR0lDQUxfUkVQX01TR19NRVNTQUdFID0gJ00nLAorCUxPR0lDQUxfUkVQX01TR19EREwg PSAnTCcsCiAJTE9HSUNBTF9SRVBfTVNHX0JFR0lOX1BSRVBBUkUgPSAnYicsCiAJTE9HSUNBTF9S RVBfTVNHX1BSRVBBUkUgPSAnUCcsCiAJTE9HSUNBTF9SRVBfTVNHX0NPTU1JVF9QUkVQQVJFRCA9 ICdLJywKQEAgLTI0Niw2ICsyNDcsOSBAQCBleHRlcm4gTGlzdCAqbG9naWNhbHJlcF9yZWFkX3Ry dW5jYXRlKFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJCQkgIGJvb2wgKmNhc2NhZGUsIGJvb2wgKnJl c3RhcnRfc2Vxcyk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX21lc3NhZ2UoU3RyaW5n SW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKIAkJCQkJCQkJCSBi b29sIHRyYW5zYWN0aW9uYWwsIGNvbnN0IGNoYXIgKnByZWZpeCwgU2l6ZSBzeiwgY29uc3QgY2hh ciAqbWVzc2FnZSk7CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX2RkbChTdHJpbmdJbmZv IG91dCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCQkJCQkJY29uc3QgY2hhciAqcHJlZml4LCBTaXpl IHN6LCBjb25zdCBjaGFyICptZXNzYWdlKTsKK2V4dGVybiBjaGFyICpsb2dpY2FscmVwX3JlYWRf ZGRsKFN0cmluZ0luZm8gaW4sIFhMb2dSZWNQdHIgKmxzbiwgY29uc3QgY2hhciAqKnByZWZpeCwg U2l6ZSAqc3opOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9yZWwoU3RyaW5nSW5mbyBv dXQsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkgUmVsYXRpb24gcmVsLCBCaXRtYXBzZXQg KmNvbHVtbnMpOwogZXh0ZXJuIExvZ2ljYWxSZXBSZWxhdGlvbiAqbG9naWNhbHJlcF9yZWFkX3Jl bChTdHJpbmdJbmZvIGluKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL291 dHB1dF9wbHVnaW4uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL291dHB1dF9wbHVnaW4uaApp bmRleCAyZDg5ZDI2NTg2Li40NGJhZjQwNzIwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9vdXRwdXRfcGx1Z2luLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0 cHV0X3BsdWdpbi5oCkBAIC05MCw2ICs5MCwxOCBAQCB0eXBlZGVmIHZvaWQgKCpMb2dpY2FsRGVj b2RlTWVzc2FnZUNCKSAoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJ CQkJCQlTaXplIG1lc3NhZ2Vfc2l6ZSwKIAkJCQkJCQkJCQljb25zdCBjaGFyICptZXNzYWdlKTsK IAorLyoKKyAqIENhbGxlZCBmb3IgdGhlIGxvZ2ljYWwgZGVjb2RpbmcgRERMIG1lc3NhZ2VzLgor ICovCit0eXBlZGVmIHZvaWQgKCpMb2dpY2FsRGVjb2RlRERMTWVzc2FnZUNCKSAoc3RydWN0IExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKKwkJCQkJCQkJCQkgICBSZW9yZGVyQnVmZmVyVFhO ICp0eG4sCisJCQkJCQkJCQkJICAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKKwkJCQkJCQkJCQkg ICBjb25zdCBjaGFyICpwcmVmaXgsCisJCQkJCQkJCQkJICAgT2lkIHJlbGlkLAorCQkJCQkJCQkJ CSAgIERlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJCQkJCQkgICBTaXplIG1lc3Nh Z2Vfc2l6ZSwKKwkJCQkJCQkJCQkgICBjb25zdCBjaGFyICptZXNzYWdlKTsKKwogLyoKICAqIEZp bHRlciBjaGFuZ2VzIGJ5IG9yaWdpbi4KICAqLwpAQCAtMjAxLDYgKzIxMywxOSBAQCB0eXBlZGVm IHZvaWQgKCpMb2dpY2FsRGVjb2RlU3RyZWFtTWVzc2FnZUNCKSAoc3RydWN0IExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eAogCQkJCQkJCQkJCQkgIFNpemUgbWVzc2FnZV9zaXplLAogCQkJCQkJ CQkJCQkgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCisvKgorICogQ2FsbGJhY2sgZm9yIHN0cmVh bWluZyBsb2dpY2FsIGRlY29kaW5nIERETCBtZXNzYWdlcyBmcm9tIGluLXByb2dyZXNzCisgKiB0 cmFuc2FjdGlvbnMuCisgKi8KK3R5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVTdHJlYW1ERExN ZXNzYWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCQkJCQkJ CQkJIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJCQkJCSBYTG9nUmVjUHRyIG1lc3Nh Z2VfbHNuLAorCQkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJCQkJCSBP aWQgcmVsaWQsCisJCQkJCQkJCQkJCQkgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJ CQkJCQkJCQkJIFNpemUgbWVzc2FnZV9zaXplLAorCQkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKm1l c3NhZ2UpOworCiAvKgogICogQ2FsbGJhY2sgZm9yIHN0cmVhbWluZyB0cnVuY2F0ZXMgZnJvbSBp bi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuCiAgKi8KQEAgLTIyMSw2ICsyNDYsNyBAQCB0eXBlZGVm IHN0cnVjdCBPdXRwdXRQbHVnaW5DYWxsYmFja3MKIAlMb2dpY2FsRGVjb2RlVHJ1bmNhdGVDQiB0 cnVuY2F0ZV9jYjsKIAlMb2dpY2FsRGVjb2RlQ29tbWl0Q0IgY29tbWl0X2NiOwogCUxvZ2ljYWxE ZWNvZGVNZXNzYWdlQ0IgbWVzc2FnZV9jYjsKKwlMb2dpY2FsRGVjb2RlRERMTWVzc2FnZUNCIGRk bF9jYjsKIAlMb2dpY2FsRGVjb2RlRmlsdGVyQnlPcmlnaW5DQiBmaWx0ZXJfYnlfb3JpZ2luX2Ni OwogCUxvZ2ljYWxEZWNvZGVTaHV0ZG93bkNCIHNodXRkb3duX2NiOwogCkBAIC0yMzksNiArMjY1 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgT3V0cHV0UGx1Z2luQ2FsbGJhY2tzCiAJTG9naWNhbERlY29k ZVN0cmVhbUNvbW1pdENCIHN0cmVhbV9jb21taXRfY2I7CiAJTG9naWNhbERlY29kZVN0cmVhbUNo YW5nZUNCIHN0cmVhbV9jaGFuZ2VfY2I7CiAJTG9naWNhbERlY29kZVN0cmVhbU1lc3NhZ2VDQiBz dHJlYW1fbWVzc2FnZV9jYjsKKwlMb2dpY2FsRGVjb2RlU3RyZWFtRERMTWVzc2FnZUNCIHN0cmVh bV9kZGxfY2I7CiAJTG9naWNhbERlY29kZVN0cmVhbVRydW5jYXRlQ0Igc3RyZWFtX3RydW5jYXRl X2NiOwogfSBPdXRwdXRQbHVnaW5DYWxsYmFja3M7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1 dC5oCmluZGV4IGI0YTgwMTU0MDMuLmEyY2Y5OWI0ZTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdv dXRwdXQuaApAQCAtMjUsNiArMjUsNyBAQCB0eXBlZGVmIHN0cnVjdCBQR091dHB1dERhdGEKIAl1 aW50MzIJCXByb3RvY29sX3ZlcnNpb247CiAJTGlzdAkgICAqcHVibGljYXRpb25fbmFtZXM7CiAJ TGlzdAkgICAqcHVibGljYXRpb25zOworCUxpc3QJICAgKmRlbGV0ZWRfcmVsaWRzOwogCWJvb2wJ CWJpbmFyeTsKIAljaGFyCQlzdHJlYW1pbmc7CiAJYm9vbAkJbWVzc2FnZXM7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKaW5kZXggZTM3ZjUxMjBlYi4uMjVhMDYxYWM3MCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaApAQCAtMTEsNiArMTEsOCBA QAogCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImxpYi9pbGlz dC5oIgorI2luY2x1ZGUgIm5vZGVzL25vZGVzLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vZGRs bWVzc2FnZS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsLmgiCiAjaW5jbHVkZSAidXRpbHMv aHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCkBAIC02NSw2ICs2Nyw3IEBA IHR5cGVkZWYgZW51bSBSZW9yZGVyQnVmZmVyQ2hhbmdlVHlwZQogCVJFT1JERVJfQlVGRkVSX0NI QU5HRV9JTlNFUlQsCiAJUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1VQREFURSwKIAlSRU9SREVSX0JV RkZFUl9DSEFOR0VfREVMRVRFLAorCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9EREwsCiAJUkVPUkRF Ul9CVUZGRVJfQ0hBTkdFX01FU1NBR0UsCiAJUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVkFMSURB VElPTiwKIAlSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5URVJOQUxfU05BUFNIT1QsCkBAIC0xMzks NiArMTQyLDE2IEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJDaGFuZ2UKIAkJCWNoYXIJ ICAgKm1lc3NhZ2U7CiAJCX0JCQltc2c7CiAKKwkJLyogRERMICovCisJCXN0cnVjdAorCQl7CisJ CQljaGFyCSAgICpwcmVmaXg7CisJCQlTaXplCQltZXNzYWdlX3NpemU7CisJCQljaGFyCSAgICpt ZXNzYWdlOworCQkJT2lkCQkJcmVsaWQ7CisJCQlEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGU7 CisJCX0JCQlkZGw7CisKIAkJLyogTmV3IHNuYXBzaG90LCBzZXQgd2hlbiBhY3Rpb24gPT0gKl9J TlRFUk5BTF9TTkFQU0hPVCAqLwogCQlTbmFwc2hvdAlzbmFwc2hvdDsKIApAQCAtNDcwLDYgKzQ4 MywxNiBAQCB0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyTWVzc2FnZUNCKSAoUmVvcmRlckJ1 ZmZlciAqcmIsCiAJCQkJCQkJCQkJY29uc3QgY2hhciAqcHJlZml4LCBTaXplIHN6LAogCQkJCQkJ CQkJCWNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCisvKiBEREwgbWVzc2FnZSBjYWxsYmFjayBzaWdu YXR1cmUgKi8KK3R5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJERExNZXNzYWdlQ0IpIChSZW9y ZGVyQnVmZmVyICpyYiwKKwkJCQkJCQkJCQkgICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJ CQkJCQkJICAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKKwkJCQkJCQkJCQkgICBjb25zdCBjaGFy ICpwcmVmaXgsCisJCQkJCQkJCQkJICAgT2lkIHJlbGlkLAorCQkJCQkJCQkJCSAgIERlcGFyc2Vk Q29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJCQkJCQkgICBTaXplIHN6LAorCQkJCQkJCQkJCSAg IGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworCiAvKiBiZWdpbiBwcmVwYXJlIGNhbGxiYWNrIHNpZ25h dHVyZSAqLwogdHlwZWRlZiB2b2lkICgqUmVvcmRlckJ1ZmZlckJlZ2luUHJlcGFyZUNCKSAoUmVv cmRlckJ1ZmZlciAqcmIsCiAJCQkJCQkJCQkJCSBSZW9yZGVyQnVmZmVyVFhOICp0eG4pOwpAQCAt NTM2LDYgKzU1OSwxNyBAQCB0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyU3RyZWFtTWVzc2Fn ZUNCKSAoCiAJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqcHJlZml4LCBTaXplIHN6LAogCQkJCQkJ CQkJCQkgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCisvKiBzdHJlYW0gRERMIG1lc3NhZ2UgY2Fs bGJhY2sgc2lnbmF0dXJlICovCit0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyU3RyZWFtRERM TWVzc2FnZUNCKSAoCisJCQkJCQkJCQkJCQkgUmVvcmRlckJ1ZmZlciAqcmIsCisJCQkJCQkJCQkJ CQkgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCQkJCQkJIFhMb2dSZWNQdHIgbWVzc2Fn ZV9sc24sCisJCQkJCQkJCQkJCQkgY29uc3QgY2hhciAqcHJlZml4LAorCQkJCQkJCQkJCQkJIE9p ZCByZWxpZCwKKwkJCQkJCQkJCQkJCSBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJ CQkJCQkJCQkgU2l6ZSBzeiwKKwkJCQkJCQkJCQkJCSBjb25zdCBjaGFyICptZXNzYWdlKTsKKwog Lyogc3RyZWFtIHRydW5jYXRlIGNhbGxiYWNrIHNpZ25hdHVyZSAqLwogdHlwZWRlZiB2b2lkICgq UmVvcmRlckJ1ZmZlclN0cmVhbVRydW5jYXRlQ0IpICgKIAkJCQkJCQkJCQkJICAgUmVvcmRlckJ1 ZmZlciAqcmIsCkBAIC01OTIsNiArNjI2LDcgQEAgc3RydWN0IFJlb3JkZXJCdWZmZXIKIAlSZW9y ZGVyQnVmZmVyQXBwbHlUcnVuY2F0ZUNCIGFwcGx5X3RydW5jYXRlOwogCVJlb3JkZXJCdWZmZXJD b21taXRDQiBjb21taXQ7CiAJUmVvcmRlckJ1ZmZlck1lc3NhZ2VDQiBtZXNzYWdlOworCVJlb3Jk ZXJCdWZmZXJERExNZXNzYWdlQ0IgZGRsOwogCiAJLyoKIAkgKiBDYWxsYmFja3MgdG8gYmUgY2Fs bGVkIHdoZW4gc3RyZWFtaW5nIGEgdHJhbnNhY3Rpb24gYXQgcHJlcGFyZSB0aW1lLgpAQCAtNjEx LDYgKzY0Niw3IEBAIHN0cnVjdCBSZW9yZGVyQnVmZmVyCiAJUmVvcmRlckJ1ZmZlclN0cmVhbUNv bW1pdENCIHN0cmVhbV9jb21taXQ7CiAJUmVvcmRlckJ1ZmZlclN0cmVhbUNoYW5nZUNCIHN0cmVh bV9jaGFuZ2U7CiAJUmVvcmRlckJ1ZmZlclN0cmVhbU1lc3NhZ2VDQiBzdHJlYW1fbWVzc2FnZTsK KwlSZW9yZGVyQnVmZmVyU3RyZWFtRERMTWVzc2FnZUNCIHN0cmVhbV9kZGw7CiAJUmVvcmRlckJ1 ZmZlclN0cmVhbVRydW5jYXRlQ0Igc3RyZWFtX3RydW5jYXRlOwogCiAJLyoKQEAgLTY5Niw2ICs3 MzIsOSBAQCBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyUXVldWVNZXNzYWdlKFJlb3JkZXJCdWZm ZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJCSAgU25hcHNob3Qgc25hcCwgWExv Z1JlY1B0ciBsc24sCiAJCQkJCQkJCQkgIGJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAq cHJlZml4LAogCQkJCQkJCQkJICBTaXplIG1lc3NhZ2Vfc2l6ZSwgY29uc3QgY2hhciAqbWVzc2Fn ZSk7CitleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyUXVldWVERExNZXNzYWdlKFJlb3JkZXJCdWZm ZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCQkJCQkJIGNvbnN0IGNo YXIgKnByZWZpeCwgU2l6ZSBtZXNzYWdlX3NpemUsCisJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKm1l c3NhZ2UsIE9pZCByZWxpZCwgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlKTsKIGV4dGVybiB2 b2lkIFJlb3JkZXJCdWZmZXJDb21taXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQg eGlkLAogCQkJCQkJCQlYTG9nUmVjUHRyIGNvbW1pdF9sc24sIFhMb2dSZWNQdHIgZW5kX2xzbiwK IAkJCQkJCQkJVGltZXN0YW1wVHogY29tbWl0X3RpbWUsIFJlcE9yaWdpbklkIG9yaWdpbl9pZCwg WExvZ1JlY1B0ciBvcmlnaW5fbHNuKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvY21k dGFnLmggYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZy5oCmluZGV4IDFlNzUxNGRjZmYuLjA3NmMy N2U2NDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdGNvcC9jbWR0YWcuaApAQCAtMTYsNyArMTYsNyBAQAogLyogYnVmZmVyIHNpemUgcmVx dWlyZWQgZm9yIGNvbW1hbmQgY29tcGxldGlvbiB0YWdzICovCiAjZGVmaW5lIENPTVBMRVRJT05f VEFHX0JVRlNJWkUJNjQKIAotI2RlZmluZSBQR19DTURUQUcodGFnLCBuYW1lLCBldnRyZ29rLCBy d3Jvaywgcm93Y250KSBcCisjZGVmaW5lIFBHX0NNRFRBRyh0YWcsIG5hbWUsIGV2dHJnb2ssIHJ3 cm9rLCByb3djbnQsIGRkbHJlcGxvaykgXAogCXRhZywKIAogdHlwZWRlZiBlbnVtIENvbW1hbmRU YWcKQEAgLTUzLDkgKzUzLDExIEBAIENvcHlRdWVyeUNvbXBsZXRpb24oUXVlcnlDb21wbGV0aW9u ICpkc3QsIGNvbnN0IFF1ZXJ5Q29tcGxldGlvbiAqc3JjKQogZXh0ZXJuIHZvaWQgSW5pdGlhbGl6 ZVF1ZXJ5Q29tcGxldGlvbihRdWVyeUNvbXBsZXRpb24gKnFjKTsKIGV4dGVybiBjb25zdCBjaGFy ICpHZXRDb21tYW5kVGFnTmFtZShDb21tYW5kVGFnIGNvbW1hbmRUYWcpOwogZXh0ZXJuIGNvbnN0 IGNoYXIgKkdldENvbW1hbmRUYWdOYW1lQW5kTGVuKENvbW1hbmRUYWcgY29tbWFuZFRhZywgU2l6 ZSAqbGVuKTsKK2V4dGVybiBDb21tYW5kVGFnICpHZXRDb21tYW5kVGFnc0ZvckRETFJlcGwoaW50 ICpuY29tbWFuZHMpOwogZXh0ZXJuIGJvb2wgY29tbWFuZF90YWdfZGlzcGxheV9yb3djb3VudChD b21tYW5kVGFnIGNvbW1hbmRUYWcpOwogZXh0ZXJuIGJvb2wgY29tbWFuZF90YWdfZXZlbnRfdHJp Z2dlcl9vayhDb21tYW5kVGFnIGNvbW1hbmRUYWcpOwogZXh0ZXJuIGJvb2wgY29tbWFuZF90YWdf dGFibGVfcmV3cml0ZV9vayhDb21tYW5kVGFnIGNvbW1hbmRUYWcpOworZXh0ZXJuIGJvb2wgY29t bWFuZF90YWdfZGRsX3JlcGxpY2F0aW9uX29rKENvbW1hbmRUYWcgY29tbWFuZFRhZyk7CiBleHRl cm4gQ29tbWFuZFRhZyBHZXRDb21tYW5kVGFnRW51bShjb25zdCBjaGFyICpjb21tYW5kbmFtZSk7 CiBleHRlcm4gU2l6ZSBCdWlsZFF1ZXJ5Q29tcGxldGlvblN0cmluZyhjaGFyICpidWZmLCBjb25z dCBRdWVyeUNvbXBsZXRpb24gKnFjLAogCQkJCQkJCQkJICAgYm9vbCBuYW1lb25seSk7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaCBiL3NyYy9pbmNsdWRlL3Rjb3Av Y21kdGFnbGlzdC5oCmluZGV4IGU3MzhhYzFjMDkuLjE4YjY5ZTRiYjMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFn bGlzdC5oCkBAIC0yMywxOTYgKzIzLDE5NiBAQAogICogdGV4dHVhbCBuYW1lLCBzbyB0aGF0IHdl IGNhbiBic2VhcmNoIG9uIGl0OyBzZWUgR2V0Q29tbWFuZFRhZ0VudW0oKS4KICAqLwogCi0vKiBz eW1ib2wgbmFtZSwgdGV4dHVhbCBuYW1lLCBldmVudF90cmlnZ2VyX29rLCB0YWJsZV9yZXdyaXRl X29rLCByb3djb3VudCAqLwotUEdfQ01EVEFHKENNRFRBR19VTktOT1dOLCAiPz8/IiwgZmFsc2Us IGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfQUNDRVNTX01FVEhPRCwgIkFM VEVSIEFDQ0VTUyBNRVRIT0QiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X0FMVEVSX0FHR1JFR0FURSwgIkFMVEVSIEFHR1JFR0FURSIsIHRydWUsIGZhbHNlLCBmYWxzZSkK LVBHX0NNRFRBRyhDTURUQUdfQUxURVJfQ0FTVCwgIkFMVEVSIENBU1QiLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX0NPTExBVElPTiwgIkFMVEVSIENPTExBVElP TiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfQ09OU1RSQUlO VCwgIkFMVEVSIENPTlNUUkFJTlQiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0FMVEVSX0NPTlZFUlNJT04sICJBTFRFUiBDT05WRVJTSU9OIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9EQVRBQkFTRSwgIkFMVEVSIERBVEFCQVNFIiwg ZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfREVGQVVMVF9QUklW SUxFR0VTLCAiQUxURVIgREVGQVVMVCBQUklWSUxFR0VTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19BTFRFUl9ET01BSU4sICJBTFRFUiBET01BSU4iLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX0VWRU5UX1RSSUdHRVIsICJBTFRFUiBF VkVOVCBUUklHR0VSIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxU RVJfRVhURU5TSU9OLCAiQUxURVIgRVhURU5TSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19BTFRFUl9GT1JFSUdOX0RBVEFfV1JBUFBFUiwgIkFMVEVSIEZPUkVJR04g REFUQSBXUkFQUEVSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRF Ul9GT1JFSUdOX1RBQkxFLCAiQUxURVIgRk9SRUlHTiBUQUJMRSIsIHRydWUsIGZhbHNlLCBmYWxz ZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfRlVOQ1RJT04sICJBTFRFUiBGVU5DVElPTiIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfSU5ERVgsICJBTFRFUiBJ TkRFWCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfTEFOR1VB R0UsICJBTFRFUiBMQU5HVUFHRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfQUxURVJfTEFSR0VfT0JKRUNULCAiQUxURVIgTEFSR0UgT0JKRUNUIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9NQVRFUklBTElaRURfVklFVywgIkFMVEVS IE1BVEVSSUFMSVpFRCBWSUVXIiwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X0FMVEVSX09QRVJBVE9SLCAiQUxURVIgT1BFUkFUT1IiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1Q R19DTURUQUcoQ01EVEFHX0FMVEVSX09QRVJBVE9SX0NMQVNTLCAiQUxURVIgT1BFUkFUT1IgQ0xB U1MiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX09QRVJBVE9S X0ZBTUlMWSwgIkFMVEVSIE9QRVJBVE9SIEZBTUlMWSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBH X0NNRFRBRyhDTURUQUdfQUxURVJfUE9MSUNZLCAiQUxURVIgUE9MSUNZIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9QUk9DRURVUkUsICJBTFRFUiBQUk9DRURV UkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1BVQkxJQ0FU SU9OLCAiQUxURVIgUFVCTElDQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUco Q01EVEFHX0FMVEVSX1JPTEUsICJBTFRFUiBST0xFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBH X0NNRFRBRyhDTURUQUdfQUxURVJfUk9VVElORSwgIkFMVEVSIFJPVVRJTkUiLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1JVTEUsICJBTFRFUiBSVUxFIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9TQ0hFTUEsICJBTFRFUiBT Q0hFTUEiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1NFUVVF TkNFLCAiQUxURVIgU0VRVUVOQ0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0FMVEVSX1NFUlZFUiwgIkFMVEVSIFNFUlZFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBH X0NNRFRBRyhDTURUQUdfQUxURVJfU1RBVElTVElDUywgIkFMVEVSIFNUQVRJU1RJQ1MiLCB0cnVl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1NVQlNDUklQVElPTiwgIkFM VEVSIFNVQlNDUklQVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf QUxURVJfU1lTVEVNLCAiQUxURVIgU1lTVEVNIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfQUxURVJfVEFCTEUsICJBTFRFUiBUQUJMRSIsIHRydWUsIHRydWUsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9UQUJMRVNQQUNFLCAiQUxURVIgVEFCTEVTUEFDRSIs IGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1RFWFRfU0VBUkNI X0NPTkZJR1VSQVRJT04sICJBTFRFUiBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9URVhUX1NFQVJDSF9ESUNUSU9O QVJZLCAiQUxURVIgVEVYVCBTRUFSQ0ggRElDVElPTkFSWSIsIHRydWUsIGZhbHNlLCBmYWxzZSkK LVBHX0NNRFRBRyhDTURUQUdfQUxURVJfVEVYVF9TRUFSQ0hfUEFSU0VSLCAiQUxURVIgVEVYVCBT RUFSQ0ggUEFSU0VSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRF Ul9URVhUX1NFQVJDSF9URU1QTEFURSwgIkFMVEVSIFRFWFQgU0VBUkNIIFRFTVBMQVRFIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9UUkFOU0ZPUk0sICJBTFRF UiBUUkFOU0ZPUk0iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVS X1RSSUdHRVIsICJBTFRFUiBUUklHR0VSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19BTFRFUl9UWVBFLCAiQUxURVIgVFlQRSIsIHRydWUsIHRydWUsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19BTFRFUl9VU0VSX01BUFBJTkcsICJBTFRFUiBVU0VSIE1BUFBJTkciLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1ZJRVcsICJBTFRFUiBW SUVXIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTkFMWVpFLCAiQU5B TFlaRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0JFR0lOLCAiQkVH SU4iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DQUxMLCAiQ0FMTCIs IGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NIRUNLUE9JTlQsICJDSEVD S1BPSU5UIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ0xPU0UsICJD TE9TRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NMT1NFX0NVUlNP UiwgIkNMT1NFIENVUlNPUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X0NMT1NFX0NVUlNPUl9BTEwsICJDTE9TRSBDVVJTT1IgQUxMIiwgZmFsc2UsIGZhbHNlLCBmYWxz ZSkKLVBHX0NNRFRBRyhDTURUQUdfQ0xVU1RFUiwgIkNMVVNURVIiLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19DT01NRU5ULCAiQ09NTUVOVCIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ09NTUlULCAiQ09NTUlUIiwgZmFsc2UsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ09NTUlUX1BSRVBBUkVELCAiQ09NTUlUIFBSRVBBUkVE IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ09QWSwgIkNPUFkiLCBm YWxzZSwgZmFsc2UsIHRydWUpCi1QR19DTURUQUcoQ01EVEFHX0NPUFlfRlJPTSwgIkNPUFkgRlJP TSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9BQ0NFU1Nf TUVUSE9ELCAiQ1JFQVRFIEFDQ0VTUyBNRVRIT0QiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0NSRUFURV9BR0dSRUdBVEUsICJDUkVBVEUgQUdHUkVHQVRFIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfQ0FTVCwgIkNSRUFURSBDQVNU IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfQ09MTEFUSU9O LCAiQ1JFQVRFIENPTExBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfQ1JFQVRFX0NPTlNUUkFJTlQsICJDUkVBVEUgQ09OU1RSQUlOVCIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0NPTlZFUlNJT04sICJDUkVBVEUgQ09OVkVS U0lPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0RBVEFC QVNFLCAiQ1JFQVRFIERBVEFCQVNFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfQ1JFQVRFX0RPTUFJTiwgIkNSRUFURSBET01BSU4iLCB0cnVlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9FVkVOVF9UUklHR0VSLCAiQ1JFQVRFIEVWRU5UIFRS SUdHRVIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRVhU RU5TSU9OLCAiQ1JFQVRFIEVYVEVOU0lPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRB RyhDTURUQUdfQ1JFQVRFX0ZPUkVJR05fREFUQV9XUkFQUEVSLCAiQ1JFQVRFIEZPUkVJR04gREFU QSBXUkFQUEVSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVf Rk9SRUlHTl9UQUJMRSwgIkNSRUFURSBGT1JFSUdOIFRBQkxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRlVOQ1RJT04sICJDUkVBVEUgRlVOQ1RJT04iLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9JTkRFWCwgIkNSRUFU RSBJTkRFWCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0xB TkdVQUdFLCAiQ1JFQVRFIExBTkdVQUdFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19DUkVBVEVfTUFURVJJQUxJWkVEX1ZJRVcsICJDUkVBVEUgTUFURVJJQUxJWkVEIFZJ RVciLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9PUEVSQVRP UiwgIkNSRUFURSBPUEVSQVRPUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfQ1JFQVRFX09QRVJBVE9SX0NMQVNTLCAiQ1JFQVRFIE9QRVJBVE9SIENMQVNTIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfT1BFUkFUT1JfRkFNSUxZLCAi Q1JFQVRFIE9QRVJBVE9SIEZBTUlMWSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfQ1JFQVRFX1BPTElDWSwgIkNSRUFURSBQT0xJQ1kiLCB0cnVlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9QUk9DRURVUkUsICJDUkVBVEUgUFJPQ0VEVVJFIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfUFVCTElDQVRJT04s ICJDUkVBVEUgUFVCTElDQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0NSRUFURV9ST0xFLCAiQ1JFQVRFIFJPTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19DUkVBVEVfUk9VVElORSwgIkNSRUFURSBST1VUSU5FIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfUlVMRSwgIkNSRUFURSBSVUxFIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfU0NIRU1BLCAiQ1JF QVRFIFNDSEVNQSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRF X1NFUVVFTkNFLCAiQ1JFQVRFIFNFUVVFTkNFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01E VEFHKENNRFRBR19DUkVBVEVfU0VSVkVSLCAiQ1JFQVRFIFNFUlZFUiIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1NUQVRJU1RJQ1MsICJDUkVBVEUgU1RBVElT VElDUyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1NVQlND UklQVElPTiwgIkNSRUFURSBTVUJTQ1JJUFRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0NSRUFURV9UQUJMRSwgIkNSRUFURSBUQUJMRSIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RBQkxFX0FTLCAiQ1JFQVRFIFRBQkxFIEFT IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEFCTEVTUEFD RSwgIkNSRUFURSBUQUJMRVNQQUNFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfQ1JFQVRFX1RFWFRfU0VBUkNIX0NPTkZJR1VSQVRJT04sICJDUkVBVEUgVEVYVCBTRUFS Q0ggQ09ORklHVVJBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf Q1JFQVRFX1RFWFRfU0VBUkNIX0RJQ1RJT05BUlksICJDUkVBVEUgVEVYVCBTRUFSQ0ggRElDVElP TkFSWSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RFWFRf U0VBUkNIX1BBUlNFUiwgIkNSRUFURSBURVhUIFNFQVJDSCBQQVJTRVIiLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9URVhUX1NFQVJDSF9URU1QTEFURSwgIkNS RUFURSBURVhUIFNFQVJDSCBURU1QTEFURSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRB RyhDTURUQUdfQ1JFQVRFX1RSQU5TRk9STSwgIkNSRUFURSBUUkFOU0ZPUk0iLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9UUklHR0VSLCAiQ1JFQVRFIFRSSUdH RVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9UWVBFLCAi Q1JFQVRFIFRZUEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFU RV9VU0VSX01BUFBJTkcsICJDUkVBVEUgVVNFUiBNQVBQSU5HIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVklFVywgIkNSRUFURSBWSUVXIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19ERUFMTE9DQVRFLCAiREVBTExPQ0FURSIsIGZh bHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RFQUxMT0NBVEVfQUxMLCAiREVB TExPQ0FURSBBTEwiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19ERUNM QVJFX0NVUlNPUiwgIkRFQ0xBUkUgQ1VSU09SIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfREVMRVRFLCAiREVMRVRFIiwgZmFsc2UsIGZhbHNlLCB0cnVlKQotUEdfQ01E VEFHKENNRFRBR19ESVNDQVJELCAiRElTQ0FSRCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0RJU0NBUkRfQUxMLCAiRElTQ0FSRCBBTEwiLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19ESVNDQVJEX1BMQU5TLCAiRElTQ0FSRCBQTEFOUyIsIGZh bHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RJU0NBUkRfU0VRVUVOQ0VTLCAi RElTQ0FSRCBTRVFVRU5DRVMiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19ESVNDQVJEX1RFTVAsICJESVNDQVJEIFRFTVAiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19ETywgIkRPIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfRFJPUF9BQ0NFU1NfTUVUSE9ELCAiRFJPUCBBQ0NFU1MgTUVUSE9EIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX0FHR1JFR0FURSwgIkRST1AgQUdHUkVH QVRFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX0NBU1QsICJE Uk9QIENBU1QiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfQ09M TEFUSU9OLCAiRFJPUCBDT0xMQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUco Q01EVEFHX0RST1BfQ09OU1RSQUlOVCwgIkRST1AgQ09OU1RSQUlOVCIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9DT05WRVJTSU9OLCAiRFJPUCBDT05WRVJTSU9O IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX0RBVEFCQVNFLCAi RFJPUCBEQVRBQkFTRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RS T1BfRE9NQUlOLCAiRFJPUCBET01BSU4iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUco Q01EVEFHX0RST1BfRVZFTlRfVFJJR0dFUiwgIkRST1AgRVZFTlQgVFJJR0dFUiIsIGZhbHNlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfRVhURU5TSU9OLCAiRFJPUCBFWFRF TlNJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfRk9SRUlH Tl9EQVRBX1dSQVBQRVIsICJEUk9QIEZPUkVJR04gREFUQSBXUkFQUEVSIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX0ZPUkVJR05fVEFCTEUsICJEUk9QIEZPUkVJ R04gVEFCTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfRlVO Q1RJT04sICJEUk9QIEZVTkNUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19EUk9QX0lOREVYLCAiRFJPUCBJTkRFWCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfRFJPUF9MQU5HVUFHRSwgIkRST1AgTEFOR1VBR0UiLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfTUFURVJJQUxJWkVEX1ZJRVcsICJEUk9QIE1B VEVSSUFMSVpFRCBWSUVXIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19E Uk9QX09QRVJBVE9SLCAiRFJPUCBPUEVSQVRPUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfRFJPUF9PUEVSQVRPUl9DTEFTUywgIkRST1AgT1BFUkFUT1IgQ0xBU1MiLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfT1BFUkFUT1JfRkFNSUxZ LCAiRFJPUCBPUEVSQVRPUiBGQU1JTFkiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUco Q01EVEFHX0RST1BfT1dORUQsICJEUk9QIE9XTkVEIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19EUk9QX1BPTElDWSwgIkRST1AgUE9MSUNZIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1BST0NFRFVSRSwgIkRST1AgUFJPQ0VEVVJFIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1BVQkxJQ0FUSU9OLCAi RFJPUCBQVUJMSUNBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf RFJPUF9ST0xFLCAiRFJPUCBST0xFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfRFJPUF9ST1VUSU5FLCAiRFJPUCBST1VUSU5FIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19EUk9QX1JVTEUsICJEUk9QIFJVTEUiLCB0cnVlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfU0NIRU1BLCAiRFJPUCBTQ0hFTUEiLCB0cnVlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfU0VRVUVOQ0UsICJEUk9QIFNFUVVF TkNFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1NFUlZFUiwg IkRST1AgU0VSVkVSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9Q X1NUQVRJU1RJQ1MsICJEUk9QIFNUQVRJU1RJQ1MiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0RST1BfU1VCU0NSSVBUSU9OLCAiRFJPUCBTVUJTQ1JJUFRJT04iLCB0cnVl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfVEFCTEUsICJEUk9QIFRBQkxF IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1RBQkxFU1BBQ0Us ICJEUk9QIFRBQkxFU1BBQ0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19EUk9QX1RFWFRfU0VBUkNIX0NPTkZJR1VSQVRJT04sICJEUk9QIFRFWFQgU0VBUkNIIENPTkZJ R1VSQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfVEVY VF9TRUFSQ0hfRElDVElPTkFSWSwgIkRST1AgVEVYVCBTRUFSQ0ggRElDVElPTkFSWSIsIHRydWUs IGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9URVhUX1NFQVJDSF9QQVJTRVIs ICJEUk9QIFRFWFQgU0VBUkNIIFBBUlNFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRB RyhDTURUQUdfRFJPUF9URVhUX1NFQVJDSF9URU1QTEFURSwgIkRST1AgVEVYVCBTRUFSQ0ggVEVN UExBVEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfVFJBTlNG T1JNLCAiRFJPUCBUUkFOU0ZPUk0iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0RST1BfVFJJR0dFUiwgIkRST1AgVFJJR0dFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBH X0NNRFRBRyhDTURUQUdfRFJPUF9UWVBFLCAiRFJPUCBUWVBFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1VTRVJfTUFQUElORywgIkRST1AgVVNFUiBNQVBQSU5H IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1ZJRVcsICJEUk9Q IFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0VYRUNVVEUsICJF WEVDVVRFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRVhQTEFJTiwg IkVYUExBSU4iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19GRVRDSCwg IkZFVENIIiwgZmFsc2UsIGZhbHNlLCB0cnVlKQotUEdfQ01EVEFHKENNRFRBR19HUkFOVCwgIkdS QU5UIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19HUkFOVF9ST0xFLCAi R1JBTlQgUk9MRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0lNUE9S VF9GT1JFSUdOX1NDSEVNQSwgIklNUE9SVCBGT1JFSUdOIFNDSEVNQSIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfSU5TRVJULCAiSU5TRVJUIiwgZmFsc2UsIGZhbHNlLCB0 cnVlKQotUEdfQ01EVEFHKENNRFRBR19MSVNURU4sICJMSVNURU4iLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19MT0FELCAiTE9BRCIsIGZhbHNlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0xPQ0tfVEFCTEUsICJMT0NLIFRBQkxFIiwgZmFsc2UsIGZhbHNl LCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfTUVSR0UsICJNRVJHRSIsIGZhbHNlLCBmYWxzZSwg dHJ1ZSkKLVBHX0NNRFRBRyhDTURUQUdfTU9WRSwgIk1PVkUiLCBmYWxzZSwgZmFsc2UsIHRydWUp Ci1QR19DTURUQUcoQ01EVEFHX05PVElGWSwgIk5PVElGWSIsIGZhbHNlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX1BSRVBBUkUsICJQUkVQQVJFIiwgZmFsc2UsIGZhbHNlLCBmYWxz ZSkKLVBHX0NNRFRBRyhDTURUQUdfUFJFUEFSRV9UUkFOU0FDVElPTiwgIlBSRVBBUkUgVFJBTlNB Q1RJT04iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19SRUFTU0lHTl9P V05FRCwgIlJFQVNTSUdOIE9XTkVEIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfUkVGUkVTSF9NQVRFUklBTElaRURfVklFVywgIlJFRlJFU0ggTUFURVJJQUxJWkVEIFZJ RVciLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1JFSU5ERVgsICJSRUlO REVYIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfUkVMRUFTRSwgIlJF TEVBU0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19SRVNFVCwgIlJF U0VUIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfUkVWT0tFLCAiUkVW T0tFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19SRVZPS0VfUk9MRSwg IlJFVk9LRSBST0xFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfUk9M TEJBQ0ssICJST0xMQkFDSyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X1JPTExCQUNLX1BSRVBBUkVELCAiUk9MTEJBQ0sgUFJFUEFSRUQiLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19TQVZFUE9JTlQsICJTQVZFUE9JTlQiLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19TRUNVUklUWV9MQUJFTCwgIlNFQ1VSSVRZIExB QkVMIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19TRUxFQ1QsICJTRUxF Q1QiLCBmYWxzZSwgZmFsc2UsIHRydWUpCi1QR19DTURUQUcoQ01EVEFHX1NFTEVDVF9GT1JfS0VZ X1NIQVJFLCAiU0VMRUNUIEZPUiBLRVkgU0hBUkUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19TRUxFQ1RfRk9SX05PX0tFWV9VUERBVEUsICJTRUxFQ1QgRk9SIE5PIEtF WSBVUERBVEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19TRUxFQ1Rf Rk9SX1NIQVJFLCAiU0VMRUNUIEZPUiBTSEFSRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX1NFTEVDVF9GT1JfVVBEQVRFLCAiU0VMRUNUIEZPUiBVUERBVEUiLCBmYWxz ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19TRUxFQ1RfSU5UTywgIlNFTEVDVCBJ TlRPIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19TRVQsICJTRVQiLCBm YWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19TRVRfQ09OU1RSQUlOVFMsICJT RVQgQ09OU1RSQUlOVFMiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19T SE9XLCAiU0hPVyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NUQVJU X1RSQU5TQUNUSU9OLCAiU1RBUlQgVFJBTlNBQ1RJT04iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19UUlVOQ0FURV9UQUJMRSwgIlRSVU5DQVRFIFRBQkxFIiwgZmFsc2Us IGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfVU5MSVNURU4sICJVTkxJU1RFTiIsIGZh bHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1VQREFURSwgIlVQREFURSIsIGZh bHNlLCBmYWxzZSwgdHJ1ZSkKLVBHX0NNRFRBRyhDTURUQUdfVkFDVVVNLCAiVkFDVVVNIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKKy8qIHN5bWJvbCBuYW1lLCB0ZXh0dWFsIG5hbWUsIGV2ZW50X3Ry aWdnZXJfb2ssIHRhYmxlX3Jld3JpdGVfb2ssIHJvd2NvdW50LCBkZGxyZXBsb2sgKi8KK1BHX0NN RFRBRyhDTURUQUdfVU5LTk9XTiwgIj8/PyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQor UEdfQ01EVEFHKENNRFRBR19BTFRFUl9BQ0NFU1NfTUVUSE9ELCAiQUxURVIgQUNDRVNTIE1FVEhP RCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0FH R1JFR0FURSwgIkFMVEVSIEFHR1JFR0FURSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BH X0NNRFRBRyhDTURUQUdfQUxURVJfQ0FTVCwgIkFMVEVSIENBU1QiLCB0cnVlLCBmYWxzZSwgZmFs c2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0NPTExBVElPTiwgIkFMVEVSIENPTExB VElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJf Q09OU1RSQUlOVCwgIkFMVEVSIENPTlNUUkFJTlQiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNl KQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9DT05WRVJTSU9OLCAiQUxURVIgQ09OVkVSU0lPTiIs IHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfREFUQUJB U0UsICJBTFRFUiBEQVRBQkFTRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01E VEFHKENNRFRBR19BTFRFUl9ERUZBVUxUX1BSSVZJTEVHRVMsICJBTFRFUiBERUZBVUxUIFBSSVZJ TEVHRVMiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVS X0RPTUFJTiwgIkFMVEVSIERPTUFJTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NN RFRBRyhDTURUQUdfQUxURVJfRVZFTlRfVFJJR0dFUiwgIkFMVEVSIEVWRU5UIFRSSUdHRVIiLCBm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfRVhURU5T SU9OLCAiQUxURVIgRVhURU5TSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01E VEFHKENNRFRBR19BTFRFUl9GT1JFSUdOX0RBVEFfV1JBUFBFUiwgIkFMVEVSIEZPUkVJR04gREFU QSBXUkFQUEVSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19B TFRFUl9GT1JFSUdOX1RBQkxFLCAiQUxURVIgRk9SRUlHTiBUQUJMRSIsIHRydWUsIGZhbHNlLCBm YWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfRlVOQ1RJT04sICJBTFRFUiBGVU5D VElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJf SU5ERVgsICJBTFRFUiBJTkRFWCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRB RyhDTURUQUdfQUxURVJfTEFOR1VBR0UsICJBTFRFUiBMQU5HVUFHRSIsIHRydWUsIGZhbHNlLCBm YWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfTEFSR0VfT0JKRUNULCAiQUxURVIg TEFSR0UgT0JKRUNUIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURU QUdfQUxURVJfTUFURVJJQUxJWkVEX1ZJRVcsICJBTFRFUiBNQVRFUklBTElaRUQgVklFVyIsIHRy dWUsIHRydWUsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9PUEVSQVRPUiwg IkFMVEVSIE9QRVJBVE9SIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENN RFRBR19BTFRFUl9PUEVSQVRPUl9DTEFTUywgIkFMVEVSIE9QRVJBVE9SIENMQVNTIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9PUEVSQVRPUl9GQU1J TFksICJBTFRFUiBPUEVSQVRPUiBGQU1JTFkiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQ R19DTURUQUcoQ01EVEFHX0FMVEVSX1BPTElDWSwgIkFMVEVSIFBPTElDWSIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfUFJPQ0VEVVJFLCAiQUxURVIg UFJPQ0VEVVJFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19B TFRFUl9QVUJMSUNBVElPTiwgIkFMVEVSIFBVQkxJQ0FUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl LCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9ST0xFLCAiQUxURVIgUk9MRSIsIGZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9ST1VUSU5FLCAi QUxURVIgUk9VVElORSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURU QUdfQUxURVJfUlVMRSwgIkFMVEVSIFJVTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQ R19DTURUQUcoQ01EVEFHX0FMVEVSX1NDSEVNQSwgIkFMVEVSIFNDSEVNQSIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfU0VRVUVOQ0UsICJBTFRFUiBT RVFVRU5DRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxU RVJfU0VSVkVSLCAiQUxURVIgU0VSVkVSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdf Q01EVEFHKENNRFRBR19BTFRFUl9TVEFUSVNUSUNTLCAiQUxURVIgU1RBVElTVElDUyIsIHRydWUs IGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfU1VCU0NSSVBUSU9O LCAiQUxURVIgU1VCU0NSSVBUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NN RFRBRyhDTURUQUdfQUxURVJfU1lTVEVNLCAiQUxURVIgU1lTVEVNIiwgZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1RBQkxFLCAiQUxURVIgVEFCTEUi LCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfVEFCTEVT UEFDRSwgIkFMVEVSIFRBQkxFU1BBQ0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BH X0NNRFRBRyhDTURUQUdfQUxURVJfVEVYVF9TRUFSQ0hfQ09ORklHVVJBVElPTiwgIkFMVEVSIFRF WFQgU0VBUkNIIENPTkZJR1VSQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19D TURUQUcoQ01EVEFHX0FMVEVSX1RFWFRfU0VBUkNIX0RJQ1RJT05BUlksICJBTFRFUiBURVhUIFNF QVJDSCBESUNUSU9OQVJZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENN RFRBR19BTFRFUl9URVhUX1NFQVJDSF9QQVJTRVIsICJBTFRFUiBURVhUIFNFQVJDSCBQQVJTRVIi LCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1RFWFRf U0VBUkNIX1RFTVBMQVRFLCAiQUxURVIgVEVYVCBTRUFSQ0ggVEVNUExBVEUiLCB0cnVlLCBmYWxz ZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1RSQU5TRk9STSwgIkFMVEVS IFRSQU5TRk9STSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFH X0FMVEVSX1RSSUdHRVIsICJBTFRFUiBUUklHR0VSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVl KQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9UWVBFLCAiQUxURVIgVFlQRSIsIHRydWUsIHRydWUs IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9VU0VSX01BUFBJTkcsICJBTFRF UiBVU0VSIE1BUFBJTkciLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01E VEFHX0FMVEVSX1ZJRVcsICJBTFRFUiBWSUVXIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQor UEdfQ01EVEFHKENNRFRBR19BTkFMWVpFLCAiQU5BTFlaRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19CRUdJTiwgIkJFR0lOIiwgZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NBTEwsICJDQUxMIiwgZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NIRUNLUE9JTlQsICJDSEVDS1BPSU5U IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NMT1NFLCAi Q0xPU0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ0xP U0VfQ1VSU09SLCAiQ0xPU0UgQ1VSU09SIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQ R19DTURUQUcoQ01EVEFHX0NMT1NFX0NVUlNPUl9BTEwsICJDTE9TRSBDVVJTT1IgQUxMIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NMVVNURVIsICJDTFVT VEVSIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NPTU1F TlQsICJDT01NRU5UIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRB R19DT01NSVQsICJDT01NSVQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRB RyhDTURUQUdfQ09NTUlUX1BSRVBBUkVELCAiQ09NTUlUIFBSRVBBUkVEIiwgZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NPUFksICJDT1BZIiwgZmFsc2UsIGZh bHNlLCB0cnVlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ09QWV9GUk9NLCAiQ09QWSBGUk9N IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9B Q0NFU1NfTUVUSE9ELCAiQ1JFQVRFIEFDQ0VTUyBNRVRIT0QiLCB0cnVlLCBmYWxzZSwgZmFsc2Us IHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9BR0dSRUdBVEUsICJDUkVBVEUgQUdHUkVH QVRFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVf Q0FTVCwgIkNSRUFURSBDQVNUIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFH KENNRFRBR19DUkVBVEVfQ09MTEFUSU9OLCAiQ1JFQVRFIENPTExBVElPTiIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0NPTlNUUkFJTlQsICJDUkVB VEUgQ09OU1RSQUlOVCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01E VEFHX0NSRUFURV9DT05WRVJTSU9OLCAiQ1JFQVRFIENPTlZFUlNJT04iLCB0cnVlLCBmYWxzZSwg ZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9EQVRBQkFTRSwgIkNSRUFURSBE QVRBQkFTRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19D UkVBVEVfRE9NQUlOLCAiQ1JFQVRFIERPTUFJTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkK K1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0VWRU5UX1RSSUdHRVIsICJDUkVBVEUgRVZFTlQgVFJJ R0dFUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DUkVB VEVfRVhURU5TSU9OLCAiQ1JFQVRFIEVYVEVOU0lPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1 ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0ZPUkVJR05fREFUQV9XUkFQUEVSLCAiQ1JFQVRF IEZPUkVJR04gREFUQSBXUkFQUEVSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01E VEFHKENNRFRBR19DUkVBVEVfRk9SRUlHTl9UQUJMRSwgIkNSRUFURSBGT1JFSUdOIFRBQkxFIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRlVOQ1RJ T04sICJDUkVBVEUgRlVOQ1RJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURU QUcoQ01EVEFHX0NSRUFURV9JTkRFWCwgIkNSRUFURSBJTkRFWCIsIHRydWUsIGZhbHNlLCBmYWxz ZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0xBTkdVQUdFLCAiQ1JFQVRFIExBTkdV QUdFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVf TUFURVJJQUxJWkVEX1ZJRVcsICJDUkVBVEUgTUFURVJJQUxJWkVEIFZJRVciLCB0cnVlLCBmYWxz ZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9PUEVSQVRPUiwgIkNSRUFU RSBPUEVSQVRPUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdf Q1JFQVRFX09QRVJBVE9SX0NMQVNTLCAiQ1JFQVRFIE9QRVJBVE9SIENMQVNTIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfT1BFUkFUT1JfRkFNSUxZ LCAiQ1JFQVRFIE9QRVJBVE9SIEZBTUlMWSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BH X0NNRFRBRyhDTURUQUdfQ1JFQVRFX1BPTElDWSwgIkNSRUFURSBQT0xJQ1kiLCB0cnVlLCBmYWxz ZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9QUk9DRURVUkUsICJDUkVB VEUgUFJPQ0VEVVJFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRB R19DUkVBVEVfUFVCTElDQVRJT04sICJDUkVBVEUgUFVCTElDQVRJT04iLCB0cnVlLCBmYWxzZSwg ZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9ST0xFLCAiQ1JFQVRFIFJPTEUi LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1JP VVRJTkUsICJDUkVBVEUgUk9VVElORSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19D TURUQUcoQ01EVEFHX0NSRUFURV9SVUxFLCAiQ1JFQVRFIFJVTEUiLCB0cnVlLCBmYWxzZSwgZmFs c2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9TQ0hFTUEsICJDUkVBVEUgU0NIRU1B IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfU0VR VUVOQ0UsICJDUkVBVEUgU0VRVUVOQ0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19D TURUQUcoQ01EVEFHX0NSRUFURV9TRVJWRVIsICJDUkVBVEUgU0VSVkVSIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfU1RBVElTVElDUywgIkNSRUFU RSBTVEFUSVNUSUNTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRB R19DUkVBVEVfU1VCU0NSSVBUSU9OLCAiQ1JFQVRFIFNVQlNDUklQVElPTiIsIHRydWUsIGZhbHNl LCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9UQUJMRSwgIkNSRUFURSBU QUJMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRF X1RBQkxFX0FTLCAiQ1JFQVRFIFRBQkxFIEFTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkK K1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RBQkxFU1BBQ0UsICJDUkVBVEUgVEFCTEVTUEFDRSIs IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEVY VF9TRUFSQ0hfQ09ORklHVVJBVElPTiwgIkNSRUFURSBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9O IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEVY VF9TRUFSQ0hfRElDVElPTkFSWSwgIkNSRUFURSBURVhUIFNFQVJDSCBESUNUSU9OQVJZIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEVYVF9TRUFS Q0hfUEFSU0VSLCAiQ1JFQVRFIFRFWFQgU0VBUkNIIFBBUlNFUiIsIHRydWUsIGZhbHNlLCBmYWxz ZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RFWFRfU0VBUkNIX1RFTVBMQVRFLCAi Q1JFQVRFIFRFWFQgU0VBUkNIIFRFTVBMQVRFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQor UEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVFJBTlNGT1JNLCAiQ1JFQVRFIFRSQU5TRk9STSIsIHRy dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RSSUdHRVIs ICJDUkVBVEUgVFJJR0dFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhD TURUQUdfQ1JFQVRFX1RZUEUsICJDUkVBVEUgVFlQRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1 ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1VTRVJfTUFQUElORywgIkNSRUFURSBVU0VSIE1B UFBJTkciLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFU RV9WSUVXLCAiQ1JFQVRFIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURU QUcoQ01EVEFHX0RFQUxMT0NBVEUsICJERUFMTE9DQVRFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RFQUxMT0NBVEVfQUxMLCAiREVBTExPQ0FURSBBTEwi LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfREVDTEFSRV9D VVJTT1IsICJERUNMQVJFIENVUlNPUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdf Q01EVEFHKENNRFRBR19ERUxFVEUsICJERUxFVEUiLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNl KQorUEdfQ01EVEFHKENNRFRBR19ESVNDQVJELCAiRElTQ0FSRCIsIGZhbHNlLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19ESVNDQVJEX0FMTCwgIkRJU0NBUkQgQUxMIiwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RJU0NBUkRfUExB TlMsICJESVNDQVJEIFBMQU5TIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURU QUcoQ01EVEFHX0RJU0NBUkRfU0VRVUVOQ0VTLCAiRElTQ0FSRCBTRVFVRU5DRVMiLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRElTQ0FSRF9URU1QLCAiRElT Q0FSRCBURU1QIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFH X0RPLCAiRE8iLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdf RFJPUF9BQ0NFU1NfTUVUSE9ELCAiRFJPUCBBQ0NFU1MgTUVUSE9EIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX0FHR1JFR0FURSwgIkRST1AgQUdHUkVH QVRFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX0NB U1QsICJEUk9QIENBU1QiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01E VEFHX0RST1BfQ09MTEFUSU9OLCAiRFJPUCBDT0xMQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2Us IHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfQ09OU1RSQUlOVCwgIkRST1AgQ09OU1RSQUlO VCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RST1BfQ09O VkVSU0lPTiwgIkRST1AgQ09OVkVSU0lPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BH X0NNRFRBRyhDTURUQUdfRFJPUF9EQVRBQkFTRSwgIkRST1AgREFUQUJBU0UiLCBmYWxzZSwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9ET01BSU4sICJEUk9QIERP TUFJTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9F VkVOVF9UUklHR0VSLCAiRFJPUCBFVkVOVCBUUklHR0VSIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RST1BfRVhURU5TSU9OLCAiRFJPUCBFWFRFTlNJT04i LCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfRk9SRUlH Tl9EQVRBX1dSQVBQRVIsICJEUk9QIEZPUkVJR04gREFUQSBXUkFQUEVSIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX0ZPUkVJR05fVEFCTEUsICJEUk9Q IEZPUkVJR04gVEFCTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01E VEFHX0RST1BfRlVOQ1RJT04sICJEUk9QIEZVTkNUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0 cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX0lOREVYLCAiRFJPUCBJTkRFWCIsIHRydWUsIGZh bHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9MQU5HVUFHRSwgIkRST1Ag TEFOR1VBR0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RS T1BfTUFURVJJQUxJWkVEX1ZJRVcsICJEUk9QIE1BVEVSSUFMSVpFRCBWSUVXIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX09QRVJBVE9SLCAiRFJPUCBP UEVSQVRPUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJP UF9PUEVSQVRPUl9DTEFTUywgIkRST1AgT1BFUkFUT1IgQ0xBU1MiLCB0cnVlLCBmYWxzZSwgZmFs c2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfT1BFUkFUT1JfRkFNSUxZLCAiRFJPUCBP UEVSQVRPUiBGQU1JTFkiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01E VEFHX0RST1BfT1dORUQsICJEUk9QIE9XTkVEIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkK K1BHX0NNRFRBRyhDTURUQUdfRFJPUF9QT0xJQ1ksICJEUk9QIFBPTElDWSIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9QUk9DRURVUkUsICJEUk9QIFBS T0NFRFVSRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJP UF9QVUJMSUNBVElPTiwgIkRST1AgUFVCTElDQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRy dWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfUk9MRSwgIkRST1AgUk9MRSIsIGZhbHNlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1JPVVRJTkUsICJEUk9QIFJP VVRJTkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1Bf UlVMRSwgIkRST1AgUlVMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhD TURUQUdfRFJPUF9TQ0hFTUEsICJEUk9QIFNDSEVNQSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1 ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9TRVFVRU5DRSwgIkRST1AgU0VRVUVOQ0UiLCB0cnVl LCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfU0VSVkVSLCAiRFJP UCBTRVJWRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RS T1BfU1RBVElTVElDUywgIkRST1AgU1RBVElTVElDUyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1 ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9TVUJTQ1JJUFRJT04sICJEUk9QIFNVQlNDUklQVElP TiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RST1BfVEFC TEUsICJEUk9QIFRBQkxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENN RFRBR19EUk9QX1RBQkxFU1BBQ0UsICJEUk9QIFRBQkxFU1BBQ0UiLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9URVhUX1NFQVJDSF9DT05GSUdVUkFU SU9OLCAiRFJPUCBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl LCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1RFWFRfU0VBUkNIX0RJQ1RJT05BUlksICJE Uk9QIFRFWFQgU0VBUkNIIERJQ1RJT05BUlkiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQ R19DTURUQUcoQ01EVEFHX0RST1BfVEVYVF9TRUFSQ0hfUEFSU0VSLCAiRFJPUCBURVhUIFNFQVJD SCBQQVJTRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RS T1BfVEVYVF9TRUFSQ0hfVEVNUExBVEUsICJEUk9QIFRFWFQgU0VBUkNIIFRFTVBMQVRFIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1RSQU5TRk9STSwg IkRST1AgVFJBTlNGT1JNIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENN RFRBR19EUk9QX1RSSUdHRVIsICJEUk9QIFRSSUdHRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRy dWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfVFlQRSwgIkRST1AgVFlQRSIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9VU0VSX01BUFBJTkcsICJEUk9Q IFVTRVIgTUFQUElORyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURU QUdfRFJPUF9WSUVXLCAiRFJPUCBWSUVXIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdf Q01EVEFHKENNRFRBR19FWEVDVVRFLCAiRVhFQ1VURSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQorUEdfQ01EVEFHKENNRFRBR19FWFBMQUlOLCAiRVhQTEFJTiIsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19GRVRDSCwgIkZFVENIIiwgZmFsc2UsIGZh bHNlLCB0cnVlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfR1JBTlQsICJHUkFOVCIsIHRydWUs IGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfR1JBTlRfUk9MRSwgIkdSQU5U IFJPTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfSU1Q T1JUX0ZPUkVJR05fU0NIRU1BLCAiSU1QT1JUIEZPUkVJR04gU0NIRU1BIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19JTlNFUlQsICJJTlNFUlQiLCBmYWxzZSwg ZmFsc2UsIHRydWUsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19MSVNURU4sICJMSVNURU4iLCBm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfTE9BRCwgIkxPQUQi LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfTE9DS19UQUJM RSwgIkxPQ0sgVEFCTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhD TURUQUdfTUVSR0UsICJNRVJHRSIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCitQR19DTURU QUcoQ01EVEFHX01PVkUsICJNT1ZFIiwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkKK1BHX0NN RFRBRyhDTURUQUdfTk9USUZZLCAiTk9USUZZIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up CitQR19DTURUQUcoQ01EVEFHX1BSRVBBUkUsICJQUkVQQVJFIiwgZmFsc2UsIGZhbHNlLCBmYWxz ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1BSRVBBUkVfVFJBTlNBQ1RJT04sICJQUkVQQVJF IFRSQU5TQUNUSU9OIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01E VEFHX1JFQVNTSUdOX09XTkVELCAiUkVBU1NJR04gT1dORUQiLCBmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfUkVGUkVTSF9NQVRFUklBTElaRURfVklFVywgIlJF RlJFU0ggTUFURVJJQUxJWkVEIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19D TURUQUcoQ01EVEFHX1JFSU5ERVgsICJSRUlOREVYIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs c2UpCitQR19DTURUQUcoQ01EVEFHX1JFTEVBU0UsICJSRUxFQVNFIiwgZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1JFU0VULCAiUkVTRVQiLCBmYWxzZSwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfUkVWT0tFLCAiUkVWT0tFIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19SRVZPS0VfUk9MRSwgIlJF Vk9LRSBST0xFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFH X1JPTExCQUNLLCAiUk9MTEJBQ0siLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NN RFRBRyhDTURUQUdfUk9MTEJBQ0tfUFJFUEFSRUQsICJST0xMQkFDSyBQUkVQQVJFRCIsIGZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19TQVZFUE9JTlQsICJTQVZF UE9JTlQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfU0VD VVJJVFlfTEFCRUwsICJTRUNVUklUWSBMQUJFTCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkK K1BHX0NNRFRBRyhDTURUQUdfU0VMRUNULCAiU0VMRUNUIiwgZmFsc2UsIGZhbHNlLCB0cnVlLCBm YWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfU0VMRUNUX0ZPUl9LRVlfU0hBUkUsICJTRUxFQ1QgRk9S IEtFWSBTSEFSRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRB R19TRUxFQ1RfRk9SX05PX0tFWV9VUERBVEUsICJTRUxFQ1QgRk9SIE5PIEtFWSBVUERBVEUiLCBm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfU0VMRUNUX0ZPUl9T SEFSRSwgIlNFTEVDVCBGT1IgU0hBUkUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BH X0NNRFRBRyhDTURUQUdfU0VMRUNUX0ZPUl9VUERBVEUsICJTRUxFQ1QgRk9SIFVQREFURSIsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19TRUxFQ1RfSU5UTywg IlNFTEVDVCBJTlRPIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURU QUdfU0VULCAiU0VUIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01E VEFHX1NFVF9DT05TVFJBSU5UUywgIlNFVCBDT05TVFJBSU5UUyIsIGZhbHNlLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19TSE9XLCAiU0hPVyIsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19TVEFSVF9UUkFOU0FDVElPTiwgIlNUQVJU IFRSQU5TQUNUSU9OIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01E VEFHX1RSVU5DQVRFX1RBQkxFLCAiVFJVTkNBVEUgVEFCTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfVU5MSVNURU4sICJVTkxJU1RFTiIsIGZhbHNlLCBm YWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19VUERBVEUsICJVUERBVEUiLCBm YWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19WQUNVVU0sICJWQUNV VU0iLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggMzFmODRlOTBlYi4u ZDc1MzM0YTgxOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKKysrIGIvc3Jj L2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTE3LDEwICsxNywxMiBAQAogI2luY2x1ZGUgImFjY2Vz cy90dXBkZXNjLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJjYXRhbG9n L2NhdGFsb2cuaCIKKyNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2NsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19pbmRleC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24uaCIKICNpbmNsdWRlICJub2Rlcy9iaXRtYXBz ZXQuaCIKKyNpbmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgogI2luY2x1ZGUgInBhcnRpdGlv bmluZy9wYXJ0ZGVmcy5oIgogI2luY2x1ZGUgInJld3JpdGUvcHJzMmxvY2suaCIKICNpbmNsdWRl ICJzdG9yYWdlL2Jsb2NrLmgiCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BzcWwub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dAppbmRleCBjMDBl MjgzNjFjLi4xYzZmMzMwOTVjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BzcWwub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKQEAgLTYy MjMsOSArNjIyMyw5IEBAIExpc3Qgb2Ygc2NoZW1hcwogKDAgcm93cykKIAogXGRScCAibm8uc3Vj aC5wdWJsaWNhdGlvbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVi bGljYXRpb25zCi0gTmFtZSB8IE93bmVyIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRp b25zCisgTmFtZSB8IE93bmVyIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLSstLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQogKDAgcm93cykKIAogXGRScyAibm8uc3VjaC5zdWJzY3Jp cHRpb24iCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9u Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IDQy N2Y4N2VhMDcuLjdkODY5NzdiMjkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGlj YXRpb24ub3V0CkBAIC0zMCwyMCArMzAsMjAgQEAgRVJST1I6ICBjb25mbGljdGluZyBvciByZWR1 bmRhbnQgb3B0aW9ucwogTElORSAxOiAuLi51Yl94eHggV0lUSCAocHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QgPSAndHJ1ZScsIHB1Ymxpc2hfdmkuLi4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBcZFJwCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMK LSAgICAgICAgTmFtZSAgICAgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCi0gdGVz dHB1Yl9kZWZhdWx0ICAgIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IGYgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNh dGlvbnMKKyAgICAgICAgTmFtZSAgICAgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdGVzdHBpYl9pbnNfdHJ1bmN0IHwg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgdGVzdHB1Yl9kZWZhdWx0 ICAgIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCBmICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCiAoMiByb3dzKQog CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2RlZmF1bHQgU0VUIChwdWJsaXNoID0gJ2luc2Vy dCwgdXBkYXRlLCBkZWxldGUnKTsKIFxkUnAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucwotICAgICAgICBOYW1lICAgICAg ICB8ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gdGVzdHBpYl9pbnNfdHJ1 bmN0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBm ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKLSB0ZXN0cHViX2RlZmF1bHQgICAgfCBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucworICAgICAgICBOYW1l ICAgICAgICB8ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBE RExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyB0ZXN0cGliX2luc190cnVuY3QgfCByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAg ICAgICB8IGYgICAgICAgICB8IGYKKyB0ZXN0cHViX2RlZmF1bHQgICAgfCByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKICgyIHJvd3MpCiAKIC0tLSBhZGRpbmcgdGFibGVz CkBAIC04NywxMCArODcsMTAgQEAgUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIC0tIHNob3Vs ZCBiZSBhYmxlIHRvIGFkZCBzY2hlbWEgdG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KIEFMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rl c3Q7CiBcZFJwKyB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCiBUYWJsZXMgZnJvbSBzY2hl bWFzOgpAQCAtOTksMjAgKzk5LDIwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBzaG91bGQg YmUgYWJsZSB0byBkcm9wIHNjaGVtYSBmcm9tICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCiBBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJf dGVzdDsKIFxkUnArIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQorICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKIAogLS0gc2hvdWxkIGJl IGFibGUgdG8gc2V0IHNjaGVtYSB0byAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgogQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsK IFxkUnArIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYK IFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0IgogCkBAIC0xMjMsMTAgKzEyMywx MCBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRk9SIFRBQkxFUyBJTiBT Q0hFTUEgcHViX3Rlc3Q7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JfdGJsX3NjaGVt YSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCwgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9u b3BrOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfZm9yX3RibF9z Y2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9m b3JfdGJsX3NjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9mb3JfdGJsX3NjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAg ICAicHViX3Rlc3QudGVzdHB1Yl9ub3BrIgogVGFibGVzIGZyb20gc2NoZW1hczoKQEAgLTEzNSwx MCArMTM1LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBzaG91bGQgYmUgYWJsZSB0byBh ZGQgYSB0YWJsZSBvZiB0aGUgc2FtZSBzY2hlbWEgdG8gdGhlIHNjaGVtYSBwdWJsaWNhdGlvbgog QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgQUREIFRBQkxFIHB1Yl90ZXN0LnRl c3RwdWJfbm9wazsKIFxkUnArIHRlc3RwdWJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hCisgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiBUYWJs ZXMgZnJvbSBzY2hlbWFzOgpAQCAtMTQ3LDEwICsxNDcsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1h czoKIC0tIHNob3VsZCBiZSBhYmxlIHRvIGRyb3AgdGhlIHRhYmxlCiBBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX2ZvcnNjaGVtYSBEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKIFxk UnArIHRlc3RwdWJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgog VGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QiCiAKQEAgLTE2MSwxMCArMTYxLDEw IEBAIEVSUk9SOiAgcmVsYXRpb24gInRlc3RwdWJfbm9wayIgaXMgbm90IHBhcnQgb2YgdGhlIHB1 YmxpY2F0aW9uCiAtLSBzaG91bGQgYmUgYWJsZSB0byBzZXQgdGFibGUgdG8gc2NoZW1hIHB1Ymxp Y2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgVEFCTEUgcHVi X3Rlc3QudGVzdHB1Yl9ub3BrOwogXGRScCsgdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYQotICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9w ayIKIApAQCAtMTg2LDEwICsxODYsMTAgQEAgUHVibGljYXRpb25zOgogICAgICJ0ZXN0cHViX2Zv cmFsbHRhYmxlcyIKIAogXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXMKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVzCi0gICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXMKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgfCBmICAgICAgICAgfCBmCiAoMSByb3cpCiAKIERST1AgVEFCTEUgdGVzdHB1Yl90Ymwy OwpAQCAtMjAxLDE5ICsyMDEsMTkgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBU QUJMRSB0ZXN0cHViX3RibDM7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxF IE9OTFkgdGVzdHB1Yl90YmwzOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRl c3RwdWIzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViMwotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWIzCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVz dHB1Yl90YmwzIgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwzYSIKIAogXGRScCsgdGVzdHB1YjQK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0 Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjQKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3Ri bDMiCiAKQEAgLTIzNCwxMCArMjM0LDEwIEBAIFVQREFURSB0ZXN0cHViX3BhcnRlZDEgU0VUIGEg PSAxOwogLS0gb25seSBwYXJlbnQgaXMgbGlzdGVkIGFzIGJlaW5nIGluIHB1YmxpY2F0aW9uLCBu b3QgdGhlIHBhcnRpdGlvbgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0ZWQgQURE IFRBQkxFIHRlc3RwdWJfcGFydGVkOwogXGRScCsgdGVzdHB1Yl9mb3JwYXJ0ZWQKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnBhcnRlZAotICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JwYXJ0ZWQKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3Bh cnRlZCIKIApAQCAtMjUyLDEwICsyNTIsMTAgQEAgQUxURVIgVEFCTEUgdGVzdHB1Yl9wYXJ0ZWQg REVUQUNIIFBBUlRJVElPTiB0ZXN0cHViX3BhcnRlZDE7CiBVUERBVEUgdGVzdHB1Yl9wYXJ0ZWQx IFNFVCBhID0gMTsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ycGFydGVkIFNFVCAocHVi bGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKTsKIFxkUnArIHRlc3RwdWJfZm9ycGFydGVk Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3Jw YXJ0ZWQKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9y cGFydGVkCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERE THMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAogVGFibGVzOgogICAgICJwdWJsaWMu dGVzdHB1Yl9wYXJ0ZWQiCiAKQEAgLTI4NCwxMCArMjg0LDEwIEBAIFNFVCBjbGllbnRfbWluX21l c3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNSBGT1IgVEFCTEUg dGVzdHB1Yl9yZl90YmwxLCB0ZXN0cHViX3JmX3RibDIgV0hFUkUgKGMgPD4gJ3Rlc3QnIEFORCBk IDwgNSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQnKTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXM7CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1YjUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAg ICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViNQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAg ICAicHVibGljLnRlc3RwdWJfcmZfdGJsMSIKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMiIg V0hFUkUgKChjIDw+ICd0ZXN0Jzo6dGV4dCkgQU5EIChkIDwgNSkpCkBAIC0zMDAsMTAgKzMwMCwx MCBAQCBUYWJsZXM6CiAKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEFERCBUQUJMRSB0ZXN0 cHViX3JmX3RibDMgV0hFUkUgKGUgPiAxMDAwIEFORCBlIDwgMjAwMCk7CiBcZFJwKyB0ZXN0cHVi NQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAg IHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJf cmZfdGJsMSIKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMiIgV0hFUkUgKChjIDw+ICd0ZXN0 Jzo6dGV4dCkgQU5EIChkIDwgNSkpCkBAIC0zMTksMTAgKzMxOSwxMCBAQCBQdWJsaWNhdGlvbnM6 CiAKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IERST1AgVEFCTEUgdGVzdHB1Yl9yZl90Ymwy OwogXGRScCsgdGVzdHB1YjUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWI1Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAg ICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg VGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAg InB1YmxpYy50ZXN0cHViX3JmX3RibDEiCiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDMiIFdI RVJFICgoZSA+IDEwMDApIEFORCAoZSA8IDIwMDApKQpAQCAtMzMwLDEwICszMzAsMTAgQEAgVGFi bGVzOgogLS0gcmVtb3ZlIHRlc3RwdWJfcmZfdGJsMSBhbmQgYWRkIHRlc3RwdWJfcmZfdGJsMyBh Z2FpbiAoYW5vdGhlciBXSEVSRSBleHByZXNzaW9uKQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 YjUgU0VUIFRBQkxFIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA+IDMwMCBBTkQgZSA8IDUwMCk7 CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAg ICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViNQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBU YWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAi cHVibGljLnRlc3RwdWJfcmZfdGJsMyIgV0hFUkUgKChlID4gMzAwKSBBTkQgKGUgPCA1MDApKQog CkBAIC0zNjYsMTAgKzM2NiwxMCBAQCBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7 CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgxIEZPUiBUQUJMRSB0ZXN0cHViX3Jm X3RibDEsIE9OTFkgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlIDwgOTk5KSBXSVRIIChwdWJsaXNo ID0gJ2luc2VydCcpOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJf c3ludGF4MQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViX3N5bnRheDEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBm CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViX3N5bnRheDEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFi bGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1 YmxpYy50ZXN0cHViX3JmX3RibDEiCiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDMiIFdIRVJF IChlIDwgOTk5KQpAQCAtMzc5LDEwICszNzksMTAgQEAgU0VUIGNsaWVudF9taW5fbWVzc2FnZXMg PSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc3ludGF4MiBGT1IgVEFCTEUg dGVzdHB1Yl9yZl90YmwxLCB0ZXN0cHViX3JmX3NjaGVtYTEudGVzdHB1Yl9yZl90Ymw1IFdIRVJF IChoIDwgOTk5KSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCcpOwogUkVTRVQgY2xpZW50X21pbl9t ZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfc3ludGF4MgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3N5bnRheDIKLSAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8 IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3N5bnRheDIKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAg ICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDEiCiAgICAgInRlc3Rw dWJfcmZfc2NoZW1hMS50ZXN0cHViX3JmX3RibDUiIFdIRVJFIChoIDwgOTk5KQpAQCAtNDk3LDEw ICs0OTcsMTAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IEZPUiBUQUJMRVMgSU4gU0NI RU1BIHRlc3RwdWJfcmZfc2NoZW1hMjsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBU QUJMRVMgSU4gU0NIRU1BIHRlc3RwdWJfcmZfc2NoZW1hMiwgVEFCTEUgdGVzdHB1Yl9yZl9zY2hl bWEyLnRlc3RwdWJfcmZfdGJsNiBXSEVSRSAoaSA8IDk5KTsKIFJFU0VUIGNsaWVudF9taW5fbWVz c2FnZXM7CiBcZFJwKyB0ZXN0cHViNgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjYKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViNgorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoK ICAgICAidGVzdHB1Yl9yZl9zY2hlbWEyLnRlc3RwdWJfcmZfdGJsNiIgV0hFUkUgKGkgPCA5OSkK IFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBAIC03MTQsMTAgKzcxNCwxMCBAQCBDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1Yl90YWJsZV9pbnMgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHRydW5jYXRl Jyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl90YWJsZV9pbnMgQUREIFRBQkxFIHRlc3RwdWJfdGJsNSAoYSk7CQktLSBvawogXGRScCsgdGVz dHB1Yl90YWJsZV9pbnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViX3RhYmxlX2lucwotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IHQgICAg ICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1Yl90YWJsZV9pbnMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6 CiAgICAgInB1YmxpYy50ZXN0cHViX3RibDUiIChhKQogCkBAIC04OTEsMTAgKzg5MSwxMCBAQCBD UkVBVEUgVEFCTEUgdGVzdHB1Yl90YmxfYm90aF9maWx0ZXJzIChhIGludCwgYiBpbnQsIGMgaW50 LCBQUklNQVJZIEtFWSAoYSxjKSk7CiBBTFRFUiBUQUJMRSB0ZXN0cHViX3RibF9ib3RoX2ZpbHRl cnMgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnNf cGtleTsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYm90aF9maWx0ZXJzIEFERCBUQUJMRSB0 ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMgKGEsYykgV0hFUkUgKGMgIT0gMSk7CiBcZFJwKyB0ZXN0 cHViX2JvdGhfZmlsdGVycwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1Yl9ib3RoX2ZpbHRlcnMKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX2JvdGhfZmlsdGVycworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRh YmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsX2JvdGhfZmlsdGVycyIgKGEsIGMpIFdIRVJF IChjIDw+IDEpCiAKQEAgLTEwOTksMTAgKzEwOTksMTAgQEAgRVJST1I6ICByZWxhdGlvbiAidGVz dHB1Yl90YmwxIiBpcyBhbHJlYWR5IG1lbWJlciBvZiBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3J0 YmwKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRibCBGT1IgVEFCTEUgdGVzdHB1Yl90 YmwxOwogRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3J0YmwiIGFscmVhZHkgZXhpc3Rz CiBcZFJwKyB0ZXN0cHViX2ZvcnRibAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YmwKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRibAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRh YmxlczoKICAgICAicHViX3Rlc3QudGVzdHB1Yl9ub3BrIgogICAgICJwdWJsaWMudGVzdHB1Yl90 YmwxIgpAQCAtMTE0MCwxMCArMTE0MCwxMCBAQCBQdWJsaWNhdGlvbnM6CiAgICAgInRlc3RwdWJf Zm9ydGJsIgogCiBcZFJwKyB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9kZWZhdWx0Ci0gICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9kZWZhdWx0CisgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAg ICAgIHwgZgogVGFibGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiAgICAgInB1Ymxp Yy50ZXN0cHViX3RibDEiCkBAIC0xMjIxLDEwICsxMjIxLDEwIEBAIFJFVk9LRSBDUkVBVEUgT04g REFUQUJBU0UgcmVncmVzc2lvbiBGUk9NIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7CiBEUk9Q IFRBQkxFIHRlc3RwdWJfcGFydGVkOwogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDE7CiBcZFJwKyB0 ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1Yl9kZWZhdWx0Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAg ICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1Yl9kZWZhdWx0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgogKDEgcm93KQog CiAtLSBmYWlsIC0gbXVzdCBiZSBvd25lciBvZiBwdWJsaWNhdGlvbgpAQCAtMTIzNCwyMCArMTIz NCwyMCBAQCBFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgcHVibGljYXRpb24gdGVzdHB1Yl9kZWZh dWx0CiBSRVNFVCBST0xFOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9kZWZhdWx0IFJFTkFN RSBUTyB0ZXN0cHViX2ZvbzsKIFxkUnAgdGVzdHB1Yl9mb28KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucwotICAgIE5hbWUgICAg IHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHRlc3RwdWJfZm9vIHwgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucworICAgIE5hbWUgICAgIHwgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdGVzdHB1Yl9m b28gfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKICgxIHJvdykKIAog LS0gcmVuYW1lIGJhY2sgdG8ga2VlcCB0aGUgcmVzdCBzaW1wbGUKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9vIFJFTkFNRSBUTyB0ZXN0cHViX2RlZmF1bHQ7CiBBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX2RlZmF1bHQgT1dORVIgVE8gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKIFxk UnAgdGVzdHB1Yl9kZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSB0ZXN0cHViX2RlZmF1bHQgfCByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQorIHRlc3RwdWJfZGVmYXVsdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjIgfCBmICAgICAg ICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAg ICB8IGYKICgxIHJvdykKIAogLS0gYWRkaW5nIHNjaGVtYXMgYW5kIHRhYmxlcwpAQCAtMTI2Mywx OSArMTI2MywxOSBAQCBDUkVBVEUgVEFCTEUgIkNVUlJFTlRfU0NIRU1BIi4iQ1VSUkVOVF9TQ0hF TUEiKGlkIGludCk7CiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0MTsKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKIENSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViMl9mb3JzY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHVi X3Rlc3QxLCBwdWJfdGVzdDIsIHB1Yl90ZXN0MzsKIFxkUnArIHRlc3RwdWIyX2ZvcnNjaGVtYQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNj aGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3Jz Y2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERM cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgog ICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTEyODksNDQgKzEyODksNDQgQEAg Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2X2ZvcnNjaGVtYSBGT1IgVEFCTEVTIElOIFNDSEVN QSAiQ1VSUkVOVF9TQ0hFTUEiLCBDVVIKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRh YmxlIEZPUiBUQUJMRSAiQ1VSUkVOVF9TQ0hFTUEiLiJDVVJSRU5UX1NDSEVNQSI7CiBSRVNFVCBj bGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjNfZm9yc2NoZW1hCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1hCi0gICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQorICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Ymxp YyIKIAogXGRScCsgdGVzdHB1YjRfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjRfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgIkNVUlJFTlRfU0NIRU1BIgogCiBc ZFJwKyB0ZXN0cHViNV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViNV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1YjVfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAiQ1VSUkVOVF9TQ0hFTUEiCiAgICAgInB1Ymxp YyIKIAogXGRScCsgdGVzdHB1YjZfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjZfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI2X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgIkNVUlJFTlRfU0NIRU1BIgogICAg ICJwdWJsaWMiCiAKIFxkUnArIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IGYKIFRhYmxlczoKICAgICAiQ1VSUkVOVF9TQ0hFTUEuQ1VSUkVOVF9TQ0hFTUEi CiAKQEAgLTEzNjAsMTAgKzEzNjAsMTAgQEAgRVJST1I6ICBzY2hlbWEgInRlc3RwdWJfdmlldyIg ZG9lcyBub3QgZXhpc3QKIC0tIGRyb3BwaW5nIHRoZSBzY2hlbWEgc2hvdWxkIHJlZmxlY3QgdGhl IGNoYW5nZSBpbiBwdWJsaWNhdGlvbgogRFJPUCBTQ0hFTUEgcHViX3Rlc3QzOwogXGRScCsgdGVz dHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxl cyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTM3 MSwyMCArMTM3MSwyMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gcmVuYW1pbmcgdGhlIHNj aGVtYSBzaG91bGQgcmVmbGVjdCB0aGUgY2hhbmdlIGluIHB1YmxpY2F0aW9uCiBBTFRFUiBTQ0hF TUEgcHViX3Rlc3QxIFJFTkFNRSB0byBwdWJfdGVzdDFfcmVuYW1lZDsKIFxkUnArIHRlc3RwdWIy X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViMl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJv bSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDFfcmVuYW1lZCIKICAgICAicHViX3Rlc3QyIgogCiBB TFRFUiBTQ0hFTUEgcHViX3Rlc3QxX3JlbmFtZWQgUkVOQU1FIHRvIHB1Yl90ZXN0MTsKIFxkUnAr IHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBU YWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAg LTEzOTIsMTAgKzEzOTIsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIGFsdGVyIHB1Ymxp Y2F0aW9uIGFkZCBzY2hlbWEKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBB REQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3Jz Y2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9y c2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERE THMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoK ICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xNDA0LDEwICsxNDA0LDEwIEBA IFRhYmxlcyBmcm9tIHNjaGVtYXM6CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hl bWEgQUREIFRBQkxFUyBJTiBTQ0hFTUEgbm9uX2V4aXN0ZW50X3NjaGVtYTsKIEVSUk9SOiAgc2No ZW1hICJub25fZXhpc3RlbnRfc2NoZW1hIiBkb2VzIG5vdCBleGlzdAogXGRScCsgdGVzdHB1YjFf Zm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9t IHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTQxNiwxMCAr MTQxNiwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 YjFfZm9yc2NoZW1hIEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MTsKIEVSUk9SOiAgc2No ZW1hICJwdWJfdGVzdDEiIGlzIGFscmVhZHkgbWVtYmVyIG9mIHB1YmxpY2F0aW9uICJ0ZXN0cHVi MV9mb3JzY2hlbWEiCiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgog ICAgICJwdWJfdGVzdDIiCkBAIC0xNDI3LDEwICsxNDI3LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVt YXM6CiAtLSBhbHRlciBwdWJsaWNhdGlvbiBkcm9wIHNjaGVtYQogQUxURVIgUFVCTElDQVRJT04g dGVzdHB1YjFfZm9yc2NoZW1hIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7CiBcZFJw KyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgog VGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCkBAIC0xNDM4LDEwICsxNDM4 LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9m b3JzY2hlbWEgRFJPUCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MjsKIEVSUk9SOiAgdGFibGVz IGZyb20gc2NoZW1hICJwdWJfdGVzdDIiIGFyZSBub3QgcGFydCBvZiB0aGUgcHVibGljYXRpb24K IFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTE0NDksMjkg KzE0NDksMjkgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWIxX2ZvcnNjaGVtYSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgbm9uX2V4aXN0ZW50X3NjaGVtYTsK IEVSUk9SOiAgc2NoZW1hICJub25fZXhpc3RlbnRfc2NoZW1hIiBkb2VzIG5vdCBleGlzdAogXGRS cCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYK IFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIAogLS0gZHJvcCBhbGwgc2No ZW1hcwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1AgVEFCTEVTIElO IFNDSEVNQSBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgZgogKDEgcm93KQogCiAtLSBhbHRlciBwdWJsaWNhdGlvbiBz ZXQgbXVsdGlwbGUgc2NoZW1hCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEg U0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVzdDI7CiBcZFJwKyB0ZXN0cHVi MV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZy b20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xNDgwLDEw ICsxNDgwLDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViMV9mb3JzY2hlbWEgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgbm9uX2V4aXN0ZW50X3NjaGVtYTsK IEVSUk9SOiAgc2NoZW1hICJub25fZXhpc3RlbnRfc2NoZW1hIiBkb2VzIG5vdCBleGlzdAogXGRS cCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYK IFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpA QCAtMTQ5MiwxMCArMTQ5MiwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gcmVtb3Zpbmcg dGhlIGR1cGxpY2F0ZSBzY2hlbWFzCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hl bWEgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0 cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVz IGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCkBAIC0xNTc0LDE4ICsxNTc0LDE4IEBA IFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViM19mb3JzY2hlbWE7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVz dHB1YjNfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjNfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKICgxIHJv dykKIAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjNfZm9yc2NoZW1hIFNFVCBUQUJMRVMgSU4g U0NIRU1BIHB1Yl90ZXN0MTsKIFxkUnArIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVz dDEiCiAKQEAgLTE1OTUsMjAgKzE1OTUsMjAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJf Zm9yc2NoZW1hX2ZvcnRhYmxlIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MSwgVEEKIENS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYSBGT1IgVEFCTEUgcHVi X3Rlc3QyLnRibDEsIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogUkVTRVQgY2xpZW50X21p bl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfZm9yc2NoZW1hX2ZvcnRhYmxlCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYV9mb3J0YWJsZQot ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hX2ZvcnRh YmxlCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJfdGVzdDIu dGJsMSIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIAogXGRScCsgdGVz dHB1Yl9mb3J0YWJsZV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfZm9ydGFibGVfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0Mi50YmwxIgogVGFibGVzIGZyb20gc2No ZW1hczoKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMDk0NjZkZWVlYS4uYmM3NWIxMGNm MSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTU2Miw2ICs1NjIsNyBAQCBEZWZFbGVt QWN0aW9uCiBEZWZhdWx0QUNMSW5mbwogRGVmaW5lU3RtdAogRGVsZXRlU3RtdAorRGVwYXJzZWRD b21tYW5kVHlwZQogRGVwZW5kZW5jeUdlbmVyYXRvcgogRGVwZW5kZW5jeUdlbmVyYXRvckRhdGEK IERlcGVuZGVuY3lUeXBlCkBAIC0xNDUzLDYgKzE0NTQsOCBAQCBMb2dpY2FsRGVjb2RlQmVnaW5Q cmVwYXJlQ0IKIExvZ2ljYWxEZWNvZGVDaGFuZ2VDQgogTG9naWNhbERlY29kZUNvbW1pdENCCiBM b2dpY2FsRGVjb2RlQ29tbWl0UHJlcGFyZWRDQgorTG9naWNhbERlY29kZURETE1lc3NhZ2VDQgor TG9naWNhbERlY29kZVN0cmVhbURETE1lc3NhZ2VDQgogTG9naWNhbERlY29kZUZpbHRlckJ5T3Jp Z2luQ0IKIExvZ2ljYWxEZWNvZGVGaWx0ZXJQcmVwYXJlQ0IKIExvZ2ljYWxEZWNvZGVNZXNzYWdl Q0IKQEAgLTIzMTAsNiArMjMxMyw4IEBAIFJlb3JkZXJCdWZmZXJDaGFuZ2UKIFJlb3JkZXJCdWZm ZXJDaGFuZ2VUeXBlCiBSZW9yZGVyQnVmZmVyQ29tbWl0Q0IKIFJlb3JkZXJCdWZmZXJDb21taXRQ cmVwYXJlZENCCitSZW9yZGVyQnVmZmVyRERMTWVzc2FnZUNCCitSZW9yZGVyQnVmZmVyU3RyZWFt RERMTWVzc2FnZUNCCiBSZW9yZGVyQnVmZmVyRGlza0NoYW5nZQogUmVvcmRlckJ1ZmZlckl0ZXJU WE5FbnRyeQogUmVvcmRlckJ1ZmZlckl0ZXJUWE5TdGF0ZQotLSAKMi4zMC4wLndpbmRvd3MuMgoK --_007_OS0PR01MB571614EE7EEDBF7049DA4EAE94939OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0003-Deparser-for-INDEX-DDL-commands-2023_04_04.patch" Content-Description: 0003-Deparser-for-INDEX-DDL-commands-2023_04_04.patch Content-Disposition: attachment; filename="0003-Deparser-for-INDEX-DDL-commands-2023_04_04.patch"; size=15692; creation-date="Tue, 04 Apr 2023 03:07:06 GMT"; modification-date="Tue, 04 Apr 2023 03:13:07 GMT" Content-Transfer-Encoding: base64 RnJvbSBmZDE5MDM2ZTZjYTAzYTdiOGQxZDE2ZWZiOTRmMGY3Mjc5ZDE5NTI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMDk6NDk6NTAgKzA4MDAKU3ViamVjdDogW1BBVENIIDMv Nl0gRGVwYXJzZXIgZm9yIElOREVYIERETCBjb21tYW5kcwoKLS0tCiBkb2Mvc3JjL3NnbWwvbG9n aWNhbC1yZXBsaWNhdGlvbi5zZ21sIHwgIDE4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kZGxf ZGVwYXJzZS5jICAgIHwgMzc1ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNo YW5nZWQsIDM4OSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDZlZDM4ZWU2YzEuLmUxNGFiMWVkMGUgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTUwMCw2ICsxNTAwLDEyIEBAIHRlc3Rf c3ViPSMgU0VMRUNUICogRlJPTSB0MSBPUkRFUiBCWSBpZDsKICAgICAgICAgPC9pdGVtaXplZGxp c3Q+CiAgICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+CisgICAg ICA8cGFyYT4KKyAgICAgICAgaW5kZXg6IHRoaXMgb3B0aW9uIGVuYWJsZXMgcmVwbGljYXRpb24g b2YgSW5kZXggRERMIGNvbW1hbmRzLAorICAgICAgICB3aGljaCBpbmNsdWRlIENSRUFURS9BTFRF Ui9EUk9QIElOREVYLgorICAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CiAgIDwvaXRlbWl6 ZWRsaXN0PgogCiAgIDxzZWN0MiBpZD0iZGRsLXJlcGxpY2F0aW9uLW9wdGlvbi1leGFtcGxlcyI+ CkBAIC0xNTIxLDcgKzE1MjcsMTEgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwg PSAndGFibGUnKTsKICAgICAgIG1hdHJpeC4gTm90ZSB0aGF0IGdsb2JhbCBjb21tYW5kcyBjYW4g YmUgZXhlY3V0ZWQgYXQgYW55IGRhdGFiYXNlIGFuZCBhcmUgY3VycmVudGx5CiAgICAgICBub3Qg c3VwcG9ydGVkIGZvciByZXBsaWNhdGlvbiwgZ2xvYmFsIGNvbW1hbmRzIGluY2x1ZGUgUk9MRSBz dGF0ZW1lbnRzLCBEYXRhYmFzZQogICAgICAgc3RhdGVtZW50cywgVGFibGVTcGFjZSBzdGF0ZW1l bnRzIGFuZCBzb21lIG9mIHRoZSBHcmFudFN0bXQvUmV2b2tlU3RtdCBpZiB0aGUgdGFyZ2V0Ci0g ICAgICBvYmplY3QgaXMgYSBnbG9iYWwgb2JqZWN0LgorICAgICAgb2JqZWN0IGlzIGEgZ2xvYmFs IG9iamVjdC4gVGVtcG9yYXJ5IGFuZCB1bmxvZ2dlZCBvYmplY3RzIHdpbGwgbm90IGJlIHJlcGxp Y2F0ZWQuCisgICAgICBVc2VyIHNob3VsZCB0YWtlIGNhcmUgb2YgY3JlYXRpbmcgdGhlc2Ugb2Jq ZWN0cyBhcyB0aGVzZSBvYmplY3RzIG1pZ2h0IGJlIHJlcXVpcmVkCisgICAgICBieSB0aGUgb2Jq ZWN0cyB0aGF0IGFyZSByZXBsaWNhdGVkIChmb3IgZXhhbXBsZSBjcmVhdGlvbiBvZiB0YWJsZXMg dGhhdCBtaWdodAorICAgICAgcmVmZXIgdG8gYW4gdXNlciBjcmVhdGVkIHRhYmxlc3BhY2Ugd2ls bCBmYWlsIGluIHRoZSBzdWJzY3JpYmVyIGlmIHRoZSB1c2VyCisgICAgICBjcmVhdGVkIHRhYmxl c3BhY2VzIGFyZSBub3QgY3JlYXRlZCBpbiB0aGUgc3Vic2NyaWJlcikuCiAgICAgPC9wYXJhPgog CiAgICAgPHRhYmxlIGlkPSJkZGwtcmVwbGljYXRpb24tYnktY29tbWFuZC10YWciPgpAQCAtMTYw MCw3ICsxNjEwLDcgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwgPSAndGFibGUn KTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPkFMVEVSIElOREVYPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93 PgpAQCAtMTg4MCw3ICsxODkwLDcgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwg PSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBJTkRFWDwvbGl0ZXJhbD48L2VudHJ5PgotICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5 PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAg ICAgICAgPHJvdz4KQEAgLTIxMzUsNyArMjE0NSw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHVi IFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPjwvZW50 cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFs PjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8 L3Jvdz4KICAgICAgICA8cm93PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRs X2RlcGFyc2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9kZXBhcnNlLmMKaW5kZXggNmVm ZTg0NDk4Zi4uODNmMmVlZWIwZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRs X2RlcGFyc2UuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfZGVwYXJzZS5jCkBAIC0x MDM3LDYgKzEwMzcsMjQ0IEBAIG9idGFpbkNvbnN0cmFpbnRzKExpc3QgKmVsZW1lbnRzLCBPaWQg cmVsYXRpb25JZCwgT2lkIGRvbWFpbklkLAogCXJldHVybiBlbGVtZW50czsKIH0KIAorLyoKKyAq IFJldHVybiBhbiBpbmRleCBkZWZpbml0aW9uLCBzcGxpdCBpbnRvIHNldmVyYWwgcGllY2VzLgor ICoKKyAqIEEgbGFyZ2UgYW1vdW50IG9mIGNvZGUgaXMgZHVwbGljYXRlZCBmcm9tICBwZ19nZXRf aW5kZXhkZWZfd29ya2VyLCBidXQKKyAqIGNvbnRyb2wgZmxvdyBpcyBkaWZmZXJlbnQgZW5vdWdo IHRoYXQgaXQgZG9lc24ndCBzZWVtIHdvcnRoIGtlZXBpbmcgdGhlbQorICogdG9nZXRoZXIuCisg Ki8KK3N0YXRpYyB2b2lkCitwZ19nZXRfaW5kZXhkZWZfZGV0YWlsZWQoT2lkIGluZGV4cmVsaWQs CisJCQkJCQkgY2hhciAqKmluZGV4X2FtLAorCQkJCQkJIGNoYXIgKipkZWZpbml0aW9uLAorCQkJ CQkJIGNoYXIgKipyZWxvcHRpb25zLAorCQkJCQkJIGNoYXIgKip0YWJsZXNwYWNlLAorCQkJCQkJ IGNoYXIgKip3aGVyZUNsYXVzZSkKK3sKKwlIZWFwVHVwbGUJaHRfaWR4OworCUhlYXBUdXBsZQlo dF9pZHhyZWw7CisJSGVhcFR1cGxlCWh0X2FtOworCUZvcm1fcGdfaW5kZXggaWR4cmVjOworCUZv cm1fcGdfY2xhc3MgaWR4cmVscmVjOworCUZvcm1fcGdfYW0JYW1yZWM7CisJSW5kZXhBbVJvdXRp bmUgKmFtcm91dGluZTsKKwlMaXN0CSAgICppbmRleHByczsKKwlMaXN0Q2VsbCAgICppbmRleHBy X2l0ZW07CisJTGlzdAkgICAqY29udGV4dDsKKwlPaWQJCQlpbmRyZWxpZDsKKwlpbnQJCQlrZXlu bzsKKwlEYXR1bQkJaW5kY29sbERhdHVtOworCURhdHVtCQlpbmRjbGFzc0RhdHVtOworCURhdHVt CQlpbmRvcHRpb25EYXR1bTsKKwlib29sCQlpc251bGw7CisJb2lkdmVjdG9yICAqaW5kY29sbGF0 aW9uOworCW9pZHZlY3RvciAgKmluZGNsYXNzOworCWludDJ2ZWN0b3IgKmluZG9wdGlvbjsKKwlT dHJpbmdJbmZvRGF0YSBkZWZpbml0aW9uQnVmOworCisJKnRhYmxlc3BhY2UgPSBOVUxMOworCSp3 aGVyZUNsYXVzZSA9IE5VTEw7CisKKwkvKiBGZXRjaCB0aGUgcGdfaW5kZXggdHVwbGUgYnkgdGhl IE9pZCBvZiB0aGUgaW5kZXggKi8KKwlodF9pZHggPSBTZWFyY2hTeXNDYWNoZTEoSU5ERVhSRUxJ RCwgT2JqZWN0SWRHZXREYXR1bShpbmRleHJlbGlkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KGh0X2lkeCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBpbmRleCB3 aXRoIE9JRCAldSIsIGluZGV4cmVsaWQpOworCWlkeHJlYyA9IChGb3JtX3BnX2luZGV4KSBHRVRT VFJVQ1QoaHRfaWR4KTsKKworCWluZHJlbGlkID0gaWR4cmVjLT5pbmRyZWxpZDsKKwlBc3NlcnQo aW5kZXhyZWxpZCA9PSBpZHhyZWMtPmluZGV4cmVsaWQpOworCisJLyogTXVzdCBnZXQgaW5kY29s bGF0aW9uLCBpbmRjbGFzcywgYW5kIGluZG9wdGlvbiB0aGUgaGFyZCB3YXkgKi8KKwlpbmRjb2xs RGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoSU5ERVhSRUxJRCwgaHRfaWR4LAorCQkJCQkJCQkgICBB bnVtX3BnX2luZGV4X2luZGNvbGxhdGlvbiwgJmlzbnVsbCk7CisJQXNzZXJ0KCFpc251bGwpOwor CWluZGNvbGxhdGlvbiA9IChvaWR2ZWN0b3IgKikgRGF0dW1HZXRQb2ludGVyKGluZGNvbGxEYXR1 bSk7CisKKwlpbmRjbGFzc0RhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKElOREVYUkVMSUQsIGh0X2lk eCwKKwkJCQkJCQkJCUFudW1fcGdfaW5kZXhfaW5kY2xhc3MsICZpc251bGwpOworCUFzc2VydCgh aXNudWxsKTsKKwlpbmRjbGFzcyA9IChvaWR2ZWN0b3IgKikgRGF0dW1HZXRQb2ludGVyKGluZGNs YXNzRGF0dW0pOworCisJaW5kb3B0aW9uRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoSU5ERVhSRUxJ RCwgaHRfaWR4LAorCQkJCQkJCQkJIEFudW1fcGdfaW5kZXhfaW5kb3B0aW9uLCAmaXNudWxsKTsK KwlBc3NlcnQoIWlzbnVsbCk7CisJaW5kb3B0aW9uID0gKGludDJ2ZWN0b3IgKikgRGF0dW1HZXRQ b2ludGVyKGluZG9wdGlvbkRhdHVtKTsKKworCS8qIEZldGNoIHRoZSBwZ19jbGFzcyB0dXBsZSBv ZiB0aGUgaW5kZXggcmVsYXRpb24gKi8KKwlodF9pZHhyZWwgPSBTZWFyY2hTeXNDYWNoZTEoUkVM T0lELCBPYmplY3RJZEdldERhdHVtKGluZGV4cmVsaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFs aWQoaHRfaWR4cmVsKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJl bGF0aW9uIHdpdGggT0lEICV1IiwgaW5kZXhyZWxpZCk7CisJaWR4cmVscmVjID0gKEZvcm1fcGdf Y2xhc3MpIEdFVFNUUlVDVChodF9pZHhyZWwpOworCisJLyogRmV0Y2ggdGhlIHBnX2FtIHR1cGxl IG9mIHRoZSBpbmRleCcgYWNjZXNzIG1ldGhvZCAqLworCWh0X2FtID0gU2VhcmNoU3lzQ2FjaGUx KEFNT0lELCBPYmplY3RJZEdldERhdHVtKGlkeHJlbHJlYy0+cmVsYW0pKTsKKwlpZiAoIUhlYXBU dXBsZUlzVmFsaWQoaHRfYW0pKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3IgYWNjZXNzIG1ldGhvZCB3aXRoIE9JRCAldSIsCisJCQkgaWR4cmVscmVjLT5yZWxhbSk7CisJ YW1yZWMgPSAoRm9ybV9wZ19hbSkgR0VUU1RSVUNUKGh0X2FtKTsKKworCS8qCisJICogR2V0IHRo ZSBpbmRleCBleHByZXNzaW9ucywgaWYgYW55LiAgKE5PVEU6IHdlIGRvIG5vdCB1c2UgdGhlIHJl bGNhY2hlCisJICogdmVyc2lvbnMgb2YgdGhlIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGUsIGJl Y2F1c2Ugd2Ugd2FudCB0byBkaXNwbGF5CisJICogbm9uLWNvbnN0LWZvbGRlZCBleHByZXNzaW9u cy4pCisJICovCisJaWYgKCFoZWFwX2F0dGlzbnVsbChodF9pZHgsIEFudW1fcGdfaW5kZXhfaW5k ZXhwcnMsIE5VTEwpKQorCXsKKwkJRGF0dW0JCWV4cHJzRGF0dW07CisJCWNoYXIJICAgKmV4cHJz U3RyaW5nOworCisJCWV4cHJzRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoSU5ERVhSRUxJRCwgaHRf aWR4LAorCQkJCQkJCQkJIEFudW1fcGdfaW5kZXhfaW5kZXhwcnMsICZpc251bGwpOworCQlBc3Nl cnQoIWlzbnVsbCk7CisJCWV4cHJzU3RyaW5nID0gVGV4dERhdHVtR2V0Q1N0cmluZyhleHByc0Rh dHVtKTsKKwkJaW5kZXhwcnMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUoZXhwcnNTdHJpbmcpOwor CQlwZnJlZShleHByc1N0cmluZyk7CisJfQorCWVsc2UKKwkJaW5kZXhwcnMgPSBOSUw7CisKKwlp bmRleHByX2l0ZW0gPSBsaXN0X2hlYWQoaW5kZXhwcnMpOworCisJY29udGV4dCA9IGRlcGFyc2Vf Y29udGV4dF9mb3IoZ2V0X3JlbF9uYW1lKGluZHJlbGlkKSwgaW5kcmVsaWQpOworCisJaW5pdFN0 cmluZ0luZm8oJmRlZmluaXRpb25CdWYpOworCisJLyogT3V0cHV0IGluZGV4IEFNICovCisJKmlu ZGV4X2FtID0gcHN0cmR1cChxdW90ZV9pZGVudGlmaWVyKE5hbWVTdHIoYW1yZWMtPmFtbmFtZSkp KTsKKworCS8qIEZldGNoIHRoZSBpbmRleCBBTSdzIEFQSSBzdHJ1Y3QgKi8KKwlhbXJvdXRpbmUg PSBHZXRJbmRleEFtUm91dGluZShhbXJlYy0+YW1oYW5kbGVyKTsKKworCS8qCisJICogT3V0cHV0 IGluZGV4IGRlZmluaXRpb24uICBOb3RlIHRoZSBvdXRlciBwYXJlbnMgbXVzdCBiZSBzdXBwbGll ZCBieQorCSAqIGNhbGxlci4KKwkgKi8KKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZkZWZpbml0 aW9uQnVmLCAiKCIpOworCWZvciAoa2V5bm8gPSAwOyBrZXlubyA8IGlkeHJlYy0+aW5kbmF0dHM7 IGtleW5vKyspCisJeworCQlBdHRyTnVtYmVyCWF0dG51bSA9IGlkeHJlYy0+aW5ka2V5LnZhbHVl c1trZXlub107CisJCWludDE2CQlvcHQgPSBpbmRvcHRpb24tPnZhbHVlc1trZXlub107CisJCU9p ZAkJCWtleWNvbHR5cGU7CisJCU9pZAkJCWtleWNvbGNvbGxhdGlvbjsKKworCQkvKiBQcmludCBJ TkNMVURFIHRvIGRpdmlkZSBrZXkgYW5kIG5vbi1rZXkgYXR0cnMuICovCisJCWlmIChrZXlubyA9 PSBpZHhyZWMtPmluZG5rZXlhdHRzKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZk ZWZpbml0aW9uQnVmLCAiKSBJTkNMVURFICgiKTsKKwkJfQorCQllbHNlCisJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZkZWZpbml0aW9uQnVmLCBrZXlubyA9PSAwID8gIiIgOiAiLCAiKTsKKwor CQlpZiAoYXR0bnVtICE9IDApCisJCXsKKwkJCS8qIFNpbXBsZSBpbmRleCBjb2x1bW4gKi8KKwkJ CWNoYXIJICAgKmF0dG5hbWU7CisJCQlpbnQzMgkJa2V5Y29sdHlwbW9kOworCisJCQlhdHRuYW1l ID0gZ2V0X2F0dG5hbWUoaW5kcmVsaWQsIGF0dG51bSwgZmFsc2UpOworCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmZGVmaW5pdGlvbkJ1ZiwgcXVvdGVfaWRlbnRpZmllcihhdHRuYW1lKSk7CisJ CQlnZXRfYXR0dHlwZXR5cG1vZGNvbGwoaW5kcmVsaWQsIGF0dG51bSwKKwkJCQkJCQkJICAma2V5 Y29sdHlwZSwgJmtleWNvbHR5cG1vZCwKKwkJCQkJCQkJICAma2V5Y29sY29sbGF0aW9uKTsKKwkJ fQorCQllbHNlCisJCXsKKwkJCS8qIEV4cHJlc3Npb25hbCBpbmRleCAqLworCQkJTm9kZQkgICAq aW5kZXhrZXk7CisJCQljaGFyCSAgICpzdHI7CisKKwkJCWlmIChpbmRleHByX2l0ZW0gPT0gTlVM TCkKKwkJCQllbG9nKEVSUk9SLCAidG9vIGZldyBlbnRyaWVzIGluIGluZGV4cHJzIGxpc3QiKTsK KwkJCWluZGV4a2V5ID0gKE5vZGUgKikgbGZpcnN0KGluZGV4cHJfaXRlbSk7CisJCQlpbmRleHBy X2l0ZW0gPSBsbmV4dChpbmRleHBycywgaW5kZXhwcl9pdGVtKTsKKworCQkJLyogRGVwYXJzZSAq LworCQkJc3RyID0gZGVwYXJzZV9leHByZXNzaW9uKGluZGV4a2V5LCBjb250ZXh0LCBmYWxzZSwg ZmFsc2UpOworCisJCQkvKiBOZWVkIHBhcmVucyBpZiBpdCdzIG5vdCBhIGJhcmUgZnVuY3Rpb24g Y2FsbCAqLworCQkJaWYgKGluZGV4a2V5ICYmIElzQShpbmRleGtleSwgRnVuY0V4cHIpICYmCisJ CQkJKChGdW5jRXhwciAqKSBpbmRleGtleSktPmZ1bmNmb3JtYXQgPT0gQ09FUkNFX0VYUExJQ0lU X0NBTEwpCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZGVmaW5pdGlvbkJ1Ziwgc3RyKTsK KwkJCWVsc2UKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZkZWZpbml0aW9uQnVmLCAiKCVzKSIsIHN0 cik7CisKKwkJCWtleWNvbHR5cGUgPSBleHByVHlwZShpbmRleGtleSk7CisJCQlrZXljb2xjb2xs YXRpb24gPSBleHByQ29sbGF0aW9uKGluZGV4a2V5KTsKKwkJfQorCisJCS8qIFByaW50IGFkZGl0 aW9uYWwgZGVjb3JhdGlvbiBmb3IgKHNlbGVjdGVkKSBrZXkgY29sdW1ucywgZXZlbiBpZiBkZWZh dWx0ICovCisJCWlmIChrZXlubyA8IGlkeHJlYy0+aW5kbmtleWF0dHMpCisJCXsKKwkJCU9pZCBp bmRjb2xsID0gaW5kY29sbGF0aW9uLT52YWx1ZXNba2V5bm9dOworCQkJaWYgKE9pZElzVmFsaWQo aW5kY29sbCkpCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmZGVmaW5pdGlvbkJ1ZiwgIiBDT0xMQVRF ICVzIiwKKwkJCQkJCQkJZ2VuZXJhdGVfY29sbGF0aW9uX25hbWUoKGluZGNvbGwpKSk7CisKKwkJ CS8qIEFkZCB0aGUgb3BlcmF0b3IgY2xhc3MgbmFtZSwgZXZlbiBpZiBkZWZhdWx0ICovCisJCQln ZXRfb3BjbGFzc19uYW1lKGluZGNsYXNzLT52YWx1ZXNba2V5bm9dLCBJbnZhbGlkT2lkLCAmZGVm aW5pdGlvbkJ1Zik7CisKKwkJCS8qIEFkZCBvcHRpb25zIGlmIHJlbGV2YW50ICovCisJCQlpZiAo YW1yb3V0aW5lLT5hbWNhbm9yZGVyKQorCQkJeworCQkJCS8qIElmIGl0IHN1cHBvcnRzIHNvcnQg b3JkZXJpbmcsIHJlcG9ydCBERVNDIGFuZCBOVUxMUyBvcHRzICovCisJCQkJaWYgKG9wdCAmIElO RE9QVElPTl9ERVNDKQorCQkJCXsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZGVmaW5p dGlvbkJ1ZiwgIiBERVNDIik7CisJCQkJCS8qIE5VTExTIEZJUlNUIGlzIHRoZSBkZWZhdWx0IGlu IHRoaXMgY2FzZSAqLworCQkJCQlpZiAoIShvcHQgJiBJTkRPUFRJT05fTlVMTFNfRklSU1QpKQor CQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZGVmaW5pdGlvbkJ1ZiwgIiBOVUxMUyBMQVNU Iik7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWlmIChvcHQgJiBJTkRPUFRJT05fTlVM TFNfRklSU1QpCisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZkZWZpbml0aW9uQnVmLCAi IE5VTExTIEZJUlNUIik7CisJCQkJfQorCQkJfQorCisJCQkvKiBYWFggZXhjbHVkZU9wcyB0aGlu Z3kgd2FzIGhlcmU7IGRvIHdlIG5lZWQgYW55dGhpbmc/ICovCisJCX0KKwl9CisJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmZGVmaW5pdGlvbkJ1ZiwgIikiKTsKKwkqZGVmaW5pdGlvbiA9IGRlZmlu aXRpb25CdWYuZGF0YTsKKworCS8qIE91dHB1dCByZWxvcHRpb25zICovCisJKnJlbG9wdGlvbnMg PSBmbGF0dGVuX3JlbG9wdGlvbnMoaW5kZXhyZWxpZCk7CisKKwkvKiBPdXRwdXQgdGFibGVzcGFj ZSAqLworCXsKKwkJT2lkCQkJdGJsc3BjOworCisJCXRibHNwYyA9IGdldF9yZWxfdGFibGVzcGFj ZShpbmRleHJlbGlkKTsKKwkJaWYgKE9pZElzVmFsaWQodGJsc3BjKSkKKwkJCSp0YWJsZXNwYWNl ID0gcHN0cmR1cChxdW90ZV9pZGVudGlmaWVyKGdldF90YWJsZXNwYWNlX25hbWUodGJsc3BjKSkp OworCX0KKworCS8qIFJlcG9ydCBpbmRleCBwcmVkaWNhdGUsIGlmIGFueSAqLworCWlmICghaGVh cF9hdHRpc251bGwoaHRfaWR4LCBBbnVtX3BnX2luZGV4X2luZHByZWQsIE5VTEwpKQorCXsKKwkJ Tm9kZQkgICAqbm9kZTsKKwkJRGF0dW0JCXByZWREYXR1bTsKKwkJY2hhcgkgICAqcHJlZFN0cmlu ZzsKKworCQkvKiBDb252ZXJ0IHRleHQgc3RyaW5nIHRvIG5vZGUgdHJlZSAqLworCQlwcmVkRGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoSU5ERVhSRUxJRCwgaHRfaWR4LAorCQkJCQkJCQkJQW51bV9w Z19pbmRleF9pbmRwcmVkLCAmaXNudWxsKTsKKwkJQXNzZXJ0KCFpc251bGwpOworCQlwcmVkU3Ry aW5nID0gVGV4dERhdHVtR2V0Q1N0cmluZyhwcmVkRGF0dW0pOworCQlub2RlID0gKE5vZGUgKikg c3RyaW5nVG9Ob2RlKHByZWRTdHJpbmcpOworCQlwZnJlZShwcmVkU3RyaW5nKTsKKworCQkvKiBE ZXBhcnNlICovCisJCSp3aGVyZUNsYXVzZSA9IGRlcGFyc2VfZXhwcmVzc2lvbihub2RlLCBjb250 ZXh0LCBmYWxzZSwgZmFsc2UpOworCX0KKworCS8qIENsZWFuIHVwICovCisJUmVsZWFzZVN5c0Nh Y2hlKGh0X2lkeCk7CisJUmVsZWFzZVN5c0NhY2hlKGh0X2lkeHJlbCk7CisJUmVsZWFzZVN5c0Nh Y2hlKGh0X2FtKTsKK30KKwogLyoKICAqIE9idGFpbiB0aGUgZGVwYXJzZWQgZGVmYXVsdCB2YWx1 ZSBmb3IgdGhlIGdpdmVuIGNvbHVtbiBvZiB0aGUgZ2l2ZW4gdGFibGUuCiAgKgpAQCAtMTk1MCw2 ICsyMTg4LDEwMiBAQCBkZXBhcnNlX1RhYmxlRWxlbWVudHMoUmVsYXRpb24gcmVsYXRpb24sIExp c3QgKnRhYmxlRWxlbWVudHMsIExpc3QgKmRwY29udGV4dCwKIAlyZXR1cm4gZWxlbWVudHM7CiB9 CiAKKy8qCisgKiBEZXBhcnNlIGFuIEluZGV4U3RtdC4KKyAqCisgKiBHaXZlbiBhbiBpbmRleCBP SUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUK KyAqIHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisgKiBJZiB0aGUgaW5k ZXggY29ycmVzcG9uZHMgdG8gYSBjb25zdHJhaW50LCBOVUxMIGlzIHJldHVybmVkLgorICoKKyAq IFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgJXt1bmlxdWV9cyBJTkRFWCAle2NvbmN1cnJlbnRs eX1zICV7aWZfbm90X2V4aXN0c31zICV7bmFtZX1JIE9OCisgKiAle29ubHl9cyAle3RhYmxlfUQg VVNJTkcgJXtpbmRleF9hbX1zICV7ZGVmaW5pdGlvbn1zICV7bnVsbHNfbm90X2Rpc3RpbmN0fXMK KyAqICV7d2l0aH1zICV7dGFibGVzcGFjZX1zICV7d2hlcmVfY2xhdXNlfXMKKyAqLworc3RhdGlj IE9ialRyZWUgKgorZGVwYXJzZV9JbmRleFN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRy ZWUpCit7CisJSW5kZXhTdG10ICAqbm9kZSA9IChJbmRleFN0bXQgKikgcGFyc2V0cmVlOworCU9i alRyZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXBfb2JqOworCVJlbGF0aW9uCWlkeHJlbDsK KwlSZWxhdGlvbgloZWFwcmVsOworCWNoYXIJICAgKmluZGV4X2FtOworCWNoYXIJICAgKmRlZmlu aXRpb247CisJY2hhcgkgICAqcmVsb3B0aW9uczsKKwljaGFyCSAgICp0YWJsZXNwYWNlOworCWNo YXIJICAgKndoZXJlQ2xhdXNlOworCisJaWYgKG5vZGUtPnByaW1hcnkgfHwgbm9kZS0+aXNjb25z dHJhaW50KQorCXsKKwkJLyoKKwkJICogSW5kZXhlcyBmb3IgUFJJTUFSWSBLRVkgYW5kIG90aGVy IGNvbnN0cmFpbnRzIGFyZSBvdXRwdXQKKwkJICogc2VwYXJhdGVseTsgcmV0dXJuIGVtcHR5IGhl cmUuCisJCSAqLworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlpZHhyZWwgPSByZWxhdGlvbl9vcGVu KG9iamVjdElkLCBBY2Nlc3NTaGFyZUxvY2spOworCWhlYXByZWwgPSByZWxhdGlvbl9vcGVuKGlk eHJlbC0+cmRfaW5kZXgtPmluZHJlbGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcGdfZ2V0X2lu ZGV4ZGVmX2RldGFpbGVkKG9iamVjdElkLAorCQkJCQkJCSAmaW5kZXhfYW0sICZkZWZpbml0aW9u LCAmcmVsb3B0aW9ucywKKwkJCQkJCQkgJnRhYmxlc3BhY2UsICZ3aGVyZUNsYXVzZSk7CisKKwly ZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFICV7dW5pcXVlfXMgSU5ERVggJXtjb25jdXJyZW50 bHl9cyAle2lmX25vdF9leGlzdHN9cyAle25hbWV9SSBPTiAle29ubHl9cyAle3RhYmxlfUQgVVNJ TkcgJXtpbmRleF9hbX1zICV7ZGVmaW5pdGlvbn1zIiwgOCwKKwkJCQkJCSAidW5pcXVlIiwgT2Jq VHlwZVN0cmluZywKKwkJCQkJCSBub2RlLT51bmlxdWUgPyAiVU5JUVVFIiA6ICIiLAorCQkJCQkJ ICJjb25jdXJyZW50bHkiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIG5vZGUtPmNvbmN1cnJlbnQg PyAiQ09OQ1VSUkVOVExZIiA6ICIiLAorCQkJCQkJICJpZl9ub3RfZXhpc3RzIiwgT2JqVHlwZVN0 cmluZywKKwkJCQkJCSBub2RlLT5pZl9ub3RfZXhpc3RzID8gIklGIE5PVCBFWElTVFMiIDogIiIs CisJCQkJCQkgIm9ubHkiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIG5vZGUtPnJlbGF0aW9uLT5p bmggPyAiIiA6ICJPTkxZIiwKKwkJCQkJCSAibmFtZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkg UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaWR4cmVsKSwKKwkJCQkJCSAidGFibGUiLCBPYmpUeXBl T2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShoZWFwcmVsLT5yZF9yZWwt PnJlbG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCSAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaGVh cHJlbCkpLAorCQkJCQkJICJpbmRleF9hbSIsIE9ialR5cGVTdHJpbmcsIGluZGV4X2FtLAorCQkJ CQkJICJkZWZpbml0aW9uIiwgT2JqVHlwZVN0cmluZywgZGVmaW5pdGlvbik7CisKKwkvKiBudWxs c19ub3RfZGlzdGluY3QgKi8KKwlpZiAobm9kZS0+bnVsbHNfbm90X2Rpc3RpbmN0KQorCQlhcHBl bmRfZm9ybWF0X3N0cmluZyhyZXQsICJOVUxMUyBOT1QgRElTVElOQ1QiKTsKKwllbHNlCisJCWFw cGVuZF9mb3JtYXRfc3RyaW5nKHJldCwgIk5VTExTIERJU1RJTkNUIik7CisKKwkvKiByZWxvcHRp b25zICovCisJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJXSVRIIik7CisJaWYgKHJlbG9wdGlvbnMp CisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIoJXtvcHRzfXMpIiwgIm9wdHMiLCBy ZWxvcHRpb25zKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXBfb2JqKTsKKwlhcHBl bmRfb2JqZWN0X29iamVjdChyZXQsICIle3dpdGh9cyIsIHRtcF9vYmopOworCisJLyogdGFibGVz cGFjZSAqLworCXRtcF9vYmogPSBuZXdfb2JqdHJlZSgiVEFCTEVTUEFDRSIpOworCWlmICh0YWJs ZXNwYWNlKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXBfb2JqLCAiJXt0YWJsZXNwYWNlfXMi LCAidGFibGVzcGFjZSIsIHRhYmxlc3BhY2UpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50 KHRtcF9vYmopOworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7dGFibGVzcGFjZX1zIiwg dG1wX29iaik7CisKKwkvKiBXSEVSRSBjbGF1c2UgKi8KKwl0bXBfb2JqID0gbmV3X29ianRyZWUo IldIRVJFIik7CisJaWYgKHdoZXJlQ2xhdXNlKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXBf b2JqLCAiJXt3aGVyZX1zIiwgIndoZXJlIiwgd2hlcmVDbGF1c2UpOworCWVsc2UKKwkJYXBwZW5k X25vdF9wcmVzZW50KHRtcF9vYmopOworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7d2hl cmVfY2xhdXNlfXMiLCB0bXBfb2JqKTsKKworCXRhYmxlX2Nsb3NlKGlkeHJlbCwgQWNjZXNzU2hh cmVMb2NrKTsKKwl0YWJsZV9jbG9zZShoZWFwcmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0 dXJuIHJldDsKK30KKwogLyoKICAqIERlcGFyc2UgYSBDcmVhdGVTdG10IChDUkVBVEUgVEFCTEUp LgogICoKQEAgLTMxNjcsNiArMzUwMSw3IEBAIGRlcGFyc2VfUmVuYW1lU3RtdChPYmplY3RBZGRy ZXNzIGFkZHJlc3MsIE5vZGUgKnBhcnNldHJlZSkKIAkgKi8KIAlzd2l0Y2ggKG5vZGUtPnJlbmFt ZVR5cGUpCiAJeworCQljYXNlIE9CSkVDVF9JTkRFWDoKIAkJY2FzZSBPQkpFQ1RfVEFCTEU6CiAJ CQlyZWxhdGlvbiA9IHJlbGF0aW9uX29wZW4oYWRkcmVzcy5vYmplY3RJZCwgQWNjZXNzU2hhcmVM b2NrKTsKIAkJCXNjaGVtYUlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocmVsYXRpb24pOwpAQCAt MzI0OSw2ICszNTg0LDQwIEBAIGRlcGFyc2VfUmVuYW1lU3RtdChPYmplY3RBZGRyZXNzIGFkZHJl c3MsIE5vZGUgKnBhcnNldHJlZSkKIAlyZXR1cm4gcmV0OwogfQogCisvKgorICogRGVwYXJzZSBh IEFsdGVyT2JqZWN0RGVwZW5kc1N0bXQgKEFMVEVSIC4uLiBERVBFTkRTIE9OIC4uLikuCisgKgor ICogVmVyYm9zZSBzeW50YXgKKyAqIEFMVEVSIElOREVYICV7aWRlbnRpdHl9RCAle25vfXMgREVQ RU5EUyBPTiBFWFRFTlNJT04gJXtuZXduYW1lfUkKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVw YXJzZV9BbHRlckRlcGVuZFN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJ QWx0ZXJPYmplY3REZXBlbmRzU3RtdCAqbm9kZSA9IChBbHRlck9iamVjdERlcGVuZHNTdG10ICop IHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQgPSBOVUxMOworCisJaWYgKG5vZGUtPm9iamVj dFR5cGUgPT0gT0JKRUNUX0lOREVYKQorCXsKKwkJT2JqVHJlZSAgICAqcXVhbGlmaWVkOworCQlS ZWxhdGlvbglyZWxhdGlvbiA9IHJlbGF0aW9uX29wZW4ob2JqZWN0SWQsIEFjY2Vzc1NoYXJlTG9j ayk7CisKKwkJcXVhbGlmaWVkID0gbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHJlbGF0aW9uLT5y ZF9yZWwtPnJlbG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJIG5vZGUtPnJlbGF0aW9uLT5yZWxuYW1l KTsKKwkJcmVsYXRpb25fY2xvc2UocmVsYXRpb24sIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJcmV0 ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIElOREVYICV7aWRlbnRpdHl9RCAle25vfXMgREVQRU5E UyBPTiBFWFRFTlNJT04gJXtuZXduYW1lfUkiLCAzLAorCQkJCQkJCSAiaWRlbnRpdHkiLCBPYmpU eXBlT2JqZWN0LCBxdWFsaWZpZWQsCisJCQkJCQkJICJubyIsIE9ialR5cGVTdHJpbmcsCisJCQkJ CQkJIG5vZGUtPnJlbW92ZSA/ICJOTyIgOiAiIiwKKwkJCQkJCQkgIm5ld25hbWUiLCBPYmpUeXBl U3RyaW5nLCBzdHJWYWwobm9kZS0+ZXh0bmFtZSkpOworCX0KKwllbHNlCisJCWVsb2coTE9HLCAi dW5yZWNvZ25pemVkIG5vZGUgdHlwZSBpbiBkZXBhcnNlIGNvbW1hbmQ6ICVkIiwKKwkJCSAoaW50 KSBub2RlVGFnKHBhcnNldHJlZSkpOworCisJcmV0dXJuIHJldDsKK30KKwogLyoKICAqIEhhbmRs ZSBkZXBhcnNpbmcgb2Ygc2ltcGxlIGNvbW1hbmRzLgogICoKQEAgLTMyNzEsNiArMzY0MCw5IEBA IGRlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQogCS8qIFRoaXMg c3dpdGNoIG5lZWRzIHRvIGhhbmRsZSBldmVyeXRoaW5nIHRoYXQgUHJvY2Vzc1V0aWxpdHlTbG93 IGRvZXMgKi8KIAlzd2l0Y2ggKG5vZGVUYWcocGFyc2V0cmVlKSkKIAl7CisJCWNhc2UgVF9BbHRl ck9iamVjdERlcGVuZHNTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJEZXBlbmRTdG10KG9i amVjdElkLCBwYXJzZXRyZWUpOworCiAJCWNhc2UgVF9BbHRlck9iamVjdFNjaGVtYVN0bXQ6CiAJ CQlyZXR1cm4gZGVwYXJzZV9BbHRlck9iamVjdFNjaGVtYVN0bXQoY21kLT5kLnNpbXBsZS5hZGRy ZXNzLAogCQkJCQkJCQkJCQkJIHBhcnNldHJlZSwKQEAgLTMyODIsNiArMzY1NCw5IEBAIGRlcGFy c2Vfc2ltcGxlX2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQogCQljYXNlIFRfQ3JlYXRl U3RtdDoKIAkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7 CiAKKwkJY2FzZSBUX0luZGV4U3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX0luZGV4U3RtdChvYmpl Y3RJZCwgcGFyc2V0cmVlKTsKKwogCQljYXNlIFRfUmVuYW1lU3RtdDoKIAkJCXJldHVybiBkZXBh cnNlX1JlbmFtZVN0bXQoY21kLT5kLnNpbXBsZS5hZGRyZXNzLCBwYXJzZXRyZWUpOwogCi0tIAoy LjMwLjAud2luZG93cy4yCgo= --_007_OS0PR01MB571614EE7EEDBF7049DA4EAE94939OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0004-DDL-replication-for-index-DDL-commands-2023_04_04.patch" Content-Description: 0004-DDL-replication-for-index-DDL-commands-2023_04_04.patch Content-Disposition: attachment; filename="0004-DDL-replication-for-index-DDL-commands-2023_04_04.patch"; size=59045; creation-date="Tue, 04 Apr 2023 03:07:06 GMT"; modification-date="Tue, 04 Apr 2023 03:13:07 GMT" Content-Transfer-Encoding: base64 RnJvbSAwY2EzZWRhZjY1OWJiNDFkZjI0YWYxNWZkZjFlNTAzZmNjNTNiZjg2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMDk6NTI6MDggKzA4MDAKU3ViamVjdDogW1BBVENIIDQv Nl0gRERMIHJlcGxpY2F0aW9uIGZvciBpbmRleCBEREwgY29tbWFuZHMKCi0tLQogY29udHJpYi90 ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYyAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5k L2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgICAgIHwgIDQ0ICsrKysrLS0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dlci5jIHwgIDEzICstCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyAgICB8ICAzMiArKy0tLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgfCAgNzQgKysrKysrKysrKy0KIHNyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgIHwgIDMxICsrKystCiBzcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3Bz cWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgICAgfCAgIDQgKwogc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vZGRsbWVzc2FnZS5oICAgICAgICAgfCAgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHNxbC5vdXQgICAgICAgICAgIHwgICA2ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3B1YmxpY2F0aW9uLm91dCAgICB8IDEzMiArKysrKysrKystLS0tLS0tLS0tCiAxNCBm aWxlcyBjaGFuZ2VkLCAyNDkgaW5zZXJ0aW9ucygrKSwgMTExIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMgYi9jb250cmliL3Rl c3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jCmluZGV4IDc2M2Q1YzAwN2YuLmRhNWI0MWRmNTkg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMKKysrIGIv Y29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYwpAQCAtNzc0LDkgKzc3NCwxMSBA QCBwZ19kZWNvZGVfZGRsX21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sCiAJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJjbWR0eXBl OiBTaW1wbGUsICIpOwogCQlicmVhazsKIAljYXNlIERDVF9UYWJsZURyb3BTdGFydDoKKwljYXNl IERDVF9PYmplY3REcm9wU3RhcnQ6CiAJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJjbWR0 eXBlOiBEcm9wIHN0YXJ0LCAiKTsKIAkJYnJlYWs7CiAJY2FzZSBEQ1RfVGFibGVEcm9wRW5kOgor CWNhc2UgRENUX09iamVjdERyb3BFbmQ6CiAJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJj bWR0eXBlOiBEcm9wIGVuZCwgIik7CiAJCWJyZWFrOwogCWNhc2UgRENUX1RhYmxlQWx0ZXI6CkBA IC03ODUsOSArNzg3LDYgQEAgcGdfZGVjb2RlX2RkbF9tZXNzYWdlKExvZ2ljYWxEZWNvZGluZ0Nv bnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCWNhc2UgRENUX09iamVjdENyZWF0 ZToKIAkJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91dCwgImNtZHR5cGU6IENyZWF0ZSwgIik7CiAJ CWJyZWFrOwotCWNhc2UgRENUX09iamVjdERyb3A6Ci0JCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5v dXQsICJjbWR0eXBlOiBEcm9wLCAiKTsKLQkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJYXBwZW5kU3Ry aW5nSW5mbyhjdHgtPm91dCwgImNtZHR5cGU6IEludmFsaWQsICIpOwogCQlicmVhazsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwppbmRleCBkMjA5NjAyZTI4Li4xYTMxMDVlMDI1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC0xMDI5LDYgKzEwMjksNyBAQCBH ZXRQdWJsaWNhdGlvbihPaWQgcHViaWQpCiAJcHViLT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9IHB1 YmZvcm0tPnB1YmRlbGV0ZTsKIAlwdWItPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPSBwdWJmb3Jt LT5wdWJ0cnVuY2F0ZTsKIAlwdWItPnB1YmFjdGlvbnMucHViZGRsX3RhYmxlID0gcHViZm9ybS0+ cHViZGRsX3RhYmxlOworCXB1Yi0+cHViYWN0aW9ucy5wdWJkZGxfaW5kZXggPSBwdWJmb3JtLT5w dWJkZGxfaW5kZXg7CiAJcHViLT5wdWJ2aWFyb290ID0gcHViZm9ybS0+cHVidmlhcm9vdDsKIAog CVJlbGVhc2VTeXNDYWNoZSh0dXApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMu YwppbmRleCA2N2YxYmNlYzVjLi4wYWJlZDAwODJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJs aWNhdGlvbmNtZHMuYwpAQCAtMTAzLDYgKzEwMyw3IEBAIHBhcnNlX3B1YmxpY2F0aW9uX29wdGlv bnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSA9IHRydWU7CiAJ cHViYWN0aW9ucy0+cHVidHJ1bmNhdGUgPSB0cnVlOwogCXB1YmFjdGlvbnMtPnB1YmRkbF90YWJs ZSA9IGZhbHNlOworCXB1YmFjdGlvbnMtPnB1YmRkbF9pbmRleCA9IGZhbHNlOwogCSpwdWJsaXNo X3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlOwogCiAJLyogUGFyc2Ugb3B0aW9ucyAqLwpAQCAt MTc4LDYgKzE3OSw3IEBAIHBhcnNlX3B1YmxpY2F0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJICogc2hvdWxkIGJlIHB1Ymxpc2hlZC4KIAkJCSAqLwogCQkJcHViYWN0aW9ucy0+ cHViZGRsX3RhYmxlID0gZmFsc2U7CisJCQlwdWJhY3Rpb25zLT5wdWJkZGxfaW5kZXggPSBmYWxz ZTsKIAogCQkJKmRkbF90eXBlX2dpdmVuID0gdHJ1ZTsKIAkJCWRkbF9sZXZlbCA9IGRlZkdldFN0 cmluZyhkZWZlbCk7CkBAIC0xOTQsNiArMTk2LDggQEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9u cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAKIAkJCQlpZiAoc3RyY21wKHB1Ymxpc2hfb3B0LCAidGFi bGUiKSA9PSAwKQogCQkJCQlwdWJhY3Rpb25zLT5wdWJkZGxfdGFibGUgPSB0cnVlOworCQkJCWVs c2UgaWYgKHN0cmNtcChwdWJsaXNoX29wdCwgImluZGV4IikgPT0gMCkKKwkJCQkJcHViYWN0aW9u cy0+cHViZGRsX2luZGV4ID0gdHJ1ZTsKIAkJCQllbHNlCiAJCQkJCWVyZXBvcnQoRVJST1IsCiAJ CQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBAIC04NDksNiArODUzLDEwIEBA IENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25T dG10ICpzdG10KQogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CiAJTGlzdAkgICAqcmVsYXRpb25zID0g TklMOwogCUxpc3QJICAgKnNjaGVtYWlkbGlzdCA9IE5JTDsKKwlMaXN0CSAgICpzdGFydF9jb21t YW5kcyA9IE5JTDsKKwlMaXN0CSAgICpyZXdyaXRlX2NvbW1hbmRzID0gTklMOworCUxpc3QJICAg KmluaXRfY29tbWFuZHMgPSBOSUw7CisJTGlzdAkgICAqZW5kX2NvbW1hbmRzID0gTklMOwogCiAJ LyogbXVzdCBoYXZlIENSRUFURSBwcml2aWxlZ2Ugb24gZGF0YWJhc2UgKi8KIAlhY2xyZXN1bHQg PSBvYmplY3RfYWNsY2hlY2soRGF0YWJhc2VSZWxhdGlvbklkLCBNeURhdGFiYXNlSWQsIEdldFVz ZXJJZCgpLCBBQ0xfQ1JFQVRFKTsKQEAgLTkwNCw2ICs5MTIsOCBAQCBDcmVhdGVQdWJsaWNhdGlv bihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJQm9v bEdldERhdHVtKHB1YmFjdGlvbnMucHVidHJ1bmNhdGUpOwogCXZhbHVlc1tBbnVtX3BnX3B1Ymxp Y2F0aW9uX3B1YmRkbF90YWJsZSAtIDFdID0KIAlCb29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJk ZGxfdGFibGUpOworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmRkbF9pbmRleCAtIDFd ID0KKwlCb29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJkZGxfaW5kZXgpOwogCXZhbHVlc1tBbnVt X3BnX3B1YmxpY2F0aW9uX3B1YnZpYXJvb3QgLSAxXSA9CiAJCUJvb2xHZXREYXR1bShwdWJsaXNo X3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKQEAgLTk0MSw3ICs5NTEsNyBAQCBDcmVhdGVQdWJsaWNh dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJ ewogCQkJTGlzdAkgICAqcmVsczsKIAotCQkJaWYgKHB1YmFjdGlvbnMucHViZGRsX3RhYmxlKQor CQkJaWYgKHB1YmFjdGlvbnMucHViZGRsX3RhYmxlIHx8IHB1YmFjdGlvbnMucHViZGRsX2luZGV4 KQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJB TUVURVJfVkFMVUUpLAogCQkJCQkJZXJybXNnKCJjYW5ub3QgYWRkIHRhYmxlIHRvIHB1YmxpY2F0 aW9uIFwiJXNcIiBpZiBEREwgcmVwbGljYXRpb24gaXMgZW5hYmxlZCIsCkBAIC05NzIsMjAgKzk4 MiwzMSBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCkKIAogCS8qCiAJICogQ3JlYXRlIGFuIGV2ZW50IHRyaWdnZXIgdG8g YWxsb3cgbG9nZ2luZyBvZiBEREwgc3RhdGVtZW50cy4KLQkgKgogCSAqLwogCWlmIChwdWJhY3Rp b25zLnB1YmRkbF90YWJsZSkKIAl7Ci0JCUxpc3QJICAgKnN0YXJ0X2NvbW1hbmRzID0gbGlzdF9t YWtlMV9pbnQoQ01EVEFHX0RST1BfVEFCTEUpOwotCQlMaXN0CSAgICpyZXdyaXRlX2NvbW1hbmRz ID0gbGlzdF9tYWtlMV9pbnQoQ01EVEFHX0FMVEVSX1RBQkxFKTsKLQkJTGlzdAkgICAqaW5pdF9j b21tYW5kcyA9IGxpc3RfbWFrZTJfaW50KENNRFRBR19DUkVBVEVfVEFCTEVfQVMsCi0JCQkJCQkJ CQkJCQkgICBDTURUQUdfU0VMRUNUX0lOVE8pOwotCQlMaXN0CSAgICplbmRfY29tbWFuZHMgPSBO SUw7CisJCXN0YXJ0X2NvbW1hbmRzID0gbGFwcGVuZF9pbnQoc3RhcnRfY29tbWFuZHMsIENNRFRB R19EUk9QX1RBQkxFKTsKKwkJcmV3cml0ZV9jb21tYW5kcyA9IGxhcHBlbmRfaW50KHJld3JpdGVf Y29tbWFuZHMsIENNRFRBR19BTFRFUl9UQUJMRSk7CisKKwkJaW5pdF9jb21tYW5kcyA9IGxhcHBl bmRfaW50KGluaXRfY29tbWFuZHMsIENNRFRBR19DUkVBVEVfVEFCTEVfQVMpOworCQlpbml0X2Nv bW1hbmRzID0gbGFwcGVuZF9pbnQoaW5pdF9jb21tYW5kcywgQ01EVEFHX1NFTEVDVF9JTlRPKTsK IAogCQllbmRfY29tbWFuZHMgPSBsYXBwZW5kX2ludChlbmRfY29tbWFuZHMsIENNRFRBR19DUkVB VEVfVEFCTEUpOwogCQllbmRfY29tbWFuZHMgPSBsYXBwZW5kX2ludChlbmRfY29tbWFuZHMsIENN RFRBR19BTFRFUl9UQUJMRSk7CiAJCWVuZF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGVuZF9jb21t YW5kcywgQ01EVEFHX0RST1BfVEFCTEUpOworCX0KKworCWlmIChwdWJhY3Rpb25zLnB1YmRkbF9p bmRleCkKKwl7CisJCXN0YXJ0X2NvbW1hbmRzID0gbGFwcGVuZF9pbnQoc3RhcnRfY29tbWFuZHMs IENNRFRBR19EUk9QX0lOREVYKTsKIAorCQllbmRfY29tbWFuZHMgPSBsYXBwZW5kX2ludChlbmRf Y29tbWFuZHMsIENNRFRBR19DUkVBVEVfSU5ERVgpOworCQllbmRfY29tbWFuZHMgPSBsYXBwZW5k X2ludChlbmRfY29tbWFuZHMsIENNRFRBR19BTFRFUl9JTkRFWCk7CisJCWVuZF9jb21tYW5kcyA9 IGxhcHBlbmRfaW50KGVuZF9jb21tYW5kcywgQ01EVEFHX0RST1BfSU5ERVgpOworCX0KKworCWlm IChwdWJhY3Rpb25zLnB1YmRkbF90YWJsZSB8fCBwdWJhY3Rpb25zLnB1YmRkbF9pbmRleCkKKwl7 CiAJCS8qIENyZWF0ZSB0aGUgZGRsX2NvbW1hbmRfZW5kIGV2ZW50IHRyaWdnZXIgKi8KIAkJQ3Jl YXRlRERMUmVwbGljYUV2ZW50VHJpZ2dlcihQVUJfVFJJR19FVkVOVDEsIGVuZF9jb21tYW5kcywK IAkJCQkJCQkJCSBteXNlbGYsIHB1Ym9pZCk7CkBAIC0xMTI4LDcgKzExNDksNyBAQCBBbHRlclB1 YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10 ICpzdG10LAogCQl9CiAJfQogCi0JaWYgKGRkbF90eXBlX2dpdmVuICYmIHB1YmFjdGlvbnMucHVi ZGRsX3RhYmxlKQorCWlmIChkZGxfdHlwZV9naXZlbiAmJiAocHViYWN0aW9ucy5wdWJkZGxfdGFi bGUgfHwgcHViYWN0aW9ucy5wdWJkZGxfaW5kZXgpKQogCXsKIAkJaWYgKHJvb3RfcmVsaWRzID09 IE5JTCkKIAkJCXJvb3RfcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+ b2lkLApAQCAtMTE2MSw2ICsxMTgyLDkgQEAgQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMoUGFyc2VT dGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAogCQl2YWx1ZXNbQW51 bV9wZ19wdWJsaWNhdGlvbl9wdWJkZGxfdGFibGUgLSAxXSA9IEJvb2xHZXREYXR1bShwdWJhY3Rp b25zLnB1YmRkbF90YWJsZSk7CiAJCXJlcGxhY2VzW0FudW1fcGdfcHVibGljYXRpb25fcHViZGRs X3RhYmxlIC0gMV0gPSB0cnVlOworCisJCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmRk bF9pbmRleCAtIDFdID0gQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHViZGRsX2luZGV4KTsKKwkJ cmVwbGFjZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJkZGxfaW5kZXggLSAxXSA9IHRydWU7CiAJ fQogCiAJaWYgKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dpdmVuKQpAQCAtMTI2OCw3ICsx MjkyLDcgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3Rt dCwgSGVhcFR1cGxlIHR1cCwKIAogCWlmIChzdG10LT5hY3Rpb24gPT0gQVBfQWRkT2JqZWN0cykK IAl7Ci0JCWlmIChwdWJmb3JtLT5wdWJkZGxfdGFibGUpCisJCWlmIChwdWJmb3JtLT5wdWJkZGxf dGFibGUgfHwgcHViZm9ybS0+cHViZGRsX2luZGV4KQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJ ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJZXJybXNnKCJj YW5ub3QgYWRkIHRhYmxlIHRvIHB1YmxpY2F0aW9uIFwiJXNcIiBpZiBEREwgcmVwbGljYXRpb24g aXMgZW5hYmxlZCIsCkBAIC0xMjkyLDcgKzEzMTYsNyBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVz KEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQlMaXN0CSAgICpk ZWxyZWxzID0gTklMOwogCQlMaXN0Q2VsbCAgICpvbGRsYzsKIAotCQlpZiAocHViZm9ybS0+cHVi ZGRsX3RhYmxlKQorCQlpZiAocHViZm9ybS0+cHViZGRsX3RhYmxlIHx8IHB1YmZvcm0tPnB1YmRk bF9pbmRleCkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElE X1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJCWVycm1zZygiY2Fubm90IGFkZCB0YWJsZSB0byBwdWJs aWNhdGlvbiBcIiVzXCIgaWYgRERMIHJlcGxpY2F0aW9uIGlzIGVuYWJsZWQiLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYwppbmRleCAxMjgyMzQwYzJiLi5m YjM1Y2MyYzdmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Rk bHRyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdn ZXIuYwpAQCAtODEsOCArODEsMTcgQEAgcHVibGljYXRpb25fZGVwYXJzZV9kZGxfY29tbWFuZF9z dGFydChQR19GVU5DVElPTl9BUkdTKQogCQkgKiBuZXcgdGFibGUuCiAJCSAqLwogCQlpZiAocmVs cGVyc2lzdCA9PSBSRUxQRVJTSVNURU5DRV9QRVJNQU5FTlQpCi0JCQlMb2dMb2dpY2FsRERMTWVz c2FnZSgiZGVwYXJzZSIsIGFkZHJlc3Mub2JqZWN0SWQsIERDVF9UYWJsZURyb3BTdGFydCwKKwkJ eworCQkJRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlOworCisJCQlpZiAoc3RtdC0+cmVtb3Zl VHlwZSA9PSBPQkpFQ1RfVEFCTEUpCisJCQkJY21kdHlwZSA9IERDVF9UYWJsZURyb3BTdGFydDsK KwkJCWVsc2UKKwkJCQljbWR0eXBlID0gRENUX09iamVjdERyb3BTdGFydDsKKworCQkJTG9nTG9n aWNhbERETE1lc3NhZ2UoImRlcGFyc2UiLCBhZGRyZXNzLm9iamVjdElkLCBjbWR0eXBlLAogCQkJ CQkJCQkgY29tbWFuZCwgc3RybGVuKGNvbW1hbmQpICsgMSk7CisJCX0KIAogCQlpZiAocmVsYXRp b24pCiAJCQl0YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9Mb2NrKTsKQEAgLTIyNSw2ICsyMzQsOCBA QCBwdWJsaWNhdGlvbl9kZXBhcnNlX2RkbF9jb21tYW5kX2VuZChQR19GVU5DVElPTl9BUkdTKQog CiAJCWlmIChzdHJjbXAob2JqLT5vYmplY3R0eXBlLCAidGFibGUiKSA9PSAwKQogCQkJY21kdHlw ZSA9IERDVF9UYWJsZURyb3BFbmQ7CisJCWVsc2UgaWYgKHN0cmNtcChvYmotPm9iamVjdHR5cGUs ICJpbmRleCIpID09IDApCisJCQljbWR0eXBlID0gRENUX09iamVjdERyb3BFbmQ7CiAJCWVsc2UK IAkJCWNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2xvZ2ljYWwuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5j CmluZGV4IGY1NmE3MTY1NjcuLjUzM2UyN2ZiMDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbG9naWNhbC5jCkBAIC03NSw5ICs3NSw5IEBAIHN0YXRpYyB2b2lkIG1lc3NhZ2Vf Y2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAog CQkJCQkJCSAgIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sIGJvb2wgdHJhbnNhY3Rpb25hbCwKIAkJ CQkJCQkgICBjb25zdCBjaGFyICpwcmVmaXgsIFNpemUgbWVzc2FnZV9zaXplLCBjb25zdCBjaGFy ICptZXNzYWdlKTsKIHN0YXRpYyB2b2lkIGRkbF9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNh Y2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCi0JCQkJCQkJCSAgWExvZ1JlY1B0ciBtZXNzYWdl X2xzbiwgY29uc3QgY2hhciAqcHJlZml4LAotCQkJCQkJCQkgIE9pZCByZWxpZCwgRGVwYXJzZWRD b21tYW5kVHlwZSBjbWR0eXBlLAotCQkJCQkJCQkgIFNpemUgbWVzc2FnZV9zaXplLCBjb25zdCBj aGFyICptZXNzYWdlKTsKKwkJCQkJCSAgIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sIGNvbnN0IGNo YXIgKnByZWZpeCwKKwkJCQkJCSAgIE9pZCByZWxpZCwgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0 eXBlLAorCQkJCQkJICAgU2l6ZSBtZXNzYWdlX3NpemUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwog CiAvKiBzdHJlYW1pbmcgY2FsbGJhY2tzICovCiBzdGF0aWMgdm9pZCBzdHJlYW1fc3RhcnRfY2Jf d3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLApAQCAt OTYsMTAgKzk2LDEwIEBAIHN0YXRpYyB2b2lkIHN0cmVhbV9tZXNzYWdlX2NiX3dyYXBwZXIoUmVv cmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4CiAJCQkJCQkJCQkgIFhMb2dS ZWNQdHIgbWVzc2FnZV9sc24sIGJvb2wgdHJhbnNhY3Rpb25hbCwKIAkJCQkJCQkJCSAgY29uc3Qg Y2hhciAqcHJlZml4LCBTaXplIG1lc3NhZ2Vfc2l6ZSwgY29uc3QgY2hhciAqbWVzc2FnZSk7CiBz dGF0aWMgdm9pZCBzdHJlYW1fZGRsX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwKLQkJCQkJCQkJCQkgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwK LQkJCQkJCQkJCQkgY29uc3QgY2hhciAqcHJlZml4LAotCQkJCQkJCQkJCSBPaWQgcmVsaWQsIERl cGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKLQkJCQkJCQkJCQkgU2l6ZSBtZXNzYWdlX3NpemUs IGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworCQkJCQkJCQkgIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24s CisJCQkJCQkJCSAgY29uc3QgY2hhciAqcHJlZml4LAorCQkJCQkJCQkgIE9pZCByZWxpZCwgRGVw YXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCQkgIFNpemUgbWVzc2FnZV9zaXplLCBj b25zdCBjaGFyICptZXNzYWdlKTsKIHN0YXRpYyB2b2lkIHN0cmVhbV90cnVuY2F0ZV9jYl93cmFw cGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCQkJ CQkgICBpbnQgbnJlbGF0aW9ucywgUmVsYXRpb24gcmVsYXRpb25zW10sIFJlb3JkZXJCdWZmZXJD aGFuZ2UgKmNoYW5nZSk7CiAKQEAgLTEyNDgsMTAgKzEyNDgsMTAgQEAgbWVzc2FnZV9jYl93cmFw cGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAKIHN0YXRp YyB2b2lkCiBkZGxfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAotCQkJCQkgIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCi0JCQkJCSAgY29uc3Qg Y2hhciAqcHJlZml4LCBPaWQgcmVsaWQsIERlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKLQkJ CQkJICBTaXplIG1lc3NhZ2Vfc2l6ZSwKLQkJCQkJICBjb25zdCBjaGFyICptZXNzYWdlKQorCQkJ ICAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKKwkJCSAgIGNvbnN0IGNoYXIgKnByZWZpeCwgT2lk IHJlbGlkLCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkgICBTaXplIG1lc3NhZ2Vf c2l6ZSwKKwkJCSAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiB7CiAJTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4ID0gY2FjaGUtPnByaXZhdGVfZGF0YTsKIAlMb2dpY2FsRXJyb3JDYWxsYmFja1N0 YXRlIHN0YXRlOwpAQCAtMTI3OCw3ICsxMjc4LDcgQEAgZGRsX2NiX3dyYXBwZXIoUmVvcmRlckJ1 ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAogCS8qIGRvIHRoZSBhY3R1YWwg d29yazogY2FsbCBjYWxsYmFjayAqLwogCWN0eC0+Y2FsbGJhY2tzLmRkbF9jYihjdHgsIHR4biwg bWVzc2FnZV9sc24sIHByZWZpeCwgcmVsaWQsIGNtZHR5cGUsCi0JCQkJCQkJCSBtZXNzYWdlX3Np emUsIG1lc3NhZ2UpOworCQkJCQkJICBtZXNzYWdlX3NpemUsIG1lc3NhZ2UpOwogCiAJLyogUG9w IHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCiAJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNh bGxiYWNrLnByZXZpb3VzOwpAQCAtMTYwMSwxMCArMTYwMSwxMCBAQCBzdHJlYW1fbWVzc2FnZV9j Yl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAK IHN0YXRpYyB2b2lkCiBzdHJlYW1fZGRsX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUs IFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKLQkJCQkJCQkgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwK LQkJCQkJCQkgY29uc3QgY2hhciAqcHJlZml4LCBPaWQgcmVsaWQsIERlcGFyc2VkQ29tbWFuZFR5 cGUgY21kdHlwZSwKLQkJCQkJCQkgU2l6ZSBtZXNzYWdlX3NpemUsCi0JCQkJCQkJIGNvbnN0IGNo YXIgKm1lc3NhZ2UpCisJCQkJCSAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKKwkJCQkJICBjb25z dCBjaGFyICpwcmVmaXgsIE9pZCByZWxpZCwgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAor CQkJCQkgIFNpemUgbWVzc2FnZV9zaXplLAorCQkJCQkgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiB7 CiAJTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4ID0gY2FjaGUtPnByaXZhdGVfZGF0YTsKIAlM b2dpY2FsRXJyb3JDYWxsYmFja1N0YXRlIHN0YXRlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggN2VhOWZmNTFlYy4uNDI5YTNhZWY5MSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0yMTksMTAgKzIx OSwyMCBAQCB0eXBlZGVmIHN0cnVjdCBQR091dHB1dFR4bkRhdGEKIC8qIE1hcCB1c2VkIHRvIHJl bWVtYmVyIHdoaWNoIHJlbGF0aW9uIHNjaGVtYXMgd2Ugc2VudC4gKi8KIHN0YXRpYyBIVEFCICpS ZWxhdGlvblN5bmNDYWNoZSA9IE5VTEw7CiAKKy8qIFN0cnVjdCB0byBjYWNoZSB0aGUgcHVibGlz aGVkIERETC4gKi8KK3R5cGVkZWYgc3RydWN0IERETFN5bmNDYWNoZQoreworCWJvb2wJCXZhbGlk OworCWJvb2wJCXB1YmluZGV4OworfSBERExTeW5jQ2FjaGU7CisKK3N0YXRpYyBERExTeW5jQ2Fj aGUgKmRkbGNhY2hlID0gTlVMTDsKKwogc3RhdGljIHZvaWQgaW5pdF9yZWxfc3luY19jYWNoZShN ZW1vcnlDb250ZXh0IGNhY2hlY3R4KTsKIHN0YXRpYyB2b2lkIGNsZWFudXBfcmVsX3N5bmNfY2Fj aGUoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgaXNfY29tbWl0KTsKIHN0YXRpYyBSZWxhdGlvblN5 bmNFbnRyeSAqZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwKIAkJCQkJCQkJ CQkJIFJlbGF0aW9uIHJlbGF0aW9uKTsKK3N0YXRpYyB2b2lkIGJ1aWxkX2RkbF9zeW5jX2NhY2hl KFBHT3V0cHV0RGF0YSAqZGF0YSk7CiBzdGF0aWMgdm9pZCByZWxfc3luY19jYWNoZV9yZWxhdGlv bl9jYihEYXR1bSBhcmcsIE9pZCByZWxpZCk7CiBzdGF0aWMgdm9pZCByZWxfc3luY19jYWNoZV9w dWJsaWNhdGlvbl9jYihEYXR1bSBhcmcsIGludCBjYWNoZWlkLAogCQkJCQkJCQkJCSAgdWludDMy IGhhc2h2YWx1ZSk7CkBAIC0xNzYwLDYgKzE3NzAsMjcgQEAgaXNfb2JqZWN0X3B1Ymxpc2hlZChM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE9pZCBvYmppZCkKIAkJCQlyZWxlbnRyeS0+cHVi bGlzaF9hc19yZWxpZCAhPSBvYmppZCkKIAkJCQlyZXR1cm4gZmFsc2U7CiAKKwkJCWJyZWFrOwor CQljYXNlIFJFTEtJTkRfSU5ERVg6CisJCQlidWlsZF9kZGxfc3luY19jYWNoZShkYXRhKTsKKwor CQkJaWYgKCFkZGxjYWNoZS0+cHViaW5kZXgpCisJCQkJcmV0dXJuIGZhbHNlOworCisJCQkvKiBH ZXQgdGhlIHRhYmxlIE9JRCB0aGF0IHRoZSBpbmRleCBpcyBmb3IuICovCisJCQlyZWxhdGlvbiA9 IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihvYmppZCk7CisJCQlvYmppZCA9IHJlbGF0aW9uLT5yZF9p bmRleC0+aW5kcmVsaWQ7CisJCQlSZWxhdGlvbkNsb3NlKHJlbGF0aW9uKTsKKworCQkJLyogRmls dGVyIHRoZSBpbmRleCBERExzIGlmIHRoZSBpbmRleCdzIHRhYmxlIHdhcyBub3QgcHVibGlzaGVk LiAqLworCQkJcmVsYXRpb24gPSBSZWxhdGlvbklkR2V0UmVsYXRpb24ob2JqaWQpOworCQkJcmVs ZW50cnkgPSBnZXRfcmVsX3N5bmNfZW50cnkoZGF0YSwgcmVsYXRpb24pOworCQkJUmVsYXRpb25D bG9zZShyZWxhdGlvbik7CisKKwkJCWlmICghcmVsZW50cnktPnB1YmFjdGlvbnMucHViZGRsX3Rh YmxlIHx8CisJCQkJcmVsZW50cnktPnB1Ymxpc2hfYXNfcmVsaWQgIT0gb2JqaWQpCisJCQkJcmV0 dXJuIGZhbHNlOworCiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCS8qIHVuc3VwcG9ydGVkIG9i amVjdHMgKi8KQEAgLTE3ODUsMTIgKzE4MTYsMTQgQEAgcGdvdXRwdXRfZGRsKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCSAqIHdlIGNhbm5vdCBn ZXQgdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uIGZyb20gdGhlIGNhdGFsb2csIHNvIHdlIHNraXAg dGhlCiAJICogY2hlY2sgZm9yIHRoZW0uCiAJICovCi0JaWYgKGNtZHR5cGUgIT0gRENUX1RhYmxl RHJvcEVuZCAmJiAhaXNfb2JqZWN0X3B1Ymxpc2hlZChjdHgsIHJlbGlkKSkKKwlpZiAoY21kdHlw ZSAhPSBEQ1RfVGFibGVEcm9wRW5kICYmIGNtZHR5cGUgIT0gRENUX09iamVjdERyb3BFbmQgJiYK KwkJIWlzX29iamVjdF9wdWJsaXNoZWQoY3R4LCByZWxpZCkpCiAJCXJldHVybjsKIAogCXN3aXRj aCAoY21kdHlwZSkKIAl7CiAJCWNhc2UgRENUX1RhYmxlRHJvcFN0YXJ0OgorCQljYXNlIERDVF9P YmplY3REcm9wU3RhcnQ6CiAJCQl7CiAJCQkJTWVtb3J5Q29udGV4dAlvbGQ7CiAKQEAgLTE4MTQs NiArMTg0Nyw3IEBAIHBnb3V0cHV0X2RkbChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCXJldHVybjsKIAogCQljYXNlIERDVF9UYWJsZURyb3BF bmQ6CisJCWNhc2UgRENUX09iamVjdERyb3BFbmQ6CiAJCQlpZiAoIWxpc3RfbWVtYmVyX29pZCh0 eG5kYXRhLT5kZWxldGVkX3JlbGlkcywgcmVsaWQpKQogCQkJCXJldHVybjsKIApAQCAtMjIwMyw3 ICsyMjM3LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRp b24gcmVsYXRpb24pCiAJCWVudHJ5LT5zdHJlYW1lZF90eG5zID0gTklMOwogCQllbnRyeS0+cHVi YWN0aW9ucy5wdWJpbnNlcnQgPSBlbnRyeS0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgPQogCQkJZW50 cnktPnB1YmFjdGlvbnMucHViZGVsZXRlID0gZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUg PQotCQkJZW50cnktPnB1YmFjdGlvbnMucHViZGRsX3RhYmxlID0gZmFsc2U7CisJCQllbnRyeS0+ cHViYWN0aW9ucy5wdWJkZGxfdGFibGUgPSBlbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfaW5kZXgg PSBmYWxzZTsKIAkJZW50cnktPm5ld19zbG90ID0gTlVMTDsKIAkJZW50cnktPm9sZF9zbG90ID0g TlVMTDsKIAkJbWVtc2V0KGVudHJ5LT5leHByc3RhdGUsIDAsIHNpemVvZihlbnRyeS0+ZXhwcnN0 YXRlKSk7CkBAIC0yMjUwLDYgKzIyODQsNyBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXRE YXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJZW50cnktPnB1YmFjdGlvbnMucHViZGVs ZXRlID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID0gZmFsc2U7CiAJ CWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRkbF90YWJsZSA9IGZhbHNlOworCQllbnRyeS0+cHViYWN0 aW9ucy5wdWJkZGxfaW5kZXggPSBmYWxzZTsKIAogCQkvKgogCQkgKiBUdXBsZSBzbG90cyBjbGVh bnVwcy4gKFdpbGwgYmUgcmVidWlsdCBsYXRlciBpZiBuZWVkZWQpLgpAQCAtMjM2NCw2ICsyMzk5 LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVs YXRpb24pCiAJCQkJZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRlIHw9IHB1Yi0+cHViYWN0aW9u cy5wdWJkZWxldGU7CiAJCQkJZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgfD0gcHViLT5w dWJhY3Rpb25zLnB1YnRydW5jYXRlOwogCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRkbF90YWJs ZSB8PSBwdWItPnB1YmFjdGlvbnMucHViZGRsX3RhYmxlOworCQkJCWVudHJ5LT5wdWJhY3Rpb25z LnB1YmRkbF9pbmRleCB8PSBwdWItPnB1YmFjdGlvbnMucHViZGRsX2luZGV4OwogCiAJCQkJLyoK IAkJCQkgKiBXZSB3YW50IHRvIHB1Ymxpc2ggdGhlIGNoYW5nZXMgYXMgdGhlIHRvcC1tb3N0IGFu Y2VzdG9yCkBAIC0yNDI4LDYgKzI0NjQsNDAgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0 RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJcmV0dXJuIGVudHJ5OwogfQogCisvKgor ICogVGhpcyBsb29rcyB1cCBhbGwgcHVibGljYXRpb25zIGFuZCBidWlsZCB0aGUgY2FjaGUgYWJv dXQgd2hpY2ggRERMcyB0bworICogcHVibGlzaC4KKyAqLworc3RhdGljIHZvaWQKK2J1aWxkX2Rk bF9zeW5jX2NhY2hlKFBHT3V0cHV0RGF0YSAqZGF0YSkKK3sKKwlMaXN0Q2VsbAkgKmxjOworCU1l bW9yeUNvbnRleHQgb2xkY3R4OworCisJaWYgKGRkbGNhY2hlID09IE5VTEwpCisJeworCQlvbGRj dHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQ2FjaGVNZW1vcnlDb250ZXh0KTsKKwkJZGRsY2Fj aGUgPSAoRERMU3luY0NhY2hlICopIHBhbGxvYzAoc2l6ZW9mKERETFN5bmNDYWNoZSkpOworCQlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwl9CisKKwlpZiAoZGRsY2FjaGUtPnZhbGlk KQorCQlyZXR1cm47CisKKwlyZWxvYWRfcHVibGljYXRpb25zKGRhdGEpOworCisJZm9yZWFjaChs YywgZGF0YS0+cHVibGljYXRpb25zKQorCXsKKwkJUHVibGljYXRpb24gKnB1YiA9IGxmaXJzdChs Yyk7CisKKwkJZGRsY2FjaGUtPnB1YmluZGV4IHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJkZGxfaW5k ZXg7CisJfQorCisJZGRsY2FjaGUtPnZhbGlkID0gdHJ1ZTsKKworCXJldHVybjsKK30KKwogLyoK ICAqIENsZWFudXAgbGlzdCBvZiBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgYW5kIHVwZGF0ZSB0aGUg c2NoZW1hX3NlbnQgZmxhZy4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCA5 MTk4ZGEyZWIxLi4xMjI1OWM5ZGQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAg LTU3MjEsNiArNTcyMSw3IEBAIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24g cmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIAkJcHViZGVzYy0+cHViYWN0aW9u cy5wdWJkZWxldGUgfD0gcHViZm9ybS0+cHViZGVsZXRlOwogCQlwdWJkZXNjLT5wdWJhY3Rpb25z LnB1YnRydW5jYXRlIHw9IHB1YmZvcm0tPnB1YnRydW5jYXRlOwogCQlwdWJkZXNjLT5wdWJhY3Rp b25zLnB1YmRkbF90YWJsZSB8PSBwdWJmb3JtLT5wdWJkZGxfdGFibGU7CisJCXB1YmRlc2MtPnB1 YmFjdGlvbnMucHViZGRsX2luZGV4IHw9IHB1YmZvcm0tPnB1YmRkbF9pbmRleDsKIAogCQkvKgog CQkgKiBDaGVjayBpZiBhbGwgY29sdW1ucyByZWZlcmVuY2VkIGluIHRoZSBmaWx0ZXIgZXhwcmVz c2lvbiBhcmUgcGFydApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggNTI2OTg3NDE4Yy4uMzRjZWRjMDQzMiAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jCkBAIC00MDY1LDYgKzQwNjUsNyBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAq Zm91dCwgaW50ICpudW1QdWJsaWNhdGlvbnMpCiAJaW50CQkJaV9wdWJkZWxldGU7CiAJaW50CQkJ aV9wdWJ0cnVuY2F0ZTsKIAlpbnQJCQlpX3B1YmRkbF90YWJsZTsKKwlpbnQJCQlpX3B1YmRkbF9p bmRleDsKIAlpbnQJCQlpX3B1YnZpYXJvb3Q7CiAJaW50CQkJaSwKIAkJCQludHVwczsKQEAgLTQw ODQsMjUgKzQwODUsMjUgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGludCAqbnVt UHVibGljYXRpb25zKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNF TEVDVCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5wdWJuYW1lLCAiCiAJCQkJCQkJICJwLnB1Ym93bmVy LCAiCi0JCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBw LnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgcC5wdWJkZGxfdGFibGUsIHAucHVidmlhcm9vdCAi CisJCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1 YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgcC5wdWJkZGxfdGFibGUsIHAucHViZGRsX2luZGV4LCBw LnB1YnZpYXJvb3QgIgogCQkJCQkJCSAiRlJPTSBwZ19wdWJsaWNhdGlvbiBwIik7CiAJZWxzZSBp ZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxMzAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KHF1ZXJ5LAogCQkJCQkJCSAiU0VMRUNUIHAudGFibGVvaWQsIHAub2lkLCBwLnB1Ym5hbWUsICIK IAkJCQkJCQkgInAucHVib3duZXIsICIKLQkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymlu c2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBmYWxzZSBhcyBw LnB1YmRkbF90YWJsZSwgcC5wdWJ2aWFyb290ICIKKwkJCQkJCQkgInAucHViYWxsdGFibGVzLCBw LnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBmYWxz ZSBhcyBwLnB1YmRkbF90YWJsZSwgZmFsc2UgYXMgcC5wdWJkZGxfaW5kZXgsIHAucHVidmlhcm9v dCAiCiAJCQkJCQkJICJGUk9NIHBnX3B1YmxpY2F0aW9uIHAiKTsKIAllbHNlIGlmIChmb3V0LT5y ZW1vdGVWZXJzaW9uID49IDExMDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJ CQkJCQkJICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAucHVibmFtZSwgIgogCQkJCQkJCSAi cC5wdWJvd25lciwgIgotCQkJCQkJCSAicC5wdWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1 YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIGZhbHNlIGFzIHAucHViZGRsX3Rh YmxlLCBmYWxzZSBBUyBwdWJ2aWFyb290ICIKKwkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1 Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBmYWxzZSBh cyBwLnB1YmRkbF90YWJsZSwgZmFsc2UgYXMgcC5wdWJkZGxfaW5kZXgsIGZhbHNlIEFTIHB1YnZp YXJvb3QgIgogCQkJCQkJCSAiRlJPTSBwZ19wdWJsaWNhdGlvbiBwIik7CiAJZWxzZQogCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9p ZCwgcC5wdWJuYW1lLCAiCiAJCQkJCQkJICJwLnB1Ym93bmVyLCAiCi0JCQkJCQkJICJwLnB1YmFs bHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgZmFsc2UgQVMg cHVidHJ1bmNhdGUsIGZhbHNlIGFzIHAucHViZGRsX3RhYmxlLCBmYWxzZSBBUyBwdWJ2aWFyb290 ICIKKwkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAu cHViZGVsZXRlLCBmYWxzZSBBUyBwdWJ0cnVuY2F0ZSwgZmFsc2UgYXMgcC5wdWJkZGxfdGFibGUs IGZhbHNlIGFzIHAucHViZGRsX2luZGV4LCBmYWxzZSBBUyBwdWJ2aWFyb290ICIKIAkJCQkJCQkg IkZST00gcGdfcHVibGljYXRpb24gcCIpOwogCiAJcmVzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQs IHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOwpAQCAtNDExOSw2ICs0MTIwLDcgQEAgZ2V0 UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtUHVibGljYXRpb25zKQogCWlfcHVi ZGVsZXRlID0gUFFmbnVtYmVyKHJlcywgInB1YmRlbGV0ZSIpOwogCWlfcHVidHJ1bmNhdGUgPSBQ UWZudW1iZXIocmVzLCAicHVidHJ1bmNhdGUiKTsKIAlpX3B1YmRkbF90YWJsZSA9IFBRZm51bWJl cihyZXMsICJwdWJkZGxfdGFibGUiKTsKKwlpX3B1YmRkbF9pbmRleCA9IFBRZm51bWJlcihyZXMs ICJwdWJkZGxfaW5kZXgiKTsKIAlpX3B1YnZpYXJvb3QgPSBQUWZudW1iZXIocmVzLCAicHVidmlh cm9vdCIpOwogCiAJcHViaW5mbyA9IHBnX21hbGxvYyhudHVwcyAqIHNpemVvZihQdWJsaWNhdGlv bkluZm8pKTsKQEAgLTQxNDQsNiArNDE0Niw4IEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpm b3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykKIAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGks IGlfcHVidHJ1bmNhdGUpLCAidCIpID09IDApOwogCQlwdWJpbmZvW2ldLnB1YmRkbF90YWJsZSA9 CiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YmRkbF90YWJsZSksICJ0IikgPT0g MCk7CisJCXB1YmluZm9baV0ucHViZGRsX2luZGV4ID0KKwkJCShzdHJjbXAoUFFnZXR2YWx1ZShy ZXMsIGksIGlfcHViZGRsX2luZGV4KSwgInQiKSA9PSAwKTsKIAkJcHViaW5mb1tpXS5wdWJ2aWFy b290ID0KIAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHVidmlhcm9vdCksICJ0Iikg PT0gMCk7CiAKQEAgLTQyMjUsOCArNDIyOSwyNSBAQCBkdW1wUHVibGljYXRpb24oQXJjaGl2ZSAq Zm91dCwgY29uc3QgUHVibGljYXRpb25JbmZvICpwdWJpbmZvKQogCiAJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocXVlcnksICInIik7CiAKKwlmaXJzdCA9IHRydWU7CisJYXBwZW5kUFFFeHBCdWZmZXJT dHIocXVlcnksICIsIGRkbCA9ICciKTsKKwogCWlmIChwdWJpbmZvLT5wdWJkZGxfdGFibGUpCi0J CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBkZGwgPSAndGFibGUnIik7CisJeworCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgInRhYmxlIik7CisJCWZpcnN0ID0gZmFsc2U7CisJ fQorCisJaWYgKHB1YmluZm8tPnB1YmRkbF9pbmRleCkKKwl7CisJCWlmICghZmlyc3QpCisJCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgIik7CisKKwkJYXBwZW5kUFFFeHBCdWZmZXJT dHIocXVlcnksICJpbmRleCIpOworCQlmaXJzdCA9IGZhbHNlOworCX0KKworCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LCAiJyIpOwogCiAJaWYgKHB1YmluZm8tPnB1YnZpYXJvb3QpCiAJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9 IHRydWUiKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IGJkNWY4ZmI2NjkuLjlhZTZhMzhlMDAgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuaApAQCAtNjIxLDYgKzYyMSw3IEBAIHR5cGVkZWYgc3RydWN0IF9QdWJsaWNhdGlvbkluZm8K IAlib29sCQlwdWJkZWxldGU7CiAJYm9vbAkJcHVidHJ1bmNhdGU7CiAJYm9vbAkJcHViZGRsX3Rh YmxlOworCWJvb2wJCXB1YmRkbF9pbmRleDsKIAlib29sCQlwdWJ2aWFyb290OwogfSBQdWJsaWNh dGlvbkluZm87CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jp bi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggYTQxNTAwZGVlZC4uZmIzZWI2N2U5OCAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMK QEAgLTYxODMsNyArNjE4Myw3IEBAIGxpc3RQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVy bikKIAlQUUV4cEJ1ZmZlckRhdGEgYnVmOwogCVBHcmVzdWx0ICAgKnJlczsKIAlwcmludFF1ZXJ5 T3B0IG15b3B0ID0gcHNldC5wb3B0OwotCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9jb2x1 bW5zW10gPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2V9OworCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9jb2x1 bW5zW10gPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKIAogCWlmIChwc2V0LnN2ZXJzaW9uIDwgMTAw MDAwKQogCXsKQEAgLTYyMDUsOSArNjIwNSwxMyBAQCBsaXN0UHVibGljYXRpb25zKGNvbnN0IGNo YXIgKnBhdHRlcm4pCiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJPd25lciIpLAogCQkJCQkgIGdldHRl eHRfbm9vcCgiQWxsIHRhYmxlcyIpKTsKIAlpZiAocHNldC5zdmVyc2lvbiA+PSAxNjAwMDApCisJ ewogCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAotCQkJCQkJICAiLFxuICBwdWJkZGxfdGFibGUg QVMgXCIlc1wiIiwKLQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJUYWJsZSBERExzIikpOworCQkJCQkJ ICAiLFxuICBwdWJkZGxfdGFibGUgQVMgXCIlc1wiLFxuIgorCQkJCQkJICAiICBwdWJkZGxfaW5k ZXggQVMgXCIlc1wiXG4iLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIlRhYmxlIERETHMiKSwKKwkJ CQkJCSAgZ2V0dGV4dF9ub29wKCJJbmRleCBERExzIikpOworCX0KIAlhcHBlbmRQUUV4cEJ1ZmZl cigmYnVmLAogCQkJCQkgICIsXG4gIHB1Ymluc2VydCBBUyBcIiVzXCIsXG4iCiAJCQkJCSAgIiAg cHVidXBkYXRlIEFTIFwiJXNcIixcbiIKQEAgLTYzMzksNyArNjM0Myw4IEBAIGRlc2NyaWJlUHVi bGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQkJCSAgIiAgcHViYWxsdGFibGVzIik7 CiAJaWYgKGhhc19wdWJkZGwpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCi0JCQkJCQkJ ICIsIHB1YmRkbF90YWJsZSIpOworCQkJCQkJCSAiLCBwdWJkZGxfdGFibGUsIHB1YmRkbF9pbmRl eCIpOworCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwKIAkJCQkJCSAiLCAgcHViaW5zZXJ0 LCBwdWJ1cGRhdGUsIHB1YmRlbGV0ZSIpOwogCWlmIChoYXNfcHVidHJ1bmNhdGUpCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5kZXggNzRiMjhkNzM1MC4uNDY3NzMxYzYxYSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApAQCAtNjYsNiArNjYsOSBAQCBDQVRBTE9H KHBnX3B1YmxpY2F0aW9uLDYxMDQsUHVibGljYXRpb25SZWxhdGlvbklkKQogCiAJLyogdHJ1ZSBp ZiB0YWJsZSBkZGxzIGFyZSBwdWJsaXNoZWQgKi8KIAlib29sCQlwdWJkZGxfdGFibGU7CisKKwkv KiB0cnVlIGlmIGluZGV4IGRkbHMgYXJlIHB1Ymxpc2hlZCAqLworCWJvb2wJCXB1YmRkbF9pbmRl eDsKIH0gRm9ybURhdGFfcGdfcHVibGljYXRpb247CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAg LTg1LDYgKzg4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25BY3Rpb25zCiAJYm9vbAkJ cHViZGVsZXRlOwogCWJvb2wJCXB1YnRydW5jYXRlOwogCWJvb2wJCXB1YmRkbF90YWJsZTsKKwli b29sCQlwdWJkZGxfaW5kZXg7CiB9IFB1YmxpY2F0aW9uQWN0aW9uczsKIAogdHlwZWRlZiBzdHJ1 Y3QgUHVibGljYXRpb25EZXNjCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9k ZGxtZXNzYWdlLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgKaW5kZXgg NzdkZjZlYTExYS4uMWE0YWNhOGRkNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vZGRsbWVzc2FnZS5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RkbG1lc3NhZ2Uu aApAQCAtMjYsNyArMjYsOCBAQCB0eXBlZGVmIGVudW0gRGVwYXJzZWRDb21tYW5kVHlwZQogCURD VF9UYWJsZURyb3BFbmQsCiAJRENUX1RhYmxlQWx0ZXIsCiAJRENUX09iamVjdENyZWF0ZSwKLQlE Q1RfT2JqZWN0RHJvcAorCURDVF9PYmplY3REcm9wU3RhcnQsCisJRENUX09iamVjdERyb3BFbmQK IH0gRGVwYXJzZWRDb21tYW5kVHlwZTsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcHNxbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0 CmluZGV4IDFjNmYzMzA5NWMuLjNlNmQyNzkxYzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcHNxbC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3Fs Lm91dApAQCAtNjIyMyw5ICs2MjIzLDkgQEAgTGlzdCBvZiBzY2hlbWFzCiAoMCByb3dzKQogCiBc ZFJwICJuby5zdWNoLnB1YmxpY2F0aW9uIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKLSBOYW1lIHwgT3duZXIgfCBBbGwgdGFibGVzIHwg VGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAotLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKKyBO YW1lIHwgT3duZXIgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KICgwIHJvd3MpCiAKIFxk UnMgIm5vLnN1Y2guc3Vic2NyaXB0aW9uIgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1Ymxp Y2F0aW9uLm91dAppbmRleCA3ZDg2OTc3YjI5Li42NjYwZjQxNjc0IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtMzAsMjAgKzMwLDIwIEBAIEVSUk9SOiAg Y29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMKIExJTkUgMTogLi4udWJfeHh4IFdJVEgg KHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gJ3RydWUnLCBwdWJsaXNoX3ZpLi4uCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgogXGRScAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucwotICAgICAgICBOYW1lICAgICAgICB8ICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSB0 ZXN0cGliX2luc190cnVuY3QgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8 IGYKLSB0ZXN0cHViX2RlZmF1bHQgICAgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAg ICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKKyAgICAgICAgTmFtZSAgICAgICAgfCAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4 IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ZXN0cGliX2luc190cnVuY3QgfCByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgdGVzdHB1 Yl9kZWZhdWx0ICAgIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAg ICAgICAgIHwgZgogKDIgcm93cykKIAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9kZWZhdWx0 IFNFVCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlJyk7CiBcZFJwCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVi bGljYXRpb25zCi0gICAgICAgIE5hbWUgICAgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHRlc3RwaWJfaW5zX3RydW5j dCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwg dCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgotIHRlc3RwdWJfZGVm YXVsdCAgICB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHB1YmxpY2F0aW9ucworICAgICAgICBOYW1lICAgICAgICB8ICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBm ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyB0ZXN0cHViX2RlZmF1bHQgICAgfCBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCiAoMiBy b3dzKQogCiAtLS0gYWRkaW5nIHRhYmxlcwpAQCAtOTAsNyArOTAsNyBAQCBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2ZvcnRhYmxlIEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2Zv cnRhYmxlCiAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERE THMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgdAogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgog VGFibGVzIGZyb20gc2NoZW1hczoKQEAgLTEwMiw3ICsxMDIsNyBAQCBBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX2ZvcnRhYmxlIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0 YWJsZQogICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IHQKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKIApA QCAtMTEyLDcgKzExMiw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgU0VU IFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CiBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdCIKIApAQCAtMTI2LDcgKzEyNiw3IEBAIFJF U0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEKICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CiBUYWJs ZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBA IC0xMzgsNyArMTM4LDcgQEAgQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgQURE IFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKICAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBmCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CiBU YWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6 CkBAIC0xNTAsNyArMTUwLDcgQEAgQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEg RFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGs7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hCiAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCBmICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg dAogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QiCiAKQEAgLTE2NCw3ICsxNjQs NyBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgVEFCTEUgcHViX3Rl c3QudGVzdHB1Yl9ub3BrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYQogICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYK KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQKIFRhYmxlczoKICAgICAi cHViX3Rlc3QudGVzdHB1Yl9ub3BrIgogCkBAIC0xODksNyArMTg5LDcgQEAgUHVibGljYXRpb25z OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9mb3JhbGx0YWJsZXMKICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg VGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCiAoMSByb3cpCiAKIERST1AgVEFCTEUgdGVzdHB1 Yl90YmwyOwpAQCAtMjA0LDcgKzIwNCw3IEBAIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViMwogICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IHQKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsMyIKICAg ICAicHVibGljLnRlc3RwdWJfdGJsM2EiCkBAIC0yMTMsNyArMjEzLDcgQEAgVGFibGVzOgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjQKICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCB0CiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3RibDMiCiAKQEAg LTIzNyw3ICsyMzcsNyBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnBhcnRlZCBBREQg VEFCTEUgdGVzdHB1Yl9wYXJ0ZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCiAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgZgorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAg IHwgZiAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAogVGFibGVzOgog ICAgICJwdWJsaWMudGVzdHB1Yl9wYXJ0ZWQiCiAKQEAgLTI1NSw3ICsyNTUsNyBAQCBBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcnBhcnRlZCBTRVQgKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290ID0gdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCiAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAogVGFibGVzOgogICAgICJwdWJs aWMudGVzdHB1Yl9wYXJ0ZWQiCiAKQEAgLTI4Nyw3ICsyODcsNyBAQCBSRVNFVCBjbGllbnRfbWlu X21lc3NhZ2VzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjUKICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAg ICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0 cHViX3JmX3RibDEiCiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDIiIFdIRVJFICgoYyA8PiAn dGVzdCc6OnRleHQpIEFORCAoZCA8IDUpKQpAQCAtMzAzLDcgKzMwMyw3IEBAIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWI1IEFERCBUQUJMRSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPiAxMDAw IEFORCBlIDwgMjAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViNQogICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRl c3RwdWJfcmZfdGJsMSIKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMiIgV0hFUkUgKChjIDw+ ICd0ZXN0Jzo6dGV4dCkgQU5EIChkIDwgNSkpCkBAIC0zMjIsNyArMzIyLDcgQEAgQUxURVIgUFVC TElDQVRJT04gdGVzdHB1YjUgRFJPUCBUQUJMRSB0ZXN0cHViX3JmX3RibDI7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQogICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwg ZiAgICAgICB8IGYgICAgICAgICB8IGYKKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAg ICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMSIKICAgICAicHVi bGljLnRlc3RwdWJfcmZfdGJsMyIgV0hFUkUgKChlID4gMTAwMCkgQU5EIChlIDwgMjAwMCkpCkBA IC0zMzMsNyArMzMzLDcgQEAgQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgU0VUIFRBQkxFIHRl c3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA+IDMwMCBBTkQgZSA8IDUwMCkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1CiAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAg ICAgIHwgZiAgICAgICAgIHwgZgorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAg IHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwzIiBXSEVSRSAoKGUgPiAz MDApIEFORCAoZSA8IDUwMCkpCiAKQEAgLTM2OSw3ICszNjksNyBAQCBSRVNFVCBjbGllbnRfbWlu X21lc3NhZ2VzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1Yl9zeW50YXgxCiAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8 IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMu dGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwzIiBXSEVSRSAoZSA8 IDk5OSkKQEAgLTM4Miw3ICszODIsNyBAQCBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9z eW50YXgyCiAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERE THMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgfCBmICAg ICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90Ymwx IgogICAgICJ0ZXN0cHViX3JmX3NjaGVtYTEudGVzdHB1Yl9yZl90Ymw1IiBXSEVSRSAoaCA8IDk5 OSkKQEAgLTUwMCw3ICs1MDAsNyBAQCBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjYK ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCB0CiBUYWJsZXM6CiAgICAgInRlc3RwdWJfcmZfc2NoZW1hMi50ZXN0cHViX3Jm X3RibDYiIFdIRVJFIChpIDwgOTkpCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgpAQCAtNzE3LDcgKzcx Nyw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfdGFibGVfaW5zIEFERCBUQUJMRSB0ZXN0 cHViX3RibDUgKGEpOwkJLS0gb2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1Yl90YWJsZV9pbnMKICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCB0ICAgICAgICAg fCBmCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCBmICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCB0CiBUYWJsZXM6CiAg ICAgInB1YmxpYy50ZXN0cHViX3RibDUiIChhKQogCkBAIC04OTQsNyArODk0LDcgQEAgQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9ib3RoX2ZpbHRlcnMgQUREIFRBQkxFIHRlc3RwdWJfdGJsX2Jv dGhfZmlsdGVycyAoYSxjKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9ib3RoX2ZpbHRlcnMKICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBm CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBm ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CiBUYWJsZXM6CiAgICAg InB1YmxpYy50ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMiIChhLCBjKSBXSEVSRSAoYyA8PiAxKQog CkBAIC0xMTAyLDcgKzExMDIsNyBAQCBFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnRi bCIgYWxyZWFkeSBleGlzdHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGJsCiAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAogVGFibGVzOgogICAgICJw dWJfdGVzdC50ZXN0cHViX25vcGsiCiAgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCkBAIC0xMTQz LDcgKzExNDMsNyBAQCBQdWJsaWNhdGlvbnM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAg ICAgICAgfCBmCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJs ZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKICAgICAicHVibGljLnRlc3RwdWJfdGJs MSIKQEAgLTEyMjQsNyArMTIyNCw3IEBAIERST1AgVEFCTEUgdGVzdHB1Yl90YmwxOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9kZWZh dWx0CiAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgogKDEgcm93KQogCiAtLSBmYWlsIC0gbXVzdCBiZSBvd25lciBvZiBw dWJsaWNhdGlvbgpAQCAtMTIzNCwyMCArMTIzNCwyMCBAQCBFUlJPUjogIG11c3QgYmUgb3duZXIg b2YgcHVibGljYXRpb24gdGVzdHB1Yl9kZWZhdWx0CiBSRVNFVCBST0xFOwogQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9kZWZhdWx0IFJFTkFNRSBUTyB0ZXN0cHViX2ZvbzsKIFxkUnAgdGVzdHB1 Yl9mb28KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHB1YmxpY2F0aW9ucwotICAgIE5hbWUgICAgIHwgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gdGVzdHB1Yl9mb28gfCByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKKyAg ICBOYW1lICAgICB8ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJs ZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdGVzdHB1Yl9mb28gfCByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCiAoMSByb3cp CiAKIC0tIHJlbmFtZSBiYWNrIHRvIGtlZXAgdGhlIHJlc3Qgc2ltcGxlCiBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2ZvbyBSRU5BTUUgVE8gdGVzdHB1Yl9kZWZhdWx0OwogQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9kZWZhdWx0IE9XTkVSIFRPIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7 CiBcZFJwIHRlc3RwdWJfZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gdGVzdHB1Yl9kZWZhdWx0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMiB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXgg RERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ZXN0cHViX2RlZmF1bHQgfCByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgogKDEgcm93KQogCiAt LSBhZGRpbmcgc2NoZW1hcyBhbmQgdGFibGVzCkBAIC0xMjY2LDcgKzEyNjYsNyBAQCBDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0MTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViMV9mb3JzY2hlbWEKICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAg ICJwdWJfdGVzdDEiCiAKQEAgLTEyNzUsNyArMTI3NSw3IEBAIENSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViMl9mb3JzY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVz dDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjJfZm9yc2NoZW1hCiAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAi cHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xMjkyLDcgKzEyOTIsNyBAQCBSRVNFVCBj bGllbnRfbWluX21lc3NhZ2VzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQogICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IGYKKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IGYgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQKIFRhYmxlcyBmcm9t IHNjaGVtYXM6CiAgICAgInB1YmxpYyIKIApAQCAtMTMwMCw3ICsxMzAwLDcgQEAgVGFibGVzIGZy b20gc2NoZW1hczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViNF9mb3JzY2hlbWEKICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CiBUYWJsZXMgZnJvbSBzY2hlbWFz OgogICAgICJDVVJSRU5UX1NDSEVNQSIKIApAQCAtMTMwOCw3ICsxMzA4LDcgQEAgVGFibGVzIGZy b20gc2NoZW1hczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViNV9mb3JzY2hlbWEKICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CiBUYWJsZXMgZnJvbSBzY2hlbWFz OgogICAgICJDVVJSRU5UX1NDSEVNQSIKICAgICAicHVibGljIgpAQCAtMTMxNyw3ICsxMzE3LDcg QEAgVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNl9mb3JzY2hlbWEKICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCBmCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAg ICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CiBUYWJsZXMg ZnJvbSBzY2hlbWFzOgogICAgICJDVVJSRU5UX1NDSEVNQSIKICAgICAicHVibGljIgpAQCAtMTMy Niw3ICsxMzI2LDcgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQogICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IHQKIFRhYmxlczoKICAgICAiQ1VSUkVOVF9TQ0hFTUEuQ1VSUkVOVF9TQ0hFTUEiCiAKQEAgLTEz NjMsNyArMTM2Myw3IEBAIERST1AgU0NIRU1BIHB1Yl90ZXN0MzsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCB0CiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90 ZXN0MiIKQEAgLTEzNzQsNyArMTM3NCw3IEBAIEFMVEVSIFNDSEVNQSBwdWJfdGVzdDEgUkVOQU1F IHRvIHB1Yl90ZXN0MV9yZW5hbWVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQogICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICB8IGYgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQKIFRhYmxlcyBm cm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MV9yZW5hbWVkIgogICAgICJwdWJfdGVzdDIiCkBA IC0xMzg0LDcgKzEzODQsNyBAQCBBTFRFUiBTQ0hFTUEgcHViX3Rlc3QxX3JlbmFtZWQgUkVOQU1F IHRvIHB1Yl90ZXN0MTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CiBUYWJsZXMgZnJvbSBzY2hl bWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTEzOTUsNyArMTM5NSw3 IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBBREQgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCiAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAogVGFibGVzIGZyb20gc2No ZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xNDA3LDcgKzE0MDcs NyBAQCBFUlJPUjogIHNjaGVtYSAibm9uX2V4aXN0ZW50X3NjaGVtYSIgZG9lcyBub3QgZXhpc3QK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi MV9mb3JzY2hlbWEKICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFi bGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCB0CiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJf dGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE0MTksNyArMTQxOSw3IEBAIEVSUk9SOiAgc2No ZW1hICJwdWJfdGVzdDEiIGlzIGFscmVhZHkgbWVtYmVyIG9mIHB1YmxpY2F0aW9uICJ0ZXN0cHVi MV9mb3JzY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCiAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAogVGFibGVzIGZyb20gc2NoZW1h czoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xNDMwLDcgKzE0MzAsNyBA QCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgRFJPUCBUQUJMRVMgSU4gU0NI RU1BIHB1Yl90ZXN0MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CiBUYWJsZXMgZnJvbSBzY2hl bWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTE0NDEsNyArMTQ0MSw3IEBAIEVSUk9SOiAgdGFi bGVzIGZyb20gc2NoZW1hICJwdWJfdGVzdDIiIGFyZSBub3QgcGFydCBvZiB0aGUgcHVibGljYXRp b24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViMV9mb3JzY2hlbWEKICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg VGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJw dWJfdGVzdDEiCiAKQEAgLTE0NTIsNyArMTQ1Miw3IEBAIEVSUk9SOiAgc2NoZW1hICJub25fZXhp c3RlbnRfc2NoZW1hIiBkb2VzIG5vdCBleGlzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQogICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IGYKKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQKIFRh YmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIApAQCAtMTQ2Miw3ICsxNDYyLDcg QEAgQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1AgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCiAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAogKDEgcm93KQogCiAtLSBh bHRlciBwdWJsaWNhdGlvbiBzZXQgbXVsdGlwbGUgc2NoZW1hCkBAIC0xNDcxLDcgKzE0NzEsNyBA QCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgU0VUIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3Rlc3QxLCBwdWJfdGVzdDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCiAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZgorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAg ICAgIHwgZiAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAogVGFibGVz IGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xNDgz LDcgKzE0ODMsNyBAQCBFUlJPUjogIHNjaGVtYSAibm9uX2V4aXN0ZW50X3NjaGVtYSIgZG9lcyBu b3QgZXhpc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViMV9mb3JzY2hlbWEKICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CiBUYWJsZXMgZnJvbSBzY2hlbWFzOgog ICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE0OTUsNyArMTQ5NSw3IEBAIEFM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBTRVQgVEFCTEVTIElOIFNDSEVNQSBw dWJfdGVzdDEsIHB1Yl90ZXN0MTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CiBUYWJsZXMgZnJv bSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTE1NzcsNyArMTU3Nyw3IEBAIFJFU0VU IGNsaWVudF9taW5fbWVzc2FnZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1hCiAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgZgorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAg IHwgZiAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAogKDEgcm93KQog CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViM19mb3JzY2hlbWEgU0VUIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3Rlc3QxOwpAQCAtMTU4NSw3ICsxNTg1LDcgQEAgQUxURVIgUFVCTElDQVRJT04gdGVz dHB1YjNfZm9yc2NoZW1hIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MTsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hl bWEKICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCB0CiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAK QEAgLTE1OTgsNyArMTU5OCw3IEBAIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYV9m b3J0YWJsZQogICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBE RExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IHQKIFRhYmxlczoKICAgICAicHViX3Rlc3QyLnRibDEiCiBUYWJs ZXMgZnJvbSBzY2hlbWFzOgpAQCAtMTYwOCw3ICsxNjA4LDcgQEAgVGFibGVzIGZyb20gc2NoZW1h czoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf Zm9ydGFibGVfZm9yc2NoZW1hCiAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAogVGFibGVzOgogICAgICJwdWJfdGVzdDIu dGJsMSIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6Ci0tIAoyLjMwLjAud2luZG93cy4yCgo= --_007_OS0PR01MB571614EE7EEDBF7049DA4EAE94939OS0PR01MB5716jpnp_--