Received: by 2002:a05:6a10:2785:0:0:0:0 with SMTP id ia5csp3039813pxb; Tue, 12 Jan 2021 05:02:34 -0800 (PST) X-Google-Smtp-Source: ABdhPJyVvBqesJfPYnBgp83osep5vqJBmN9MB2ufW5OtV2QgaoXZQZWx9e4EOk8FhbK7klxgNTrG X-Received: by 2002:a17:906:1c92:: with SMTP id g18mr3202957ejh.522.1610456553862; Tue, 12 Jan 2021 05:02:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610456553; cv=none; d=google.com; s=arc-20160816; b=MnGNi8c8cYy/yiVtFMZ9oqy3d1G5rUBK0qX9wbs3oq19JKrMN0QvKl4/WrigmhAIFd q8CYanUKLTt3xiANdBj+Rs3BZDCKtFZp1MG5lWVO9VVM9nVRgUjD11R/tVCgnpLC8xV1 aGGQVE77dpyRbOwIPLegynmKlWS+mtyAEWGEQ9ns8kmt79fsTMdZ8M8C4AOREaSfA5FS G640RQ6braS8Q22QtD1zK+EnFFseb+vBi0UmupakQ6VJKrlH0X/q4IdSXwEJDjbbQLjI JhNh0iHhM3vMN/f+tZ0tXyeBd6flqE9dpyigZ/y45kzVMd4BJZdrBpPr0nyEDGQCouQX 7rpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:mime-version :content-transfer-encoding:references:in-reply-to:subject:cc:to:from :date:dkim-signature; bh=wUPD8Iwh39pqJZRN5HeOiwzjXX/6N94N227yxArRlcA=; b=CWjeJHLVe3U1vjpClOwyzmf3bkOMPX4fkQwZguJoQnk6iK4fgzzx932M86v1xa4tBq y/8DcBvjm1WhYUpJ9qWkU3QYFj25FXLIBFXz/yM6Z+EVkqnJQYTuumsQ2o0G3C5Q0WNS USvgP5KKkhAbOfZSqknVqTS/cn4oFzAGrStZWJOHGbqJqrZUGfXcPM6Dl41YP/KK22rf xT/SB6QB7drlfzhPADckzH8h1/Bf7q7JCQ/3PMpNjIGj1vQ6LyEA9xT07lmWBbC/Go1/ /tBLYz4T5lVZE55ih75g+kl7qpbiVCBxIh1yMO/F1A4IenNCanI6/J1cw0deboq0I29X vPrA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@163.com header.s=s110527 header.b=DiK3nAKj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=163.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k6si1098240ejs.633.2021.01.12.05.02.09; Tue, 12 Jan 2021 05:02:33 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@163.com header.s=s110527 header.b=DiK3nAKj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=163.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726855AbhALLSm (ORCPT + 99 others); Tue, 12 Jan 2021 06:18:42 -0500 Received: from m13101.mail.163.com ([220.181.13.101]:48503 "EHLO m13101.mail.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727288AbhALLSg (ORCPT ); Tue, 12 Jan 2021 06:18:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Date:From:Subject:MIME-Version:Message-ID; bh=DS0BY D6EZwH9Ic/l1F0VIkVS8tUWq+fD6E1FXz6DZ94=; b=DiK3nAKjB37jvrgrydx8m 9+cbyrAHLFUF9qajux87Yiy96zdnAtvaBfkBqAYAgre3fN7p6KccUJLfT8WUD30Q YTQbn6kZdaUSq+QLiKB3pj49JScV1yfiDdCVq/Ehz3Xjh+XD8t4Viy0Nyymenptv YAQ5WB5kvF5wbGnGIz145E= Received: from ultrachin$163.com ( [111.206.145.43] ) by ajax-webmail-wmsvr101 (Coremail) ; Tue, 12 Jan 2021 14:57:01 +0800 (CST) X-Originating-IP: [111.206.145.43] Date: Tue, 12 Jan 2021 14:57:01 +0800 (CST) From: chin To: "Vincent Guittot" Cc: linux-kernel , "Ingo Molnar" , "Peter Zijlstra" , "Juri Lelli" , "Dietmar Eggemann" , "Steven Rostedt" , "Ben Segall" , "Mel Gorman" , "Daniel Bristot de Oliveira" , heddchen@tencent.com, =?UTF-8?Q?xiaoggchen=28=E9=99=88=E5=B0=8F=E5=85=89=29?= Subject: Re: [PATCH] sched: pull tasks when CPU is about to run SCHED_IDLE tasks X-Priority: 3 X-Mailer: Coremail Webmail Server Version XT5.0.13 build 20201118(ab4b390f) Copyright (c) 2002-2021 www.mailtech.cn 163com In-Reply-To: References: <1608710968-31475-1-git-send-email-ultrachin@163.com> <1fefea2e.70bf.176f08d9fae.Coremail.ultrachin@163.com> Content-Transfer-Encoding: base64 Content-Type: text/plain; charset=UTF-8 MIME-Version: 1.0 Message-ID: <61e22917.538b.176f56231f6.Coremail.ultrachin@163.com> X-Coremail-Locale: zh_CN X-CM-TRANSID: ZcGowAB3f889SP1f_Y4BAQ--.37462W X-CM-SenderInfo: xxow2thfkl0qqrwthudrp/1tbiJR8YWFUMbIFuNwABsW X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org CgoKQXQgMjAyMS0wMS0xMSAxOTowNDoxOSwgIlZpbmNlbnQgR3VpdHRvdCIgPHZpbmNlbnQuZ3Vp dHRvdEBsaW5hcm8ub3JnPiB3cm90ZToKPk9uIE1vbiwgMTEgSmFuIDIwMjEgYXQgMDk6MjcsIGNo aW4gPHVsdHJhY2hpbkAxNjMuY29tPiB3cm90ZToKPj4KPj4KPj4gQXQgMjAyMC0xMi0yMyAxOToz MDoyNiwgIlZpbmNlbnQgR3VpdHRvdCIgPHZpbmNlbnQuZ3VpdHRvdEBsaW5hcm8ub3JnPiB3cm90 ZToKPj4gPk9uIFdlZCwgMjMgRGVjIDIwMjAgYXQgMDk6MzIsIDx1bHRyYWNoaW5AMTYzLmNvbT4g d3JvdGU6Cj4+ID4+Cj4+ID4+IEZyb206IENoZW4gWGlhb2d1YW5nIDx4aWFvZ2djaGVuQHRlbmNl bnQuY29tPgo+PiA+Pgo+PiA+PiBCZWZvcmUgYSBDUFUgc3dpdGNoZXMgZnJvbSBydW5uaW5nIFND SEVEX05PUk1BTCB0YXNrIHRvCj4+ID4+IFNDSEVEX0lETEUgdGFzaywgdHJ5aW5nIHRvIHB1bGwg U0NIRURfTk9STUFMIHRhc2tzIGZyb20gb3RoZXIKPj4gPgo+PiA+Q291bGQgeW91IGV4cGxhaW4g bW9yZSBpbiBkZXRhaWwgd2h5IHlvdSBvbmx5IGNhcmUgYWJvdXQgdGhpcyB1c2UgY2FzZQo+Pgo+ PiA+aW4gcGFydGljdWxhciBhbmQgbm90IHRoZSBnZW5lcmFsIGNhc2U/Cj4+Cj4+Cj4+IFdlIHdh bnQgdG8gcnVuIG9ubGluZSB0YXNrcyB1c2luZyBTQ0hFRF9OT1JNQUwgcG9saWN5IGFuZCBvZmZs aW5lIHRhc2tzCj4+IHVzaW5nIFNDSEVEX0lETEUgcG9saWN5LiBUaGUgb25saW5lIHRhc2tzIGFu ZCB0aGUgb2ZmbGluZSB0YXNrcyBydW4gaW4KPj4gdGhlIHNhbWUgY29tcHV0ZXIgaW4gb3JkZXIg dG8gdXNlIHRoZSBjb21wdXRlciBlZmZpY2llbnRseS4KPj4gVGhlIG9ubGluZSB0YXNrcyBhcmUg aW4gc2xlZXAgaW4gbW9zdCB0aW1lcyBidXQgc2hvdWxkIHJlc3BvbmNlIHNvb24gb25jZQo+PiB3 YWtlIHVwLiBUaGUgb2ZmbGluZSB0YXNrcyBhcmUgaW4gbG93IHByaW9yaXR5IGFuZCB3aWxsIHJ1 biBvbmx5IHdoZW4gbm8gb25saW5lCj4+IHRhc2tzLgo+Pgo+PiBUaGUgb25saW5lIHRhc2tzIGFy ZSBtb3JlIGltcG9ydGFudCB0aGFuIHRoZSBvZmZsaW5lIHRhc2tzIGFuZCBhcmUgbGF0ZW5jeQo+ PiBzZW5zaXRpdmUgd2Ugc2hvdWxkIG1ha2Ugc3VyZSB0aGUgb25saW5lIHRhc2tzIHByZWVtcHQg dGhlIG9mZmxpbmUgdGFza3MKPj4gYXMgc29vbiBhcyBwb3NzaWxiZSB3aGlsZSB0aGVyZSBhcmUg b25saW5lIHRhc2tzIHdhaXRpbmcgdG8gcnVuLgo+PiBTbyBpbiBvdXIgc2l0dWF0aW9uIHdlIGhv cGUgdGhlIFNDSEVEX05PUk1BTCB0byBydW4gaWYgaGFzIGFueS4KPj4KPj4gTGV0J3MgYXNzdW1l IHdlIGhhdmUgMiBDUFVzLAo+PiBJbiBDUFUxIHdlIGdvdCAyIFNDSEVEX05PUk1BTCB0YXNrcy4K Pj4gaW4gQ1BVMiB3ZSBnb3QgMSBTQ0hFRF9OT1JNQUwgdGFzayBhbmQgMiBTQ0hFRF9JRExFIHRh c2tzLgo+Pgo+PiAgICAgICAgICAgICAgQ1BVMSAgICAgICAgICAgICAgICAgICAgICBDUFUyCj4+ ICAgICAgICAgY3VyciAgICAgICBycTEgICAgICAgICAgICBjdXJyICAgICAgICAgIHJxMgo+PiAg ICAgICArLS0tLS0tKyB8ICstLS0tLS0rICAgICAgICstLS0tLS0rIHwgKy0tLS0rICstLS0tKwo+ PiB0MCAgICB8Tk9STUFMfCB8IHxOT1JNQUx8ICAgICAgIHxOT1JNQUx8IHwgfElETEV8IHxJRExF fAo+PiAgICAgICArLS0tLS0tKyB8ICstLS0tLS0rICAgICAgICstLS0tLS0rIHwgKy0tLS0rICst LS0tKwo+Pgo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT1JNQUwgZXhpdHMg b3IgYmxvY2tlZAo+PiAgICAgICArLS0tLS0tKyB8ICstLS0tLS0rICAgICAgICAgICAgICAgIHwg Ky0tLS0rICstLS0tKwo+PiB0MSAgICB8Tk9STUFMfCB8IHxOT1JNQUx8ICAgICAgICAgICAgICAg IHwgfElETEV8IHxJRExFfAo+PiAgICAgICArLS0tLS0tKyB8ICstLS0tLS0rICAgICAgICAgICAg ICAgIHwgKy0tLS0rICstLS0tKwo+Pgo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwaWNrX25leHRfdGFza19mYWlyCj4+ICAgICAgICstLS0tLS0rIHwgKy0tLS0tLSsgICAgICAg ICArLS0tLSsgfCArLS0tLSsKPj4gdDIgICAgfE5PUk1BTHwgfCB8Tk9STUFMfCAgICAgICAgIHxJ RExFfCB8IHxJRExFfAo+PiAgICAgICArLS0tLS0tKyB8ICstLS0tLS0rICAgICAgICAgKy0tLS0r IHwgKy0tLS0rCj4+Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDSEVEX0lE TEUgcnVubmluZwo+PiB0MyAgICArLS0tLS0tKyB8ICstLS0tLS0rICAgICAgICArLS0tLSsgIHwg Ky0tLS0rCj4+ICAgICAgIHxOT1JNQUx8IHwgfE5PUk1BTHwgICAgICAgIHxJRExFfCAgfCB8SURM RXwKPj4gICAgICAgKy0tLS0tLSsgfCArLS0tLS0tKyAgICAgICAgKy0tLS0rICB8ICstLS0tKwo+ Pgo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5fcmViYWxhbmNlX2RvbWFp bnMKPj4gICAgICAgKy0tLS0tLSsgfCAgICAgICAgICAgICAgICArLS0tLS0tKyB8ICstLS0tKyAr LS0tLSsKPj4gdDQgICAgfE5PUk1BTHwgfCAgICAgICAgICAgICAgICB8Tk9STUFMfCB8IHxJRExF fCB8SURMRXwKPj4gICAgICAgKy0tLS0tLSsgfCAgICAgICAgICAgICAgICArLS0tLS0tKyB8ICst LS0tKyArLS0tLSsKPj4KPj4gQXMgd2UgY2FuIHNlZQo+PiB0MTogTk9STUFMIHRhc2sgaW4gQ1BV MiBleGl0cyBvciBibG9ja2VkCj4+IHQyOiBDUFUyIHBpY2tfbmV4dF90YXNrX2ZhaXIgd291bGQg cGljayBhIFNDSEVEX0lETEUgdG8gcnVuIHdoaWxlCj4+IGFub3RoZXIgU0NIRURfTk9STUFMIGlu IHJxMSBpcyB3YWl0aW5nLgo+PiB0MzogU0NIRURfSURMRSBydW4gaW4gQ1BVMiB3aGlsZSBhIFND SEVEX05PUk1BTCB3YWl0IGluIENQVTEuCj4+IHQ0OiBhZnRlciBhIHNob3J0IHRpbWUsIHBlcmlv ZGljIGxvYWRfYmFsYW5jZSB0cmlnZ2VyZCBhbmQgcHVsbAo+PiBTQ0hFRF9OT1JNQUwgaW4gcnEx IHRvIHJxMiwgYW5kIFNDSEVEX05PUk1BTCBsaWtlbHkgcHJlZW1wdHMgU0NIRURfSURMRS4KPj4K Pj4gSW4gdGhpcyBzY2VuYXJpbywgU0NIRURfSURMRSBpcyBydW5uaW5nIHdoaWxlIFNDSEVEX05P Uk1BTCBpcyB3YWl0aW5nIHRvIHJ1bi4KPj4gVGhlIGxhdGVuY3kgb2YgdGhpcyBTQ0hFRF9OT1JN QUwgd2lsbCBiZSBoaWdoIHdoaWNoIGlzIG5vdCBhY2NlcHRibGUuCj4+Cj4+IERvIGEgbG9hZF9i YWxhbmNlIGJlZm9yZSBydW5uaW5nIHRoZSBTQ0hFRF9JRExFIG1heSBmaXggdGhpcyBwcm9ibGVt Lgo+Pgo+PiBUaGlzIHBhdGNoIHdvcmtzIGFzIGJlbG93Ogo+Pgo+PiAgICAgICAgICAgICAgQ1BV MSAgICAgICAgICAgICAgICAgICAgICBDUFUyCj4+ICAgICAgICAgY3VyciAgICAgICBycTEgICAg ICAgICAgICBjdXJyICAgICAgICAgIHJxMgo+PiAgICAgICArLS0tLS0tKyB8ICstLS0tLS0rICAg ICAgICstLS0tLS0rIHwgKy0tLS0rICstLS0tKwo+PiB0MCAgICB8Tk9STUFMfCB8IHxOT1JNQUx8 ICAgICAgIHxOT1JNQUx8IHwgfElETEV8IHxJRExFfAo+PiAgICAgICArLS0tLS0tKyB8ICstLS0t LS0rICAgICAgICstLS0tLS0rIHwgKy0tLS0rICstLS0tKwo+Pgo+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOT1JNQUwgZXhpdHMgb3IgYmxvY2tlZAo+PiAgICAgICArLS0tLS0t KyB8ICstLS0tLS0rICAgICAgICAgICAgICAgIHwgKy0tLS0rICstLS0tKwo+PiB0MSAgICB8Tk9S TUFMfCB8IHxOT1JNQUx8ICAgICAgICAgICAgICAgIHwgfElETEV8IHxJRExFfAo+PiAgICAgICAr LS0tLS0tKyB8ICstLS0tLS0rICAgICAgICAgICAgICAgIHwgKy0tLS0rICstLS0tKwo+Pgo+PiB0 MiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrX25leHRfdGFza19mYWlyIChhbGwgc2Ug YXJlIFNDSEVEX0lETEUpCj4+Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5l d2lkbGVfYmFsYW5jZQo+PiAgICAgICArLS0tLS0tKyB8ICAgICAgICAgICAgICAgICArLS0tLS0t KyB8ICstLS0tKyArLS0tLSsKPj4gdDMgICAgfE5PUk1BTHwgfCAgICAgICAgICAgICAgICAgfE5P Uk1BTHwgfCB8SURMRXwgfElETEV8Cj4+ICAgICAgICstLS0tLS0rIHwgICAgICAgICAgICAgICAg ICstLS0tLS0rIHwgKy0tLS0rICstLS0tKwo+Pgo+Pgo+PiB0MTogTk9STUFMIHRhc2sgaW4gQ1BV MiBleGl0cyBvciBibG9ja2VkCj4+IHQyOiBwaWNrX25leHRfdGFza19mYWlyIGNoZWNrIGFsbCBz ZSBpbiByYnRyZWUgYXJlIFNDSEVEX0lETEUgYW5kIGNhbGxzCj4+IG5ld2lkbGVfYmFsYW5jZSB3 aG8gdHJpZXMgdG8gcHVsbCBhIFNDSEVEX05PUk1BTChpZiBoYXMpLgo+PiB0MzogcGlja19uZXh0 X3Rhc2tfZmFpciB3b3VsZCBwaWNrIGEgU0NIRURfTk9STUFMIHRvIHJ1biBpbnN0ZWFkIG9mCj4+ IFNDSEVEX0lETEUobGlrZWx5KS4KPj4KPj4gPgo+PiA+PiBDUFUgYnkgZG9pbmcgbG9hZF9iYWxh bmNlIGZpcnN0Lgo+PiA+Pgo+PiA+PiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFhpYW9ndWFuZyA8eGlh b2dnY2hlbkB0ZW5jZW50LmNvbT4KPj4gPj4gU2lnbmVkLW9mZi1ieTogQ2hlbiBIZSA8aGVkZGNo ZW5AdGVuY2VudC5jb20+Cj4+ID4+IC0tLQo+PiA+PiAga2VybmVsL3NjaGVkL2ZhaXIuYyB8IDUg KysrKysKPj4gPj4gIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKPj4gPj4KPj4gPj4g ZGlmZiAtLWdpdCBhL2tlcm5lbC9zY2hlZC9mYWlyLmMgYi9rZXJuZWwvc2NoZWQvZmFpci5jCj4+ ID4+IGluZGV4IGFlN2NlYmEuLjBhMjYxMzIgMTAwNjQ0Cj4+ID4+IC0tLSBhL2tlcm5lbC9zY2hl ZC9mYWlyLmMKPj4gPj4gKysrIGIva2VybmVsL3NjaGVkL2ZhaXIuYwo+PiA+PiBAQCAtNzAwNCw2 ICs3MDA0LDExIEBAIHN0cnVjdCB0YXNrX3N0cnVjdCAqCj4+ID4+ICAgICAgICAgc3RydWN0IHRh c2tfc3RydWN0ICpwOwo+PiA+PiAgICAgICAgIGludCBuZXdfdGFza3M7Cj4+ID4+Cj4+ID4+ICsg ICAgICAgaWYgKHByZXYgJiYKPj4gPj4gKyAgICAgICAgICAgZmFpcl9wb2xpY3kocHJldi0+cG9s aWN5KSAmJgo+PiA+Cj4+ID5XaHkgZG8geW91IG5lZWQgYSBwcmV2IGFuZCBmYWlyIHRhc2sgID8g WW91IHNlZW0gdG8gdGFyZ2V0IHRoZSBzcGVjaWFsCj4+ID5jYXNlIG9mIHBpY2tfbmV4dF90YXNr ICBidXQgaW4gdGhpcyBjYXNlIHdoeSBub3Qgb25seSB0ZXN0aW5nIHJmIT1udWxsCj4+ID4gdG8g bWFrZSBzdXJlIHRvIG5vdCByZXR1cm4gaW1tZWRpYXRlbHkgYWZ0ZXIganVtcGluZyB0byB0aGUg aWRsZQo+Pgo+PiA+bGFiZWw/Cj4+IFdlIGp1c3Qgd2FudCB0byBkbyBsb2FkX2JhbGFuY2Ugb25s eSB3aGVuIENQVSBzd2l0Y2hlcyBmcm9tIFNDSEVEX05PUk1BTAo+PiB0byBTQ0hFRF9JRExFLgo+ PiBJZiBub3QgY2hlY2sgcHJldiwgd2hlbiB0aGUgcnVubmluZyB0YXNrcyBhcmUgYWxsIFNDSEVE X0lETEUsIHdlIHdvdWxkCj4+IGRvIG5ld2lkbGVfYmFsYW5jZSBldmVyeXRpbWUgaW4gcGlja19u ZXh0X3Rhc2tfZmFpciwgaXQgbWFrZXMgbm8gc2Vuc2UKPj4gYW5kIGtpbmQgb2Ygd2FzdGluZy4K Pgo+SSBhZ3JlZSB0aGF0IGNhbGxpbmcgbmV3aWRsZV9iYWxhbmNlIGV2ZXJ5IHRpbWUgcGlja19u ZXh0X3Rhc2tfZmFpciBpcwo+Y2FsbGVkIHdoZW4gdGhlcmUgYXJlIG9ubHkgc2NoZWRfaWRsZSB0 YXNrcyBpcyB1c2VsZXNzLgo+QnV0IHlvdSBhbHNvIGhhdmUgdG8gdGFrZSBpbnRvIGFjY291bnQg Y2FzZXMgd2hlcmUgdGhlcmUgd2FzIGFub3RoZXIKPmNsYXNzIG9mIHRhc2sgcnVubmluZyBvbiB0 aGUgY3B1IGxpa2UgUlQgb25lLiBJbiB5b3VyIGV4YW1wbGUgYWJvdmUsCj5pZiB5b3UgcmVwbGFj ZSB0aGUgbm9ybWFsIHRhc2sgb24gQ1BVMiBieSBhIFJUIHRhc2ssIHlvdSBzdGlsbCB3YW50IHRv Cgo+cGljayB0aGUgbm9ybWFsIHRhc2sgb24gQ1BVMSBvbmNlIFJUIHRhc2sgZ29lcyB0byBzbGVl cC4KU3VyZSzCoHRoaXPCoGNhc2XCoHNob3VsZMKgYmXCoHRha2VuwqBpbnRvwqBhY2NvdW50LMKg wqB3ZcKgc2hvdWxkwqBhbHNvwqB0cnnCoHRvCnBpY2vCoG5vcm1hbMKgdGFza8KgaW7CoHRoaXPC oGNhc2UuCgo+Cj5Bbm90aGVyIHBvaW50IHRoYXQgeW91IHdpbGwgaGF2ZSB0byBjb25zaWRlciB0 aGUgaW1wYWN0IG9uCj5ycS0+aWRsZV9zdGFtcCBiZWNhdXNlIG5ld2lkbGVfYmFsYW5jZSBpcyBh c3N1bWVkIHRvIGJlIGNhbGxlZCBiZWZvcmUKCj5nb2luZyBpZGxlIHdoaWNoIGlzIG5vdCB0aGUg Y2FzZSBhbnltb3JlIHdpdGggeW91ciB1c2UgY2FzZQpZZXMuwqBycS0+aWRsZV9zdGFtcMKgc2hv dWxkwqBub3TCoGJlwqBjaGFuZ2VkwqBpbsKgdGhpc8KgY2FzZS4KCgoKQWN0dWFsbHnCoHdlwqB3 YW50wqB0b8KgcHVsbMKgYcKgU0NIRURfTk9STUFMIHRhc2vCoChpZsKgcG9zc2libGUpwqB0b8Kg cnVuwqB3aGVuwqBhwqBjcHXCoGlzCmFib3V0wqB0b8KgcnVuwqBTQ0hFRF9JRExFwqB0YXNrLsKg QnV0wqBjdXJyZW50bHnCoG5ld2lkbGVfYmFsYW5jZcKgaXPCoG5vdApkZXNpZ25lZMKgZm9ywqBT Q0hFRF9JRExFwqDCoHNvwqBTQ0hFRF9JRExFwqBjYW7CoGFsc2/CoGJlwqBwdWxsZWTCoHdoaWNo CmlzwqB1c2VsZXNzwqBpbsKgb3VywqBzaXR1YXRpb24uCgpTb8Kgd2XCoHBsYW7CoHRvwqBhZGTC oGHCoG5ld8KgZnVuY3Rpb27CoHNjaGVkX2lkbGVfYmFsYW5jZcKgd2hpY2jCoG9ubHnCoHRyecKg dG8KcHVsbMKgU0NIRURfTk9STUFMwqB0YXNrc8KgZnJvbcKgdGhlwqBidXNpZXN0wqBjcHUuIEFu ZMKgd2XCoHdpbGwgY2FsbMKgCnNjaGVkX2lkbGVfYmFsYW5jZcKgd2hlbsKgdGhlwqBwcmV2aW91 c8KgdGFza8KgaXPCoG5vcm1hbMKgb3LCoFJUwqBhbmQKaG9waW5nwqB3ZcKgY2FuwqBwdWxswqBh wqBTQ0hFRF9OT1JNQUzCoHRhc2vCoHRvwqBydW4uCgpEb8KgeW91wqB0aGlua8KgaXTCoGlzwqBv a8KgdG/CoGFkZMKgYcKgbmV3wqBzY2hlZF9pZGxlX2JhbGFuY2U/Cgo+Cj4+Cj4+ID4KPj4KPj4g PkFsc28gd2h5IG5vdCBkb2luZyB0aGF0IGZvciBkZWZhdWx0IGNhc2UgdG9vID8gaS5lLiBiYWxh bmNlX2ZhaXIoKSA/Cj4+IFlvdSBhcmUgcmlnaHQsIGlmIHlvdSB0aGluayB0aGlzIHNjZW5hcmlv IG1ha2VzIHNlbnNlLCB3ZSB3aWxsIHNlbmQgYQo+PiByZWZpbmVkIHBhdGNoIHNvb24gOi0pCj4+ Cj4+ID4KPj4gPj4gKyAgICAgICAgICAgc2NoZWRfaWRsZV9jcHUocnEtPmNwdSkpCj4+ID4+ICsg ICAgICAgICAgICAgICBnb3RvIGlkbGU7Cj4+ID4+ICsKPj4gPj4gIGFnYWluOgo+PiA+PiAgICAg ICAgIGlmICghc2NoZWRfZmFpcl9ydW5uYWJsZShycSkpCj4+ID4+ICAgICAgICAgICAgICAgICBn b3RvIGlkbGU7Cj4+ID4+IC0tCj4+ID4+IDEuOC4zLjEKPj4gPj4KPj4gPj4K