From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2071.outbound.protection.outlook.com [40.107.105.71]) by sourceware.org (Postfix) with ESMTPS id 1F5DB3858C5F for ; Fri, 10 Feb 2023 10:35:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1F5DB3858C5F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5uI5E0oiC11gsoM014BPvgs6+n3WMkTEv3Me5XwrJcU=; b=4U8uqotuSiXM7uUiBTNVx4Le/uyTVHxrlXcf9nvyPX8GA1y8/OUuYDsKkuRwxkX0GIGmqZV9DAVqPpsyy/47z+203WuabPqOJvwbXVFTyh4NhV4B8qXPDUvjcCmFVD/V++e42HSmfKwBB6DtgH97DYQZsdY+9Zng3sK+uvyxswA= Received: from DB6P192CA0016.EURP192.PROD.OUTLOOK.COM (2603:10a6:4:b8::26) by DU2PR08MB7312.eurprd08.prod.outlook.com (2603:10a6:10:2e7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.19; Fri, 10 Feb 2023 10:35:16 +0000 Received: from DBAEUR03FT065.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:b8:cafe::b4) by DB6P192CA0016.outlook.office365.com (2603:10a6:4:b8::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.17 via Frontend Transport; Fri, 10 Feb 2023 10:35:16 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT065.mail.protection.outlook.com (100.127.142.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.19 via Frontend Transport; Fri, 10 Feb 2023 10:35:16 +0000 Received: ("Tessian outbound baf1b7a96f25:v132"); Fri, 10 Feb 2023 10:35:16 +0000 X-CR-MTA-TID: 64aa7808 Received: from 55661a4aed04.3 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 46A65D14-79C8-4207-8339-C032454853C1.1; Fri, 10 Feb 2023 10:35:10 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 55661a4aed04.3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 10 Feb 2023 10:35:10 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bVRKkk0/3mU+p4qnxr1X6U9o9lKy03qZ0PIpitBct6biMg5jkBdYVTNLx0iAdZLUA0d6y6NYy9Hhcu4PVBWivf/c7Zy01pZl5F4qL30F2Ha282Pz+I2O//GE/yU/dfUssZnw8OfJUVPiRs2RAr3XuVFZhbTM1coK/3kFNf6jHi8mmTA1jbkAlACRz36CwnwhkNaC03ILO8aR9lOuLfIPlA0TlqCvwL4T0P8UgXFmRZPheVYMLjCAdcU9slvHRQ27LdP/ymN07H+XGPUu09K3TDpVmqSdoR9cFE1N71wcVPLYwmJbn1EbYFZvBP1wMoGF/mY827XkLdz3SXp0cd2dzA== 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=5uI5E0oiC11gsoM014BPvgs6+n3WMkTEv3Me5XwrJcU=; b=czR3xR6JyxpdDvDam7iP49vjjm2FrqMjWC07Kl9GL9Ynnk+jdTzhNp4zotBIo2hf8xwtgI8rkaPSBA+a/jY6PG05VjTao0xk8xXYwUni4SKbXtLfGXlYiCBJJx6LG/wGnI1NWKXwreUAdQ7w9DJb5su5v1PP+r/g1GvzKb6dJ/e+Mt9V5N9XXAEFeJESAemmhORi8+/TxnVlgDkBepzqKhf+RvzCj0udod7uV7tu4jaSk7RkpSPRJphjv/VPymwdOQdjEy3pAqAH7pwWh+DrpE0fFxsrBNAFB0oavkf8PL6zNZWPALuZ96netxVOAgYZdrvElg+Qv9+3WaXzVx+5Wg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5uI5E0oiC11gsoM014BPvgs6+n3WMkTEv3Me5XwrJcU=; b=4U8uqotuSiXM7uUiBTNVx4Le/uyTVHxrlXcf9nvyPX8GA1y8/OUuYDsKkuRwxkX0GIGmqZV9DAVqPpsyy/47z+203WuabPqOJvwbXVFTyh4NhV4B8qXPDUvjcCmFVD/V++e42HSmfKwBB6DtgH97DYQZsdY+9Zng3sK+uvyxswA= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by PAWPR08MB10184.eurprd08.prod.outlook.com (2603:10a6:102:364::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.21; Fri, 10 Feb 2023 10:35:08 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::8b7b:e3be:cccb:1936]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::8b7b:e3be:cccb:1936%6]) with mapi id 15.20.6086.021; Fri, 10 Feb 2023 10:35:08 +0000 From: Tamar Christina To: Tamar Christina , "gcc-patches@gcc.gnu.org" CC: nd , Richard Earnshaw , Marcus Shawcroft , Kyrylo Tkachov , Richard Sandiford Subject: RE: [PATCH 2/2]AArch64 Update div-bitmask to implement new optab instead of target hook [PR108583] Thread-Topic: [PATCH 2/2]AArch64 Update div-bitmask to implement new optab instead of target hook [PR108583] Thread-Index: AQHZPKsPhccErB1fxUiGl/mFawAwQ67H/Viw Date: Fri, 10 Feb 2023 10:35:07 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 2CF722EC541ADD4E84449B38811F37E7.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|PAWPR08MB10184:EE_|DBAEUR03FT065:EE_|DU2PR08MB7312:EE_ X-MS-Office365-Filtering-Correlation-Id: d5e304d3-3a8c-4f20-c698-08db0b52800e x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: XL+CFakIOG0PnSWxmre5LKK07zokhnhggXJFPVR2hVnVFRIqMQGik/c4gCHCPxs0qswprbIieiZ+zy0t8EjH950s9jG1zpnj3wsVqL3Wdrkc7iOTp9BJPrckB3GTywPRXM0TH8gj90Wr4Z3d6z1Sll/t4QMKVIjAk/STNOWhvFs5jRV5oxsyb9jT6tebnLorTgRKh9FvXn7CAk6rcckCxu6FgaZgbYi76iH+rtycFYqZBKYKOMZGjxdKOVCJZBCHW6WAr1gXuNqEgwVv2VVe87IuoRY16BvlIDzv1SPZf6LzH7/Zi9teBuo9cDRwFUg5XsTYdtmQb1fmxJ6FYGn/1n3C6BcHUW3Tj/jdrAnq9ikh+MjX72pfZ0d8phnNMcZI99QuHzS/Xjq9g3XxXIiP0Pjs41NNEPwn33lZmA7q6615/Rt0YZ7mfCM69MOzJ0TQNLLf7cD6OjRbBPo4fPnTv9XeAgVrmj7Rw5OxB9FbEZGFA/pYDMgDCA0SdJjgPJ86mkEDOFidnQMuJpYtU6ICWhdKdfeOQo0UJBoTdWkwTT9q8yIHTFn2B/qiZtvrIbMgZDdd0OyQ6HF/PpUO4P+sz7CQTYJuAwSNYMCQ2cy5laGJ56jQoX9kG03R9XwxF3/kWebK4CjqO/r/cw1FgMXHyyYfD0NSdVHxK2HMP3Tt4fHNxqWfl+t7tbnb9fOhTd5nIRuoxw8dliIMF7RBWrJCrDIJWFTSnG7LlPquAnlFcno= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB5325.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(346002)(396003)(376002)(39860400002)(136003)(451199018)(86362001)(38070700005)(33656002)(122000001)(38100700002)(9686003)(4326008)(4743002)(186003)(8676002)(66446008)(66476007)(66556008)(66946007)(64756008)(76116006)(6506007)(8936002)(5660300002)(41300700001)(30864003)(52536014)(478600001)(26005)(55016003)(7696005)(316002)(54906003)(71200400001)(110136005)(83380400001)(53546011)(15650500001)(2906002)(357404004);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB10184 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT065.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 169b4e61-2610-4d0d-db91-08db0b527a95 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RgLU9w3fToCYl2y0Wt1oX5c70LTHVcRe6lpPi53dzh6048X2HXYtD7V1zdh3WrszGsheXrSSpIKRwnWOyF2cG1yWdSz/HaGSUbh8gUz3YhsQuRuxvO101Y8syTFrl+n3VWsc0HA5qDQ9y0OCGN4nLXXqf1MePd3TYwaaDmIf8USXyyKfWVGxwZ914Xx7cq3f4EWtNSSa3BXOHXY6RojRXMyO29w4416l6JvLb4HqW1yNLsEDztDyaeTy8wiXCYJfQMPfC6BfLWCWhNLvB9qjh//yqCEOYKktixVy4+I+T/HdtE1znD6NldTWRTl2bbVIR9YHfy2x+w2NbL3JK2ybPQYHN/mmTDE++osN2vUDhgp5euBx+3rtD8Oja42uAEeOWn72hrd7TOnJfq2ct7luq7uuGkHE2f60lyr6+vTzlh2t3v486BzU+UToYHoIBpiuIr45xuqCNlsSdhygmuk4R0uEOMXKSj9bxtuGVtsG3bFuL/YeYtHatrlz5AcMd0ZfKsDeUxg/6iY3CgjcCq0GfaJ4yKNX7lphnFLWyFnmWwr6oJEPz/RLrUV+V8xDISwHaVWH3e+YlSE9u71UpfhPlfyemfNxGFHb0w+Y6AA7lAY5NyjST3wnqxlYvb5pg3gIXGLxC8T2wtGlO8gplkiVSMdPt2n868Kfmqm46mIeCvjNs/VeBnaHpWGIK3HtEEpLggTg6fSYD6t7yoIYSIwVVAlnTY6UNT0mpiRzJXcGMfw= X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230025)(4636009)(136003)(39860400002)(396003)(376002)(346002)(451199018)(40470700004)(36840700001)(46966006)(8676002)(47076005)(54906003)(316002)(110136005)(81166007)(82740400003)(36860700001)(15650500001)(82310400005)(86362001)(2906002)(4326008)(356005)(33656002)(30864003)(40460700003)(83380400001)(70206006)(70586007)(41300700001)(40480700001)(5660300002)(186003)(8936002)(55016003)(52536014)(26005)(9686003)(4743002)(478600001)(7696005)(6506007)(53546011)(336012)(357404004);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2023 10:35:16.6732 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d5e304d3-3a8c-4f20-c698-08db0b52800e X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DBAEUR03FT065.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR08MB7312 X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_ASCII_DIVIDERS,KAM_DMARC_NONE,KAM_LOTSOFHASH,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: T29wcywgcmVhbGl6ZXMgSSBmb3Jnb3QgdG8gZmlsbCBpbiB0aGUgdGVzdCByZXN1bHRzLCB0aGVy ZSB3ZXJlIG5vIGlzc3VlcyDwn5iKDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g RnJvbTogR2NjLXBhdGNoZXMgPGdjYy1wYXRjaGVzLQ0KPiBib3VuY2VzK3RhbWFyLmNocmlzdGlu YT1hcm0uY29tQGdjYy5nbnUub3JnPiBPbiBCZWhhbGYgT2YgVGFtYXINCj4gQ2hyaXN0aW5hIHZp YSBHY2MtcGF0Y2hlcw0KPiBTZW50OiBUaHVyc2RheSwgRmVicnVhcnkgOSwgMjAyMyA1OjIyIFBN DQo+IFRvOiBnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZw0KPiBDYzogbmQgPG5kQGFybS5jb20+OyBS aWNoYXJkIEVhcm5zaGF3IDxSaWNoYXJkLkVhcm5zaGF3QGFybS5jb20+Ow0KPiBNYXJjdXMgU2hh d2Nyb2Z0IDxNYXJjdXMuU2hhd2Nyb2Z0QGFybS5jb20+OyBLeXJ5bG8gVGthY2hvdg0KPiA8S3ly eWxvLlRrYWNob3ZAYXJtLmNvbT47IFJpY2hhcmQgU2FuZGlmb3JkDQo+IDxSaWNoYXJkLlNhbmRp Zm9yZEBhcm0uY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0ggMi8yXUFBcmNoNjQgVXBkYXRlIGRpdi1i aXRtYXNrIHRvIGltcGxlbWVudCBuZXcgb3B0YWINCj4gaW5zdGVhZCBvZiB0YXJnZXQgaG9vayBb UFIxMDg1ODNdDQo+IA0KPiBIaSBBbGwsDQo+IA0KPiBUaGlzIHJlcGxhY2VzIHRoZSBjdXN0b20g ZGl2aXNpb24gaG9vayB3aXRoIGp1c3QgYW4gaW1wbGVtZW50YXRpb24gdGhyb3VnaA0KPiBhZGRf aGlnaHBhcnQuICBGb3IgTkVPTiB3ZSBpbXBsZW1lbnQgdGhlIGFkZCBoaWdocGFydCAoQWRkaXRp b24gKw0KPiBleHRyYWN0aW9uIG9mIHRoZSB1cHBlciBoaWdocGFydCBvZiB0aGUgcmVnaXN0ZXIg aW4gdGhlIHNhbWUgcHJlY2lzaW9uKSBhcyBBREQNCj4gKyBMU1IuDQo+IA0KPiBUaGlzIHJlcHJl c2VudGF0aW9uIGFsbG93cyB1cyB0byBlYXNpbHkgb3B0aW1pemUgdGhlIHNlcXVlbmNlIHVzaW5n IGV4aXN0aW5nDQo+IHNlcXVlbmNlcy4gVGhpcyBnZXRzIHVzIGEgcHJldHR5IGRlY2VudCBzZXF1 ZW5jZSB1c2luZyBTUkE6DQo+IA0KPiAgICAgICAgIHVtdWxsICAgdjEuOGgsIHYwLjhiLCB2My44 Yg0KPiAgICAgICAgIHVtdWxsMiAgdjAuOGgsIHYwLjE2YiwgdjMuMTZiDQo+ICAgICAgICAgYWRk ICAgICB2NS44aCwgdjEuOGgsIHYyLjhoDQo+ICAgICAgICAgYWRkICAgICB2NC44aCwgdjAuOGgs IHYyLjhoDQo+ICAgICAgICAgdXNyYSAgICB2MS44aCwgdjUuOGgsIDgNCj4gICAgICAgICB1c3Jh ICAgIHYwLjhoLCB2NC44aCwgOA0KPiAgICAgICAgIHV6cDIgICAgdjEuMTZiLCB2MS4xNmIsIHYw LjE2Yg0KPiANCj4gVG8gZ2V0IHRoZSBtb3N0IG9wdGltYWwgc2VxdWVuY2UgaG93ZXZlciB3ZSBt YXRjaCAoYSArICgoYiArIGMpID4+IG4pKQ0KPiB3aGVyZSBuIGlzIGhhbGYgdGhlIHByZWNpc2lv biBvZiB0aGUgbW9kZSBvZiB0aGUgb3BlcmF0aW9uIGludG8gYWRkaG4gKw0KPiB1YWRkdyB3aGlj aCBpcyBhIGdlbmVyYWwgZ29vZCBvcHRpbWl6YXRpb24gb24gaXRzIG93biBhbmQgZ2V0cyB1cyBi YWNrIHRvOg0KPiANCj4gLkw0Og0KPiAgICAgICAgIGxkciAgICAgcTAsIFt4M10NCj4gICAgICAg ICB1bXVsbCAgIHYxLjhoLCB2MC44YiwgdjUuOGINCj4gICAgICAgICB1bXVsbDIgIHYwLjhoLCB2 MC4xNmIsIHY1LjE2Yg0KPiAgICAgICAgIGFkZGhuICAgdjMuOGIsIHYxLjhoLCB2NC44aA0KPiAg ICAgICAgIGFkZGhuICAgdjIuOGIsIHYwLjhoLCB2NC44aA0KPiAgICAgICAgIHVhZGR3ICAgdjEu OGgsIHYxLjhoLCB2My44Yg0KPiAgICAgICAgIHVhZGR3ICAgdjAuOGgsIHYwLjhoLCB2Mi44Yg0K PiAgICAgICAgIHV6cDIgICAgdjEuMTZiLCB2MS4xNmIsIHYwLjE2Yg0KPiAgICAgICAgIHN0ciAg ICAgcTEsIFt4M10sIDE2DQo+ICAgICAgICAgY21wICAgICB4MywgeDQNCj4gICAgICAgICBibmUg ICAgIC5MNA0KPiANCj4gRm9yIFNWRTIgd2Ugb3B0aW1pemUgdGhlIGluaXRpYWwgc2VxdWVuY2Ug dG8gdGhlIHNhbWUgQUREICsgTFNSIHdoaWNoIGdldHMNCj4gdXM6DQo+IA0KPiAuTDM6DQo+ICAg ICAgICAgbGQxYiAgICB6MC5oLCBwMC96LCBbeDAsIHgzXQ0KPiAgICAgICAgIG11bCAgICAgejAu aCwgcDEvbSwgejAuaCwgejIuaA0KPiAgICAgICAgIGFkZCAgICAgejEuaCwgejAuaCwgejMuaA0K PiAgICAgICAgIHVzcmEgICAgejAuaCwgejEuaCwgIzgNCj4gICAgICAgICBsc3IgICAgIHowLmgs IHowLmgsICM4DQo+ICAgICAgICAgc3QxYiAgICB6MC5oLCBwMCwgW3gwLCB4M10NCj4gICAgICAg ICBpbmNoICAgIHgzDQo+ICAgICAgICAgd2hpbGVsbyBwMC5oLCB3MywgdzINCj4gICAgICAgICBi LmFueSAgIC5MMw0KPiAuTDE6DQo+ICAgICAgICAgcmV0DQo+IA0KPiBhbmQgdG8gZ2V0IHRoZSBt b3N0IG9wdGltYWwgc2VxdWVuY2UgSSBtYXRjaCAoYSArIGIpID4+IG4gKHNhbWUgY29uc3RyYWlu dA0KPiBvbiBuKSB0byBhZGRobmIgd2hpY2ggZ2V0cyB1cyB0bzoNCj4gDQo+IC5MMzoNCj4gICAg ICAgICBsZDFiICAgIHowLmgsIHAwL3osIFt4MCwgeDNdDQo+ICAgICAgICAgbXVsICAgICB6MC5o LCBwMS9tLCB6MC5oLCB6Mi5oDQo+ICAgICAgICAgYWRkaG5iICB6MS5iLCB6MC5oLCB6My5oDQo+ ICAgICAgICAgYWRkaG5iICB6MC5iLCB6MC5oLCB6MS5oDQo+ICAgICAgICAgc3QxYiAgICB6MC5o LCBwMCwgW3gwLCB4M10NCj4gICAgICAgICBpbmNoICAgIHgzDQo+ICAgICAgICAgd2hpbGVsbyBw MC5oLCB3MywgdzINCj4gICAgICAgICBiLmFueSAgIC5MMw0KPiANCj4gVGhlcmUgYXJlIG11bHRp cGxlIFJUTCByZXByZXNlbnRhdGlvbnMgcG9zc2libGUgZm9yIHRoZXNlIG9wdGltaXphdGlvbnMs IEkgZGlkDQo+IG5vdCByZXByZXNlbnQgdGhlbSB1c2luZyBhIHplcm9fZXh0ZW5kIGJlY2F1c2Ug d2Ugc2VlbSB2ZXJ5IGluY29uc2lzdGVudA0KPiBpbiB0aGlzIGluIHRoZSBiYWNrZW5kLiAgU2lu Y2UgdGhleSBhcmUgdW5zcGVjcyB3ZSB3b24ndCBtYXRjaCB0aGVtIGZyb20NCj4gdmVjdG9yIG9w cyBhbnl3YXkuIEkgZmlndXJlZCBtYWludGFpbmVycyB3b3VsZCBwcmVmZXIgdGhpcywgYnV0IG15 DQo+IG1haW50YWluZXIgb3VpamEgYm9hcmQgaXMgc3RpbGwgb3V0IGZvciByZXBhaXJzIDopDQo+ IA0KPiBUaGVyZSBhcmUgbm8gbmV3IHRlc3QgYXMgbmV3IGNvcnJlY3RuZXNzIHRlc3RzIHdlcmUg YWRkZWQgdG8gdGhlIG1pZC1lbmQNCj4gYW5kIHRoZSBleGlzdGluZyBjb2RlZ2VuIHRlc3RzIGZv ciB0aGlzIGFscmVhZHkgZXhpc3QuDQo+IA0KPiBCb290c3RyYXBwZWQgUmVndGVzdGVkIG9uIGFh cmNoNjQtbm9uZS1saW51eC1nbnUgYW5kIDxvbi1nb2luZz4gaXNzdWVzLg0KPiANCj4gT2sgZm9y IG1hc3Rlcj8NCj4gDQo+IFRoYW5rcywNCj4gVGFtYXINCj4gDQo+IGdjYy9DaGFuZ2VMb2c6DQo+ IA0KPiAJUFIgdGFyZ2V0LzEwODU4Mw0KPiAJKiBjb25maWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQu bWQNCj4gKEBhYXJjaDY0X2JpdG1hc2tfdWRpdjxtb2RlPjMpOiBSZW1vdmUuDQo+IAkoPHN1PmFk ZDxtb2RlPjNfaGlnaHBhcnQsICpiaXRtYXNrX3NoaWZ0X3BsdXM8bW9kZT4pOiBOZXcuDQo+IAkq IGNvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlMi5tZCAoPHN1PmFkZDxtb2RlPjNfaGlnaHBhcnQs DQo+IAkqYml0bWFza19zaGlmdF9wbHVzPG1vZGU+KTogTmV3Lg0KPiAJKEBhYXJjaDY0X2JpdG1h c2tfdWRpdjxtb2RlPjMpOiBSZW1vdmUuDQo+IAkqIGNvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MN Cj4gCShhYXJjaDY0X3ZlY3Rvcml6ZV9jYW5fc3BlY2lhbF9kaXZfYnlfY29uc3RhbnQpOiBSZW1v dmVkLg0KPiAJKiBjb25maWcvYWFyY2g2NC9pdGVyYXRvcnMubWQgKFVOU1BFQ19TQUREX0hJR0hQ QVJULA0KPiAJVU5TUEVDX1VBRERfSElHSFBBUlQsIEFERF9ISUdIUEFSVCk6IE5ldy4NCj4gDQo+ IC0tLSBpbmxpbmUgY29weSBvZiBwYXRjaCAtLQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9h YXJjaDY0L2FhcmNoNjQtc2ltZC5tZA0KPiBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXNp bWQubWQNCj4gaW5kZXgNCj4gN2YyMTJiZjM3Y2QyYzEyMGRjZWI3ZWZhNzMzYzlmYTc2MjI2ZjAy OS4uMjY4NzFhNTZkMWZkYjEzNGYwYWQ5ZDgyOGNlDQo+IDY4YThkZjAyNzJjNTMgMTAwNjQ0DQo+ IC0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQubWQNCj4gKysrIGIvZ2NjL2Nv bmZpZy9hYXJjaDY0L2FhcmNoNjQtc2ltZC5tZA0KPiBAQCAtNDg2Nyw2MiArNDg2Nyw0OCBAQCAo ZGVmaW5lX2V4cGFuZA0KPiAiYWFyY2g2NF88c3VyPjxhZGRzdWI+aG4yPG1vZGU+Ig0KPiAgICB9 DQo+ICApDQo+IA0KPiAtOzsgZGl2IG9wdGltaXphdGlvbnMgdXNpbmcgbmFycm93aW5ncw0KPiAt Ozsgd2UgY2FuIGRvIHRoZSBkaXZpc2lvbiBlLmcuIHNob3J0cyBieSAyNTUgZmFzdGVyIGJ5IGNh bGN1bGF0aW5nIGl0IGFzIC07OyAoeCArDQo+ICgoeCArIDI1NykgPj4gOCkpID4+IDggYXNzdW1p bmcgdGhlIG9wZXJhdGlvbiBpcyBkb25lIGluIC07OyBkb3VibGUgdGhlDQo+IHByZWNpc2lvbiBv ZiB4Lg0KPiAtOzsNCj4gLTs7IElmIHdlIGltYWdpbmUgYSBzaG9ydCBhcyBiZWluZyBjb21wb3Nl ZCBvZiB0d28gYmxvY2tzIG9mIGJ5dGVzIHRoZW4gLTs7DQo+IGFkZGluZyAyNTcgb3IgMGIwMDAw XzAwMDFfMDAwMF8wMDAxIHRvIHRoZSBudW1iZXIgaXMgZXF1aXZhbGVudCB0byAtOzsNCj4gYWRk aW5nIDEgdG8gZWFjaCBzdWIgY29tcG9uZW50Og0KPiAtOzsNCj4gLTs7ICAgICAgc2hvcnQgdmFs dWUgb2YgMTYtYml0cw0KPiAtOzsg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSQDQo+IC07OyDilIIgICAgICAgICAgICAgIOKUgiAgICAgICAgICAgICAgICDilIINCj4g LTs7IOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmA0KPiAtOzsgICA4 LWJpdCBwYXJ0MSDilrIgIDgtYml0IHBhcnQyICAg4payDQo+IC07OyAgICAgICAgICAgICAgIOKU giAgICAgICAgICAgICAgICDilIINCj4gLTs7ICAgICAgICAgICAgICAg4pSCICAgICAgICAgICAg ICAgIOKUgg0KPiAtOzsgICAgICAgICAgICAgICsxICAgICAgICAgICAgICAgKzENCj4gLTs7DQo+ IC07OyBhZnRlciB0aGUgZmlyc3QgYWRkaXRpb24sIHdlIGhhdmUgdG8gc2hpZnQgcmlnaHQgYnkg OCwgYW5kIG5hcnJvdyB0aGUgLTs7DQo+IHJlc3VsdHMgYmFjayB0byBhIGJ5dGUuICBSZW1lbWJl ciB0aGF0IHRoZSBhZGRpdGlvbiBtdXN0IGJlIGRvbmUgaW4gLTs7DQo+IGRvdWJsZSB0aGUgcHJl Y2lzaW9uIG9mIHRoZSBpbnB1dC4gIFNpbmNlIDggaXMgaGFsZiB0aGUgc2l6ZSBvZiBhIHNob3J0 IC07OyB3ZSBjYW4NCj4gdXNlIGEgbmFycm93aW5nIGhhbGZpbmcgaW5zdHJ1Y3Rpb24gaW4gQUFy Y2g2NCwgYWRkaG4gd2hpY2ggYWxzbyAtOzsgZG9lcyB0aGUNCj4gYWRkaXRpb24gaW4gYSB3aWRl ciBwcmVjaXNpb24gYW5kIG5hcnJvd3MgYmFjayB0byBhIGJ5dGUuICBUaGUgLTs7IHNoaWZ0IGl0 c2VsZiBpcw0KPiBpbXBsaWNpdCBpbiB0aGUgb3BlcmF0aW9uIGFzIGl0IHdyaXRlcyBiYWNrIG9u bHkgdGhlIHRvcCAtOzsgaGFsZiBvZiB0aGUgcmVzdWx0LiBpLmUuDQo+IGJpdHMgMiplc2l6ZS0x OmVzaXplLg0KPiAtOzsNCj4gLTs7IFNpbmNlIHdlIGhhdmUgbmFycm93ZWQgdGhlIHJlc3VsdCBv ZiB0aGUgZmlyc3QgcGFydCBiYWNrIHRvIGEgYnl0ZSwgZm9yIC07Ow0KPiB0aGUgc2Vjb25kIGFk ZGl0aW9uIHdlIGNhbiB1c2UgYSB3aWRlbmluZyBhZGRpdGlvbiwgdWFkZHcuDQo+IC07Ow0KPiAt OzsgRm9yIHRoZSBmaW5hbCBzaGlmdCwgc2luY2UgaXQncyB1bnNpZ25lZCBhcml0aG1ldGljIHdl IGVtaXQgYW4gdXNociBieSA4Lg0KPiAtOzsNCj4gLTs7IFRoZSBzaGlmdCBpcyBsYXRlciBvcHRp bWl6ZWQgYnkgY29tYmluZSB0byBhIHV6cDIgd2l0aCBtb3ZpICMwLg0KPiAtKGRlZmluZV9leHBh bmQgIkBhYXJjaDY0X2JpdG1hc2tfdWRpdjxtb2RlPjMiDQo+IC0gIFsobWF0Y2hfb3BlcmFuZDpW UU4gMCAicmVnaXN0ZXJfb3BlcmFuZCIpDQo+IC0gICAobWF0Y2hfb3BlcmFuZDpWUU4gMSAicmVn aXN0ZXJfb3BlcmFuZCIpDQo+IC0gICAobWF0Y2hfb3BlcmFuZDpWUU4gMiAiaW1tZWRpYXRlX29w ZXJhbmQiKV0NCj4gKzs7IEltcGxlbWVudCBhZGRfaGlnaHBhcnQgYXMgQUREICsgUlNISUZULCB3 ZSBoYXZlIHZhcmlvdXMgb3B0aW1pemF0aW9uDQo+ICtmb3IgOzsgbmFycm93aW5nIHJlcHJlc2Vu dGVkIGFzIHNoaWZ0cyBhbmQgc28gdGhpcyByZXByZXNlbnRhdGlvbiB3aWxsDQo+ICthbGxvdyB1 cyB0byA7OyBmdXJ0aGVyIG9wdGltaXplIHRoaXMgc2hvdWxkIHRoZSByZXN1bHQgcmVxdWlyZQ0K PiArbmFycm93aW5nLiBUaGUgYWx0ZXJuYXRpdmUgOzsgcmVwcmVzZW50YXRpb24gb2YgQURESE4g KyBVWFRMIGlzIGxlc3MNCj4gK2VmZmljaWVudCBhbmQgaGFyZGVyIHRvIGZ1dGhlciA7OyBvcHRp bWl6ZS4NCj4gKyhkZWZpbmVfZXhwYW5kICI8c3U+YWRkPG1vZGU+M19oaWdocGFydCINCj4gKyAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6VlFOIDAgInJlZ2lzdGVyX29wZXJhbmQiKQ0KPiArCSh1bnNw ZWM6VlFOIFsobWF0Y2hfb3BlcmFuZDpWUU4gMSAicmVnaXN0ZXJfb3BlcmFuZCIpDQo+ICsJCSAg ICAgKG1hdGNoX29wZXJhbmQ6VlFOIDIgInJlZ2lzdGVyX29wZXJhbmQiKV0NCj4gKwkJICAgIEFE RF9ISUdIUEFSVCkpXQ0KPiArICAiVEFSR0VUX1NJTUQiDQo+ICt7DQo+ICsgIHJ0eCByZXN1bHQg PSBnZW5fcmVnX3J0eCAoPE1PREU+bW9kZSk7DQo+ICsgIGludCBzaGlmdF9hbW91bnQgPSBHRVRf TU9ERV9VTklUX0JJVFNJWkUgKDxNT0RFPm1vZGUpIC8gMjsNCj4gKyAgcnR4IHNoaWZ0X3ZlY3Rv ciA9IGFhcmNoNjRfc2ltZF9nZW5fY29uc3RfdmVjdG9yX2R1cCAoPE1PREU+bW9kZSwNCj4gKwkJ CQkJCQlzaGlmdF9hbW91bnQpOw0KPiArICBlbWl0X2luc24gKGdlbl9hZGQ8bW9kZT4zIChyZXN1 bHQsIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSkpOw0KPiArICBlbWl0X2luc24gKGdlbl9hYXJj aDY0X3NpbWRfbHNocjxtb2RlPiAob3BlcmFuZHNbMF0sIHJlc3VsdCwNCj4gK3NoaWZ0X3ZlY3Rv cikpOw0KPiArICBET05FOw0KPiArfSkNCj4gKw0KPiArOzsgT3B0aW1pemUgKChhICsgYikgPj4g bikgKyBjIHdoZXJlIG4gaXMgaGFsZiB0aGUgYml0c2l6ZSBvZiB0aGUNCj4gK3ZlY3RvciAoZGVm aW5lX2luc25fYW5kX3NwbGl0ICIqYml0bWFza19zaGlmdF9wbHVzPG1vZGU+Ig0KPiArICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpWUU4gMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj13IikNCj4gKwkocGx1 czpWUU4NCj4gKwkgIChsc2hpZnRydDpWUU4NCj4gKwkgICAgKHBsdXM6VlFOIChtYXRjaF9vcGVy YW5kOlZRTiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpDQo+ICsJCSAgICAgIChtYXRjaF9vcGVy YW5kOlZRTiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpKQ0KPiArCSAgICAobWF0Y2hfb3BlcmFu ZDpWUU4gMw0KPiAiYWFyY2g2NF9zaW1kX3NoaWZ0X2ltbV92ZWNfZXhhY3RfdG9wIiAiRHIiKSkN Cj4gKwkgIChtYXRjaF9vcGVyYW5kOlZRTiA0ICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpKSldDQo+ ICAgICJUQVJHRVRfU0lNRCINCj4gKyAgIiMiDQo+ICsgICImJiAhcmVsb2FkX2NvbXBsZXRlZCIN Cj4gKyAgWyhjb25zdF9pbnQgMCldDQo+ICB7DQo+IC0gIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQg c2l6ZQ0KPiAtICAgID0gKDFVTEwgPDwgR0VUX01PREVfVU5JVF9CSVRTSVpFICg8Vk5BUlJPV1E+ bW9kZSkpIC0gMTsNCj4gLSAgcnR4IGVsdCA9IHVud3JhcF9jb25zdF92ZWNfZHVwbGljYXRlIChv cGVyYW5kc1syXSk7DQo+IC0gIGlmICghQ09OU1RfSU5UX1AgKGVsdCkgfHwgVUlOVFZBTCAoZWx0 KSAhPSBzaXplKQ0KPiAtICAgIEZBSUw7DQo+IC0NCj4gLSAgcnR4IGFkZGVuZCA9IGdlbl9yZWdf cnR4ICg8TU9ERT5tb2RlKTsNCj4gLSAgcnR4IHZhbCA9IGFhcmNoNjRfc2ltZF9nZW5fY29uc3Rf dmVjdG9yX2R1cCAoPFZOQVJST1dRMj5tb2RlLCAxKTsNCj4gLSAgZW1pdF9tb3ZlX2luc24gKGFk ZGVuZCwgbG93cGFydF9zdWJyZWcgKDxNT0RFPm1vZGUsIHZhbCwNCj4gPFZOQVJST1dRMj5tb2Rl KSk7DQo+IC0gIHJ0eCB0bXAxID0gZ2VuX3JlZ19ydHggKDxWTkFSUk9XUT5tb2RlKTsNCj4gLSAg cnR4IHRtcDIgPSBnZW5fcmVnX3J0eCAoPE1PREU+bW9kZSk7DQo+IC0gIGVtaXRfaW5zbiAoZ2Vu X2FhcmNoNjRfYWRkaG48bW9kZT4gKHRtcDEsIG9wZXJhbmRzWzFdLCBhZGRlbmQpKTsNCj4gLSAg dW5zaWduZWQgYml0c2l6ZSA9IEdFVF9NT0RFX1VOSVRfQklUU0laRSAoPFZOQVJST1dRPm1vZGUp Ow0KPiAtICBydHggc2hpZnRfdmVjdG9yID0gYWFyY2g2NF9zaW1kX2dlbl9jb25zdF92ZWN0b3Jf ZHVwICg8TU9ERT5tb2RlLA0KPiBiaXRzaXplKTsNCj4gLSAgZW1pdF9pbnNuIChnZW5fYWFyY2g2 NF91YWRkdzxWbmFycm93cT4gKHRtcDIsIG9wZXJhbmRzWzFdLCB0bXAxKSk7DQo+IC0gIGVtaXRf aW5zbiAoZ2VuX2FhcmNoNjRfc2ltZF9sc2hyPG1vZGU+IChvcGVyYW5kc1swXSwgdG1wMiwNCj4g c2hpZnRfdmVjdG9yKSk7DQo+ICsgIHJ0eCB0bXAgPSBnZW5fcmVnX3J0eCAoPFZOQVJST1dRPm1v ZGUpOyAgZW1pdF9pbnNuDQo+ICsgKGdlbl9hYXJjaDY0X2FkZGhuPG1vZGU+ICh0bXAsIG9wZXJh bmRzWzFdLCBvcGVyYW5kc1syXSkpOw0KPiBlbWl0X2luc24NCj4gKyAoZ2VuX2FhcmNoNjRfdWFk ZHc8Vm5hcnJvd3E+IChvcGVyYW5kc1swXSwgb3BlcmFuZHNbNF0sIHRtcCkpOw0KPiAgICBET05F Ow0KPiAtfSkNCj4gK30NCj4gKyAgWyhzZXRfYXR0ciAidHlwZSIgIm5lb25fYWRkX2hhbHZlPHE+ IildDQo+ICspDQo+IA0KPiAgOzsgcG11bC4NCj4gDQo+IGRpZmYgLS1naXQgYS9nY2MvY29uZmln L2FhcmNoNjQvYWFyY2g2NC1zdmUyLm1kDQo+IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQt c3ZlMi5tZA0KPiBpbmRleA0KPiA0MGMwNzI4YTdlNmYwMGMzOTVjMzYwY2U3NjI1YmMyZTRhMDE4 ODA5Li5hZDAxYzFkZGY5MjU3Y2VjOTUxZWQwYzE2NQ0KPiA1OGEzYzRkODU2ODEzYiAxMDA2NDQN Cj4gLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlMi5tZA0KPiArKysgYi9nY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zdmUyLm1kDQo+IEBAIC0yMzE3LDM5ICsyMzE3LDUxIEBA IChkZWZpbmVfaW5zbiAiQGFhcmNoNjRfc3ZlXzxvcHRhYj48bW9kZT4iDQo+ICA7OyAtLS0tIFtJ TlRdIE1pc2Mgb3B0YWIgaW1wbGVtZW50YXRpb25zICA7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiAgOzsgSW5jbHVkZXM6DQo+IC07OyAtIGFhcmNoNjRfYml0bWFza191ZGl2DQo+ICs7OyAtIGFk ZF9oaWdocGFydA0KPiAgOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiANCj4gLTs7IGRpdiBvcHRpbWl6 YXRpb25zIHVzaW5nIG5hcnJvd2luZ3MNCj4gLTs7IHdlIGNhbiBkbyB0aGUgZGl2aXNpb24gZS5n LiBzaG9ydHMgYnkgMjU1IGZhc3RlciBieSBjYWxjdWxhdGluZyBpdCBhcyAtOzsgKHggKw0KPiAo KHggKyAyNTcpID4+IDgpKSA+PiA4IGFzc3VtaW5nIHRoZSBvcGVyYXRpb24gaXMgZG9uZSBpbiAt OzsgZG91YmxlIHRoZQ0KPiBwcmVjaXNpb24gb2YgeC4NCj4gLTs7DQo+IC07OyBTZWUgYWFyY2g2 NC1zaW1kLm1kIGZvciBiaWdnZXIgZXhwbGFuYXRpb24uDQo+IC0oZGVmaW5lX2V4cGFuZCAiQGFh cmNoNjRfYml0bWFza191ZGl2PG1vZGU+MyINCj4gLSAgWyhtYXRjaF9vcGVyYW5kOlNWRV9GVUxM X0hTREkgMCAicmVnaXN0ZXJfb3BlcmFuZCIpDQo+IC0gICAobWF0Y2hfb3BlcmFuZDpTVkVfRlVM TF9IU0RJIDEgInJlZ2lzdGVyX29wZXJhbmQiKQ0KPiAtICAgKG1hdGNoX29wZXJhbmQ6U1ZFX0ZV TExfSFNESSAyICJpbW1lZGlhdGVfb3BlcmFuZCIpXQ0KPiArOzsgSW1wbGVtZW50IGFkZF9oaWdo cGFydCBhcyBBREQgKyBSU0hJRlQsIHdlIGhhdmUgdmFyaW91cyBvcHRpbWl6YXRpb24NCj4gK2Zv ciA7OyBuYXJyb3dpbmcgcmVwcmVzZW50ZWQgYXMgc2hpZnRzIGFuZCBzbyB0aGlzIHJlcHJlc2Vu dGF0aW9uIHdpbGwNCj4gK2FsbG93IHVzIHRvIDs7IGZ1cnRoZXIgb3B0aW1pemUgdGhpcyBzaG91 bGQgdGhlIHJlc3VsdCByZXF1aXJlDQo+ICtuYXJyb3dpbmcuIFRoZSBhbHRlcm5hdGl2ZSA7OyBy ZXByZXNlbnRhdGlvbiBvZiBBRERITiArIFVYVEwgaXMgbGVzcw0KPiArZWZmaWNpZW50IGFuZCBo YXJkZXIgdG8gZnV0aGVyIDs7IG9wdGltaXplLg0KPiArKGRlZmluZV9leHBhbmQgIjxzdT5hZGQ8 bW9kZT4zX2hpZ2hwYXJ0Ig0KPiArICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTVkVfRlVMTF9IU0RJ IDAgInJlZ2lzdGVyX29wZXJhbmQiKQ0KPiArCSh1bnNwZWM6U1ZFX0ZVTExfSFNESQ0KPiArCSAg WyhtYXRjaF9vcGVyYW5kOlNWRV9GVUxMX0hTREkgMSAicmVnaXN0ZXJfb3BlcmFuZCIpDQo+ICsJ ICAgKG1hdGNoX29wZXJhbmQ6U1ZFX0ZVTExfSFNESSAyICJyZWdpc3Rlcl9vcGVyYW5kIildDQo+ ICsJICBBRERfSElHSFBBUlQpKV0NCj4gICAgIlRBUkdFVF9TVkUyIg0KPiAgew0KPiAtICB1bnNp Z25lZCBIT1NUX1dJREVfSU5UIHNpemUNCj4gLSAgICA9ICgxVUxMIDw8IEdFVF9NT0RFX1VOSVRf QklUU0laRSAoPFZOQVJST1c+bW9kZSkpIC0gMTsNCj4gLSAgcnR4IGVsdCA9IHVud3JhcF9jb25z dF92ZWNfZHVwbGljYXRlIChvcGVyYW5kc1syXSk7DQo+IC0gIGlmICghQ09OU1RfSU5UX1AgKGVs dCkgfHwgVUlOVFZBTCAoZWx0KSAhPSBzaXplKQ0KPiAtICAgIEZBSUw7DQo+ICsgIHJ0eCByZXN1 bHQgPSBnZW5fcmVnX3J0eCAoPE1PREU+bW9kZSk7DQo+ICsgIGludCBzaGlmdF9hbW91bnQgPSBH RVRfTU9ERV9VTklUX0JJVFNJWkUgKDxNT0RFPm1vZGUpIC8gMjsNCj4gKyAgcnR4IHNoaWZ0X3Zl Y3RvciA9IGFhcmNoNjRfc2ltZF9nZW5fY29uc3RfdmVjdG9yX2R1cCAoPE1PREU+bW9kZSwNCj4g KwkJCQkJCQlzaGlmdF9hbW91bnQpOw0KPiArICBlbWl0X2luc24gKGdlbl9hZGQ8bW9kZT4zIChy ZXN1bHQsIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSkpOw0KPiArICBlbWl0X2luc24gKGdlbl92 bHNocjxtb2RlPjMgKG9wZXJhbmRzWzBdLCByZXN1bHQsIHNoaWZ0X3ZlY3RvcikpOw0KPiArICBE T05FOw0KPiArfSkNCj4gDQo+IC0gIHJ0eCBhZGRlbmQgPSBnZW5fcmVnX3J0eCAoPE1PREU+bW9k ZSk7DQo+ICs7OyBPcHRpbWl6ZSAoKGEgKyBiKSA+PiBuKSB3aGVyZSBuIGlzIGhhbGYgdGhlIGJp dHNpemUgb2YgdGhlIHZlY3Rvcg0KPiArKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKmJpdG1hc2tf c2hpZnRfcGx1czxtb2RlPiINCj4gKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U1ZFX0ZVTExfSFNE SSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXciKQ0KPiArCSh1bnNwZWM6U1ZFX0ZVTExfSFNESSBb DQo+ICsJICAgIChtYXRjaF9vcGVyYW5kOjxWUFJFRD4gMSAicmVnaXN0ZXJfb3BlcmFuZCIgIlVw bCIpDQo+ICsJICAgIChsc2hpZnRydDpTVkVfRlVMTF9IU0RJDQo+ICsJICAgICAgKHBsdXM6U1ZF X0ZVTExfSFNESQ0KPiArCQkobWF0Y2hfb3BlcmFuZDpTVkVfRlVMTF9IU0RJIDIgInJlZ2lzdGVy X29wZXJhbmQiICJ3IikNCj4gKwkJKG1hdGNoX29wZXJhbmQ6U1ZFX0ZVTExfSFNESSAzICJyZWdp c3Rlcl9vcGVyYW5kIiAidyIpKQ0KPiArCSAgICAgIChtYXRjaF9vcGVyYW5kOlNWRV9GVUxMX0hT REkgNA0KPiAiYWFyY2g2NF9zaW1kX3NoaWZ0X2ltbV92ZWNfZXhhY3RfdG9wIiAiRHIiKSkNCj4g KyAgICAgICAgXSBVTlNQRUNfUFJFRF9YKSldDQo+ICsgICJUQVJHRVRfU1ZFMiINCj4gKyAgIiMi DQo+ICsgICImJiAhcmVsb2FkX2NvbXBsZXRlZCINCj4gKyAgWyhjb25zdF9pbnQgMCldDQo+ICt7 DQo+ICAgIHJ0eCB0bXAxID0gZ2VuX3JlZ19ydHggKDxWTkFSUk9XPm1vZGUpOw0KPiAtICBydHgg dG1wMiA9IGdlbl9yZWdfcnR4ICg8Vk5BUlJPVz5tb2RlKTsNCj4gLSAgcnR4IHZhbCA9IGFhcmNo NjRfc2ltZF9nZW5fY29uc3RfdmVjdG9yX2R1cCAoPFZOQVJST1c+bW9kZSwgMSk7DQo+IC0gIGVt aXRfbW92ZV9pbnNuIChhZGRlbmQsIGxvd3BhcnRfc3VicmVnICg8TU9ERT5tb2RlLCB2YWwsDQo+ IDxWTkFSUk9XPm1vZGUpKTsNCj4gLSAgZW1pdF9pbnNuIChnZW5fYWFyY2g2NF9zdmUgKFVOU1BF Q19BRERITkIsIDxNT0RFPm1vZGUsIHRtcDEsDQo+IG9wZXJhbmRzWzFdLA0KPiAtCQkJICAgICAg YWRkZW5kKSk7DQo+IC0gIGVtaXRfaW5zbiAoZ2VuX2FhcmNoNjRfc3ZlIChVTlNQRUNfQURESE5C LCA8TU9ERT5tb2RlLCB0bXAyLA0KPiBvcGVyYW5kc1sxXSwNCj4gLQkJCSAgICAgIGxvd3BhcnRf c3VicmVnICg8TU9ERT5tb2RlLCB0bXAxLA0KPiAtCQkJCQkgICAgICA8Vk5BUlJPVz5tb2RlKSkp Ow0KPiArICBlbWl0X2luc24gKGdlbl9hYXJjaDY0X3N2ZSAoVU5TUEVDX0FEREhOQiwgPE1PREU+ bW9kZSwgdG1wMSwNCj4gKyBvcGVyYW5kc1syXSwgb3BlcmFuZHNbM10pKTsNCj4gICAgZW1pdF9t b3ZlX2luc24gKG9wZXJhbmRzWzBdLA0KPiAtCQkgIGxvd3BhcnRfc3VicmVnICg8TU9ERT5tb2Rl LCB0bXAyLA0KPiA8Vk5BUlJPVz5tb2RlKSk7DQo+ICsJCSAgbG93cGFydF9zdWJyZWcgKDxNT0RF Pm1vZGUsIHRtcDEsDQo+IDxWTkFSUk9XPm1vZGUpKTsNCj4gICAgRE9ORTsNCj4gIH0pDQo+IA0K PiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MgYi9nY2MvY29uZmln L2FhcmNoNjQvYWFyY2g2NC5jYw0KPiBpbmRleA0KPiBlNmY0N2NiYmIwZDA0YTZmMzNiOWE3NDFl YmI2MTRjYWJkMDIwNGI5Li44YTA0ZmViMjllNmJmYjQyM2EwOWRkZTINCj4gY2Q2NDg1M2U2OWQw ZTFiYSAxMDA2NDQNCj4gLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MNCj4gKysr IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MNCj4gQEAgLTI0MzYzLDQ2ICsyNDM2Myw2 IEBAIGFhcmNoNjRfdmVjdG9yaXplX3ZlY19wZXJtX2NvbnN0DQo+IChtYWNoaW5lX21vZGUgdm1v ZGUsIG1hY2hpbmVfbW9kZSBvcF9tb2RlLA0KPiANCj4gICAgcmV0dXJuIHJldDsNCj4gIH0NCj4g LQ0KPiAtLyogSW1wbGVtZW50IFRBUkdFVF9WRUNUT1JJWkVfQ0FOX1NQRUNJQUxfRElWX0JZX0NP TlNULiAgKi8NCj4gLQ0KPiAtYm9vbA0KPiAtYWFyY2g2NF92ZWN0b3JpemVfY2FuX3NwZWNpYWxf ZGl2X2J5X2NvbnN0YW50IChlbnVtIHRyZWVfY29kZSBjb2RlLA0KPiAtCQkJCQkgICAgICAgdHJl ZSB2ZWN0eXBlLCB3aWRlX2ludCBjc3QsDQo+IC0JCQkJCSAgICAgICBydHggKm91dHB1dCwgcnR4 IGluMCwgcnR4IGluMSkNCj4gLXsNCj4gLSAgaWYgKGNvZGUgIT0gVFJVTkNfRElWX0VYUFINCj4g LSAgICAgIHx8ICFUWVBFX1VOU0lHTkVEICh2ZWN0eXBlKSkNCj4gLSAgICByZXR1cm4gZmFsc2U7 DQo+IC0NCj4gLSAgbWFjaGluZV9tb2RlIG1vZGUgPSBUWVBFX01PREUgKHZlY3R5cGUpOw0KPiAt ICB1bnNpZ25lZCBpbnQgZmxhZ3MgPSBhYXJjaDY0X2NsYXNzaWZ5X3ZlY3Rvcl9tb2RlIChtb2Rl KTsNCj4gLSAgaWYgKChmbGFncyAmIFZFQ19BTllfU1ZFKSAmJiAhVEFSR0VUX1NWRTIpDQo+IC0g ICAgcmV0dXJuIGZhbHNlOw0KPiAtDQo+IC0gIGludCBwb3cgPSB3aTo6ZXhhY3RfbG9nMiAoY3N0 ICsgMSk7DQo+IC0gIGF1dG8gaW5zbl9jb2RlID0gbWF5YmVfY29kZV9mb3JfYWFyY2g2NF9iaXRt YXNrX3VkaXYzIChUWVBFX01PREUNCj4gKHZlY3R5cGUpKTsNCj4gLSAgLyogU1ZFIGFjdHVhbGx5 IGhhcyBhIGRpdiBvcGVyYXRvciwgd2UgbWF5IGhhdmUgZ290dGVuIGhlcmUgdGhyb3VnaA0KPiAt ICAgICB0aGF0IHJvdXRlLiAgKi8NCj4gLSAgaWYgKHBvdyAhPSAoaW50KSAoZWxlbWVudF9wcmVj aXNpb24gKHZlY3R5cGUpIC8gMikNCj4gLSAgICAgIHx8IGluc25fY29kZSA9PSBDT0RFX0ZPUl9u b3RoaW5nKQ0KPiAtICAgIHJldHVybiBmYWxzZTsNCj4gLQ0KPiAtICAvKiBXZSBjYW4gdXNlIHRo ZSBvcHRpbWl6ZWQgcGF0dGVybi4gICovDQo+IC0gIGlmIChpbjAgPT0gTlVMTF9SVFggJiYgaW4x ID09IE5VTExfUlRYKQ0KPiAtICAgIHJldHVybiB0cnVlOw0KPiAtDQo+IC0gIGdjY19hc3NlcnQg KG91dHB1dCk7DQo+IC0NCj4gLSAgZXhwYW5kX29wZXJhbmQgb3BzWzNdOw0KPiAtICBjcmVhdGVf b3V0cHV0X29wZXJhbmQgKCZvcHNbMF0sICpvdXRwdXQsIG1vZGUpOw0KPiAtICBjcmVhdGVfaW5w dXRfb3BlcmFuZCAoJm9wc1sxXSwgaW4wLCBtb2RlKTsNCj4gLSAgY3JlYXRlX2ZpeGVkX29wZXJh bmQgKCZvcHNbMl0sIGluMSk7DQo+IC0gIGV4cGFuZF9pbnNuIChpbnNuX2NvZGUsIDMsIG9wcyk7 DQo+IC0gICpvdXRwdXQgPSBvcHNbMF0udmFsdWU7DQo+IC0gIHJldHVybiB0cnVlOw0KPiAtfQ0K PiAtDQo+ICAvKiBHZW5lcmF0ZSBhIGJ5dGUgcGVybXV0ZSBtYXNrIGZvciBhIHJlZ2lzdGVyIG9m IG1vZGUgTU9ERSwNCj4gICAgIHdoaWNoIGhhcyBOVU5JVFMgdW5pdHMuICAqLw0KPiANCj4gZGlm ZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9pdGVyYXRvcnMubWQNCj4gYi9nY2MvY29uZmln L2FhcmNoNjQvaXRlcmF0b3JzLm1kIGluZGV4DQo+IDZjYmM5N2NjODJjMDZhNjgyNTliZGY0ZGVj OGEwZWFiMjMwMDgxZTUuLmFlNjI3YWU1NmNiZDFlOGI4ODJlNTk2ZA0KPiBiYTk3NGU3NGVmMzk2 ZTBlIDEwMDY0NA0KPiAtLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvaXRlcmF0b3JzLm1kDQo+ICsr KyBiL2djYy9jb25maWcvYWFyY2g2NC9pdGVyYXRvcnMubWQNCj4gQEAgLTc1MCw2ICs3NTAsOCBA QCAoZGVmaW5lX2NfZW51bSAidW5zcGVjIg0KPiAgICAgIFVOU1BFQ19SRVZICQk7IFVzZWQgaW4g YWFyY2g2NC1zdmUubWQuDQo+ICAgICAgVU5TUEVDX1JFVlcJCTsgVXNlZCBpbiBhYXJjaDY0LXN2 ZS5tZC4NCj4gICAgICBVTlNQRUNfUkVWQkhXCTsgVXNlZCBpbiBhYXJjaDY0LXN2ZS5tZC4NCj4g KyAgICBVTlNQRUNfU0FERF9ISUdIUEFSVCA7IFVzZWQgaW4gYWFyY2g2NC1zdmUubWQuDQo+ICsg ICAgVU5TUEVDX1VBRERfSElHSFBBUlQgOyBVc2VkIGluIGFhcmNoNjQtc3ZlLm1kLg0KPiAgICAg IFVOU1BFQ19TTVVMX0hJR0hQQVJUIDsgVXNlZCBpbiBhYXJjaDY0LXN2ZS5tZC4NCj4gICAgICBV TlNQRUNfVU1VTF9ISUdIUEFSVCA7IFVzZWQgaW4gYWFyY2g2NC1zdmUubWQuDQo+ICAgICAgVU5T UEVDX0ZNTEEJCTsgVXNlZCBpbiBhYXJjaDY0LXN2ZS5tZC4NCj4gQEAgLTI3MDQsNiArMjcwNiw3 IEBAIChkZWZpbmVfaW50X2l0ZXJhdG9yIFVOUEFDSw0KPiBbVU5TUEVDX1VOUEFDS1NISSBVTlNQ RUNfVU5QQUNLVUhJDQo+IA0KPiAgKGRlZmluZV9pbnRfaXRlcmF0b3IgVU5QQUNLX1VOU0lHTkVE IFtVTlNQRUNfVU5QQUNLVUxPDQo+IFVOU1BFQ19VTlBBQ0tVSEldKQ0KPiANCj4gKyhkZWZpbmVf aW50X2l0ZXJhdG9yIEFERF9ISUdIUEFSVCBbVU5TUEVDX1NBRERfSElHSFBBUlQNCj4gK1VOU1BF Q19VQUREX0hJR0hQQVJUXSkNCj4gIChkZWZpbmVfaW50X2l0ZXJhdG9yIE1VTF9ISUdIUEFSVCBb VU5TUEVDX1NNVUxfSElHSFBBUlQNCj4gVU5TUEVDX1VNVUxfSElHSFBBUlRdKQ0KPiANCj4gIChk ZWZpbmVfaW50X2l0ZXJhdG9yIENMQVNUIFtVTlNQRUNfQ0xBU1RBIFVOU1BFQ19DTEFTVEJdKSBA QCAtMzM0Miw2DQo+ICszMzQ1LDggQEAgKGRlZmluZV9pbnRfYXR0ciBzdSBbKFVOU1BFQ19TQURE ViAicyIpDQo+ICAJCSAgICAgKFVOU1BFQ19VTlBBQ0tVSEkgInUiKQ0KPiAgCQkgICAgIChVTlNQ RUNfVU5QQUNLU0xPICJzIikNCj4gIAkJICAgICAoVU5TUEVDX1VOUEFDS1VMTyAidSIpDQo+ICsJ CSAgICAgKFVOU1BFQ19TQUREX0hJR0hQQVJUICJzIikNCj4gKwkJICAgICAoVU5TUEVDX1VBRERf SElHSFBBUlQgInUiKQ0KPiAgCQkgICAgIChVTlNQRUNfU01VTF9ISUdIUEFSVCAicyIpDQo+ICAJ CSAgICAgKFVOU1BFQ19VTVVMX0hJR0hQQVJUICJ1IikNCj4gIAkJICAgICAoVU5TUEVDX0NPTkRf RkNWVFpTICJzIikNCj4gDQo+IA0KPiANCj4gDQo+IC0tDQo=