From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 0E92F1FF163 for ; Thu, 7 Nov 2024 10:40:39 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 13A2C1CF03; Thu, 7 Nov 2024 10:40:50 +0100 (CET) Date: Thu, 07 Nov 2024 10:40:10 +0100 From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= To: Christian Ebner , pbs-devel@lists.proxmox.com References: <20241031121519.434337-1-c.ebner@proxmox.com> <20241031121519.434337-20-c.ebner@proxmox.com> <173090643519.79072.2923413753129715762@yuna.proxmox.com> In-Reply-To: MIME-Version: 1.0 User-Agent: astroid/0.16.0 (https://github.com/astroidmail/astroid) Message-Id: <1730971860.alw3ph9r8x.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.047 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pbs-devel] [PATCH v6 proxmox-backup 19/29] api: sync jobs: expose optional `sync-direction` parameter X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" T24gTm92ZW1iZXIgNywgMjAyNCAxMDoxMCBhbSwgQ2hyaXN0aWFuIEVibmVyIHdyb3RlOgo+IE9u IDExLzYvMjQgMTY6MjAsIEZhYmlhbiBHcsO8bmJpY2hsZXIgd3JvdGU6Cj4+IFF1b3RpbmcgQ2hy aXN0aWFuIEVibmVyICgyMDI0LTEwLTMxIDEzOjE1OjA5KQo+Pj4gQEAgLTIwLDE4ICsyMiwzNSBA QCBwdWIgZm4gY2hlY2tfc3luY19qb2JfcmVhZF9hY2Nlc3MoCj4+PiAgICAgICB1c2VyX2luZm86 ICZDYWNoZWRVc2VySW5mbywKPj4+ICAgICAgIGF1dGhfaWQ6ICZBdXRoaWQsCj4+PiAgICAgICBq b2I6ICZTeW5jSm9iQ29uZmlnLAo+Pj4gKyAgICBzeW5jX2RpcmVjdGlvbjogU3luY0RpcmVjdGlv biwKPj4+ICAgKSAtPiBib29sIHsKPj4+ICsgICAgLy8gY2hlY2sgZm9yIGF1ZGl0IGFjY2VzcyBv biBkYXRhc3RvcmUvbmFtZXNwYWNlLCBhcHBsaWVzIGZvciBwdWxsIGFuZCBwdXNoIGRpcmVjdGlv bgo+Pj4gICAgICAgbGV0IG5zX2FuY2hvcl9wcml2cyA9IHVzZXJfaW5mby5sb29rdXBfcHJpdnMo YXV0aF9pZCwgJmpvYi5hY2xfcGF0aCgpKTsKPj4+ICAgICAgIGlmIG5zX2FuY2hvcl9wcml2cyAm IFBSSVZfREFUQVNUT1JFX0FVRElUID09IDAgewo+Pj4gICAgICAgICAgIHJldHVybiBmYWxzZTsK Pj4+ICAgICAgIH0KPj4+ICAgCj4+PiAtICAgIGlmIGxldCBTb21lKHJlbW90ZSkgPSAmam9iLnJl bW90ZSB7Cj4+PiAtICAgICAgICBsZXQgcmVtb3RlX3ByaXZzID0gdXNlcl9pbmZvLmxvb2t1cF9w cml2cyhhdXRoX2lkLCAmWyJyZW1vdGUiLCByZW1vdGVdKTsKPj4+IC0gICAgICAgIHJlbW90ZV9w cml2cyAmIFBSSVZfUkVNT1RFX0FVRElUICE9IDAKPj4+IC0gICAgfSBlbHNlIHsKPj4+IC0gICAg ICAgIGxldCBzb3VyY2VfZHNfcHJpdnMgPSB1c2VyX2luZm8ubG9va3VwX3ByaXZzKGF1dGhfaWQs ICZbImRhdGFzdG9yZSIsICZqb2IucmVtb3RlX3N0b3JlXSk7Cj4+PiAtICAgICAgICBzb3VyY2Vf ZHNfcHJpdnMgJiBQUklWX0RBVEFTVE9SRV9BVURJVCAhPSAwCj4+PiArICAgIG1hdGNoIHN5bmNf ZGlyZWN0aW9uIHsKPj4+ICsgICAgICAgIFN5bmNEaXJlY3Rpb246OlB1bGwgPT4gewo+Pj4gKyAg ICAgICAgICAgIGlmIGxldCBTb21lKHJlbW90ZSkgPSAmam9iLnJlbW90ZSB7Cj4+PiArICAgICAg ICAgICAgICAgIGxldCByZW1vdGVfcHJpdnMgPSB1c2VyX2luZm8ubG9va3VwX3ByaXZzKGF1dGhf aWQsICZbInJlbW90ZSIsIHJlbW90ZV0pOwo+Pj4gKyAgICAgICAgICAgICAgICByZW1vdGVfcHJp dnMgJiBQUklWX1JFTU9URV9BVURJVCAhPSAwCj4+PiArICAgICAgICAgICAgfSBlbHNlIHsKPj4+ ICsgICAgICAgICAgICAgICAgbGV0IHNvdXJjZV9kc19wcml2cyA9Cj4+PiArICAgICAgICAgICAg ICAgICAgICB1c2VyX2luZm8ubG9va3VwX3ByaXZzKGF1dGhfaWQsICZbImRhdGFzdG9yZSIsICZq b2IucmVtb3RlX3N0b3JlXSk7Cj4+PiArICAgICAgICAgICAgICAgIHNvdXJjZV9kc19wcml2cyAm IFBSSVZfREFUQVNUT1JFX0FVRElUICE9IDAKPj4+ICsgICAgICAgICAgICB9Cj4+PiArICAgICAg ICB9Cj4+PiArICAgICAgICBTeW5jRGlyZWN0aW9uOjpQdXNoID0+IHsKPj4+ICsgICAgICAgICAg ICAvLyBjaGVjayBmb3IgYXVkaXQgYWNjZXNzIG9uIHJlbW90ZS9kYXRhc3RvcmUvbmFtZXNwYWNl Cj4+PiArICAgICAgICAgICAgaWYgbGV0IFNvbWUodGFyZ2V0X2FjbF9wYXRoKSA9IGpvYi5yZW1v dGVfYWNsX3BhdGgoKSB7Cj4+PiArICAgICAgICAgICAgICAgIGxldCByZW1vdGVfcHJpdnMgPSB1 c2VyX2luZm8ubG9va3VwX3ByaXZzKGF1dGhfaWQsICZ0YXJnZXRfYWNsX3BhdGgpOwo+Pj4gKyAg ICAgICAgICAgICAgICByZW1vdGVfcHJpdnMgJiBQUklWX1JFTU9URV9BVURJVCAhPSAwCj4+IAo+ PiB0aGUgb3RoZXIgdHdvIGNoZWNrcyBhYm92ZSBjaGVjayB0aGUgc291cmNlIHNpZGUsIHRoaXMg Y2hlY2tzIHRoZSB0aGUgdGFyZ2V0Cj4+IHNpZGUuLiBzaG91bGQgd2UgY2hlY2sgYm90aCBoZXJl Pwo+IAo+IFdlbGwsIEFVRElUIGFjY2VzcyBvbiB0aGUgc291cmNlIGZvciBwdXNoIGlzIGFscmVh ZHkgY2hlY2tlZCBieSB0aGUgCj4gY29tbW9uIGNoZWNrIG91dHNpZGUgdGhlIG1hdGNoIHN0YXRl bWVudCwgc28gbm90IHN1cmUgd2hhdCBmdXJ0aGVyIHRvIAo+IGNoZWNrIGhlcmU/Cj4gCj4gVGhl IGNvbW1vbiBwYXJ0IGNoZWNrIGZvciAoc28gc29ydWNlIGluIGNhc2Ugb2YgcHVzaCwgdGFyZ2V0 IGluY2FzZSBvZiAKPiBwdWxsKSBhbmQgdGhlIG1hdGNoIGFybXMgY2hlY2sgdGFyZ2V0IGluIGNh c2Ugb2YgcHVzaCBhbmQgc291cmNlIGluIGNhc2UgCj4gb2YgcHVsbC4KCnJpZ2h0LCBzb3JyeSBm b3IgdGhlIG5vaXNlIQoKPiAKPj4gCj4+PiArICAgICAgICAgICAgfSBlbHNlIHsKPj4+ICsgICAg ICAgICAgICAgICAgLy8gUmVtb3RlIG11c3QgYWx3YXlzIGJlIHByZXNlbnQgZm9yIHN5bmMgaW4g cHVzaCBkaXJlY3Rpb24sIGZhaWwgb3RoZXJ3aXNlCj4+PiArICAgICAgICAgICAgICAgIGZhbHNl Cj4+PiArICAgICAgICAgICAgfQo+Pj4gKyAgICAgICAgfQo+Pj4gICAgICAgfQo+Pj4gICB9Cj4+ PiAgIAo+Pj4gQEAgLTQzLDQxICs2Miw5MyBAQCBmbiBpc19jb3JyZWN0X293bmVyKGF1dGhfaWQ6 ICZBdXRoaWQsIGpvYjogJlN5bmNKb2JDb25maWcpIC0+IGJvb2wgewo+Pj4gICAgICAgfQo+Pj4g ICB9Cj4+PiAgIAo+Pj4gLS8vLyBjaGVja3Mgd2hldGhlciB1c2VyIGNhbiBydW4gdGhlIGNvcnJl c3BvbmRpbmcgcHVsbCBqb2IKPj4+ICsvLy8gY2hlY2tzIHdoZXRoZXIgdXNlciBjYW4gcnVuIHRo ZSBjb3JyZXNwb25kaW5nIHN5bmMgam9iLCBkZXBlbmRpbmcgb24gc3luYyBkaXJlY3Rpb24KPj4+ ICAgLy8vCj4+PiAtLy8vIG5hbWVzcGFjZSBjcmVhdGlvbi9kZWxldGlvbiBBQ0wgYW5kIGJhY2t1 cCBncm91cCBvd25lcnNoaXAgY2hlY2tzIGhhcHBlbiBpbiB0aGUgcHVsbCBjb2RlIGRpcmVjdGx5 Lgo+Pj4gKy8vLyBuYW1lc3BhY2UgY3JlYXRpb24vZGVsZXRpb24gQUNMIGFuZCBiYWNrdXAgZ3Jv dXAgb3duZXJzaGlwIGNoZWNrcyBoYXBwZW4gaW4gdGhlIHB1bGwvcHVzaCBjb2RlCj4+PiArLy8v IGRpcmVjdGx5Lgo+Pj4gICAvLy8gcmVtb3RlIHNpZGUgY2hlY2tzL2ZpbHRlcnMgcmVtb3RlIGRh dGFzdG9yZS9uYW1lc3BhY2UvZ3JvdXAgYWNjZXNzLgo+Pj4gICBwdWIgZm4gY2hlY2tfc3luY19q b2JfbW9kaWZ5X2FjY2VzcygKPj4+ICAgICAgIHVzZXJfaW5mbzogJkNhY2hlZFVzZXJJbmZvLAo+ Pj4gICAgICAgYXV0aF9pZDogJkF1dGhpZCwKPj4+ICAgICAgIGpvYjogJlN5bmNKb2JDb25maWcs Cj4+PiArICAgIHN5bmNfZGlyZWN0aW9uOiBTeW5jRGlyZWN0aW9uLAo+Pj4gICApIC0+IGJvb2wg ewo+Pj4gLSAgICBsZXQgbnNfYW5jaG9yX3ByaXZzID0gdXNlcl9pbmZvLmxvb2t1cF9wcml2cyhh dXRoX2lkLCAmam9iLmFjbF9wYXRoKCkpOwo+Pj4gLSAgICBpZiBuc19hbmNob3JfcHJpdnMgJiBQ UklWX0RBVEFTVE9SRV9CQUNLVVAgPT0gMCB8fCBuc19hbmNob3JfcHJpdnMgJiBQUklWX0RBVEFT VE9SRV9BVURJVCA9PSAwIHsKPj4+IC0gICAgICAgIHJldHVybiBmYWxzZTsKPj4+IC0gICAgfQo+ Pj4gKyAgICBtYXRjaCBzeW5jX2RpcmVjdGlvbiB7Cj4+PiArICAgICAgICBTeW5jRGlyZWN0aW9u OjpQdWxsID0+IHsKPj4+ICsgICAgICAgICAgICBsZXQgbnNfYW5jaG9yX3ByaXZzID0gdXNlcl9p bmZvLmxvb2t1cF9wcml2cyhhdXRoX2lkLCAmam9iLmFjbF9wYXRoKCkpOwo+Pj4gKyAgICAgICAg ICAgIGlmIG5zX2FuY2hvcl9wcml2cyAmIFBSSVZfREFUQVNUT1JFX0JBQ0tVUCA9PSAwCj4+PiAr ICAgICAgICAgICAgICAgIHx8IG5zX2FuY2hvcl9wcml2cyAmIFBSSVZfREFUQVNUT1JFX0FVRElU ID09IDAKPj4+ICsgICAgICAgICAgICB7Cj4+PiArICAgICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKPj4+ICsgICAgICAgICAgICB9Cj4+PiArCj4+PiArICAgICAgICAgICAgaWYgbGV0IFNvbWUo dHJ1ZSkgPSBqb2IucmVtb3ZlX3ZhbmlzaGVkIHsKPj4+ICsgICAgICAgICAgICAgICAgaWYgbnNf YW5jaG9yX3ByaXZzICYgUFJJVl9EQVRBU1RPUkVfUFJVTkUgPT0gMCB7Cj4+PiArICAgICAgICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4+PiArICAgICAgICAgICAgICAgIH0KPj4+ICsgICAg ICAgICAgICB9Cj4+PiAgIAo+Pj4gLSAgICBpZiBsZXQgU29tZSh0cnVlKSA9IGpvYi5yZW1vdmVf dmFuaXNoZWQgewo+Pj4gLSAgICAgICAgaWYgbnNfYW5jaG9yX3ByaXZzICYgUFJJVl9EQVRBU1RP UkVfUFJVTkUgPT0gMCB7Cj4+PiAtICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+Pj4gKyAgICAg ICAgICAgIC8vIHNhbWUgcGVybWlzc2lvbiBhcyBjaGFuZ2luZyBvd25lcnNoaXAgYWZ0ZXIgc3lu Y2luZwo+Pj4gKyAgICAgICAgICAgIGlmICFpc19jb3JyZWN0X293bmVyKGF1dGhfaWQsIGpvYikg JiYgbnNfYW5jaG9yX3ByaXZzICYgUFJJVl9EQVRBU1RPUkVfTU9ESUZZID09IDAgewo+Pj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4+PiArICAgICAgICAgICAgfQo+Pj4gKwo+Pj4g KyAgICAgICAgICAgIGlmIGxldCBTb21lKHJlbW90ZSkgPSAmam9iLnJlbW90ZSB7Cj4+PiArICAg ICAgICAgICAgICAgIGxldCByZW1vdGVfcHJpdnMgPQo+Pj4gKyAgICAgICAgICAgICAgICAgICAg dXNlcl9pbmZvLmxvb2t1cF9wcml2cyhhdXRoX2lkLCAmWyJyZW1vdGUiLCByZW1vdGUsICZqb2Iu cmVtb3RlX3N0b3JlXSk7Cj4+PiArICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGVfcHJpdnMg JiBQUklWX1JFTU9URV9SRUFEICE9IDA7Cj4+PiArICAgICAgICAgICAgfQo+Pj4gKyAgICAgICAg ICAgIHRydWUKPj4+ICAgICAgICAgICB9Cj4+PiAtICAgIH0KPj4+ICsgICAgICAgIFN5bmNEaXJl Y3Rpb246OlB1c2ggPT4gewo+Pj4gKyAgICAgICAgICAgIC8vIFJlbW90ZSBtdXN0IGFsd2F5cyBi ZSBwcmVzZW50IGZvciBzeW5jIGluIHB1c2ggZGlyZWN0aW9uLCBmYWlsIG90aGVyd2lzZQo+Pj4g KyAgICAgICAgICAgIGxldCB0YXJnZXRfcHJpdnMgPSBpZiBsZXQgU29tZSh0YXJnZXRfYWNsX3Bh dGgpID0gam9iLnJlbW90ZV9hY2xfcGF0aCgpIHsKPj4+ICsgICAgICAgICAgICAgICAgdXNlcl9p bmZvLmxvb2t1cF9wcml2cyhhdXRoX2lkLCAmdGFyZ2V0X2FjbF9wYXRoKQo+Pj4gKyAgICAgICAg ICAgIH0gZWxzZSB7Cj4+PiArICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPj4+ICsgICAg ICAgICAgICB9Owo+Pj4gKwo+Pj4gKyAgICAgICAgICAgIC8vIGNoZWNrIHVzZXIgaXMgYWxsb3dl ZCB0byBjcmVhdGUgYmFja3VwcyBvbiByZW1vdGUgZGF0YXN0b3JlCj4+PiArICAgICAgICAgICAg aWYgdGFyZ2V0X3ByaXZzICYgUFJJVl9SRU1PVEVfREFUQVNUT1JFX0JBQ0tVUCA9PSAwIHsKPj4+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+Pj4gKyAgICAgICAgICAgIH0KPj4+ICAg Cj4+PiAtICAgIC8vIHNhbWUgcGVybWlzc2lvbiBhcyBjaGFuZ2luZyBvd25lcnNoaXAgYWZ0ZXIg c3luY2luZwo+Pj4gLSAgICBpZiAhaXNfY29ycmVjdF9vd25lcihhdXRoX2lkLCBqb2IpICYmIG5z X2FuY2hvcl9wcml2cyAmIFBSSVZfREFUQVNUT1JFX01PRElGWSA9PSAwIHsKPj4+IC0gICAgICAg IHJldHVybiBmYWxzZTsKPj4+IC0gICAgfQo+Pj4gKyAgICAgICAgICAgIGlmIGxldCBTb21lKHRy dWUpID0gam9iLnJlbW92ZV92YW5pc2hlZCB7Cj4+PiArICAgICAgICAgICAgICAgIC8vIGNoZWNr IHVzZXIgaXMgYWxsb3dlZCB0byBwcnVuZSBiYWNrdXAgc25hcHNob3RzIG9uIHJlbW90ZSBkYXRh c3RvcmUKPj4+ICsgICAgICAgICAgICAgICAgaWYgdGFyZ2V0X3ByaXZzICYgUFJJVl9SRU1PVEVf REFUQVNUT1JFX1BSVU5FID09IDAgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh bHNlOwo+Pj4gKyAgICAgICAgICAgICAgICB9Cj4+PiArICAgICAgICAgICAgfQo+Pj4gKwo+Pj4g KyAgICAgICAgICAgIC8vIGNoZWNrIHVzZXIgaXMgbm90IHRoZSBvd25lciBvZiB0aGUgc3luYyBq b2IsIGJ1dCBoYXMgcmVtb3RlIGRhdGFzdG9yZSBtb2RpZnkgcGVybWlzc2lvbnMKPj4+ICsgICAg ICAgICAgICBpZiAhaXNfY29ycmVjdF9vd25lcihhdXRoX2lkLCBqb2IpICYmIHRhcmdldF9wcml2 cyAmIFBSSVZfUkVNT1RFX0RBVEFTVE9SRV9NT0RJRlkgPT0gMCB7Cj4+PiArICAgICAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKPj4+ICsgICAgICAgICAgICB9Cj4+IAo+PiBpc24ndCB0aGlzIHdy b25nPyBpZiBJIGFtIG1vZGlmeWluZy9ydW5uaW5nIGEgc3luYyBqb2IgIm93bmVkIiBieSBzb21l Ym9keQo+PiBlbHNlLCB0aGVuIEkgbmVlZCB0byBoYXZlIERhdGFzdG9yZS5SZWFkIG9yIERhdGFz dG9yZS5Nb2RpZnkgb24gdGhlICpsb2NhbCoKPj4gc291cmNlIGRhdGFzdG9yZStuYW1lc3BhY2Uu LiBlbHNlIEkgY291bGQgdXNlIHN1Y2ggYSBzeW5jIGpvYiB0byBleGZpbHRyYXRlCj4+IGJhY2t1 cHMgSSB3b3VsZG4ndCBvdGhlcndpc2UgaGF2ZSBhY2Nlc3MgdG8uLgo+IAo+IEJ1dCB0aGF0IGlz IGNoZWNrZWQgcmlnaHQgYmVsb3c/IFRoZSBSZW1vdGUgZGF0YXN0b3JlIG1vZGlmeSBjaGVjayBo ZXJlIAo+IGp1c3QgYWxsb3dzIHRvIGV4ZWN1dGUgdGhlIGpvYiBpZiBlaXRoZXIgdGhlIHVzZXIg b3ducyB0aGUgam9iLCBvciBpdCAKPiBoYXMgdGhlIHByaXZzIHRvIGRvIHNvLiBBdCBsZWFzdCB0 aGF0IHdhcyBteSBpbnRlbnRpb24uCgpidXQgdGhlIGxvY2FsIHVzZXIgYWZmZWN0cyB0aGUgc291 cmNlIHNpZGUsIG5vdCB0aGUgdGFyZ2V0IHNpZGUuLgoKaWYgdXNlciBBIGNhbiBzZXR1cCBhIHN5 bmMgam9iICJvd25lZCIgYnkgdXNlciBCLCB0aGV5IGdldCBlZmZlY3RpdmUKYWNjZXNzIHRvIGFs bCBiYWNrdXBzIG9mIHVzZXIgQi4uIHNvIHRoZXkgbmVlZCB0byBoYXZlIHRoZSBwcml2cyB0bwph Y2Nlc3MgdGhvc2UgYmFja3VwczoKLSBEYXRhc3RvcmUuUmVhZCBvbiB0aGUgKnNvdXJjZSogZGF0 YXN0b3JlK25hbWVzcGFjZSAoYXMgdGhhdCBhbGxvd3MKICByZWFkaW5nIG5vbi1vd25lZCBiYWNr dXBzKSBPUgotIERhdGFzdG9yZS5Nb2RpZnkgb24gdGhlICpzb3VyY2UqIGRhdGFzdG9yZStuYW1l c3BhY2UgKGFzIHRoYXQgYWxsb3dzCiAgY2hhbmdpbmcgb3duZXJzaGlwIG9mIGJhY2t1cCBncm91 cHMsIHdoaWNoIHdvdWxkIGFsbG93IHRyYW5zZmVyaW5nCiAgb3duZXJzaGlwIHRvIHVzZXIgQSBh bmQgcmVhZGluZyB0aGUgYmFja3VwcyB0aGF0IHdheSkKCndoZXRoZXIgdGhlIHVzZXIgaXMgYWxs b3dlZCB0byBjcmVhdGUvcmVtb3ZlIG5hbWVzcGFjZXMgb24gdGhlIHRhcmdldAood2hhdCBpcyBj dXJyZW50bHkgY2hlY2tlZCkgaXMgbm90IHJlbGF0ZWQgYXQgYWxsIHRvIHRoaXMgZGVjaXNpb24u Lgp0aGF0IG9ubHkgY29tZXMgaW50byBwbGF5IGF0IGpvYiBleGVjdXRpb24gdGltZSB3aGVuIHRo b3NlIGFjdGlvbnMgYXJlCnRha2VuLgoKdGhlIGNoZWNrcyBiZWxvdyBqdXN0IGVuc3VyZSB0aGF0 IHRoZSB1c2VyIGNhbiBzZWUgdGhlCmRhdGFzdG9yZStuYW1lc3BhY2UsIGFuZCBjYW4gcmVhZCBh bGwgb3Igb3duZWQgYmFja3VwcyAoYnV0IHRoYXQgaXMKaXJyZXNwZWN0aXZlIG9mIHdoZXRoZXIg dGhleSBvd24gdGhlIHN5bmMgam9iIHRoZW1zZWx2ZXMsIG9yIG5vdCkuCgp0aGVyZSBpcyBzb21l IG92ZXJsYXAgaGVyZToKLSBpZiB0aGUgdXNlciBoYXMgRGF0YXN0b3JlLlJlYWQsIHRoYXQgY292 ZXJzIGJvdGggZm9yZWlnbiBhbmQgb3duIGpvYnMKLSBpZiB0aGUgdXNlciBqdXN0IGhhcyBEYXRh c3RvcmUuQmFja3VwLCB0aGV5IGFsc28gbmVlZCBEYXRhc3RvcmUuTW9kaWZ5CiAgaWYgdGhlIGpv YiBpcyBvd25lZCBieSBhIGRpZmZlcmVudCB1c2VyLCBidXQgdGhleSBkb24ndCBuZWVkIGl0CiAg Zm9yIHRoZWlyIG93biBqb2IuLgoKSSBob3BlIHRoaXMgbWFrZXMgaXQgbW9yZSBjbGVhciB3aGF0 IEkgbWVhbnQgOikKCj4+IAo+Pj4gKwo+Pj4gIGNoZWNrIHVzZXIgaXMgYWxsb3dlZCB0byByZWFk IGZyb20gKGxvY2FsKSBzb3VyY2UgZGF0YXN0b3JlL25hbWVzcGFjZQo+Pj4gKyAgICAgICAgICAg IGxldCBzb3VyY2VfcHJpdnMgPSB1c2VyX2luZm8ubG9va3VwX3ByaXZzKGF1dGhfaWQsICZqb2Iu YWNsX3BhdGgoKSk7Cj4+PiArICAgICAgICAgICAgaWYgc291cmNlX3ByaXZzICYgUFJJVl9EQVRB U1RPUkVfQVVESVQgPT0gMCB7Cj4+PiArICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPj4+ ICsgICAgICAgICAgICB9Cj4+PiAgIAo+Pj4gLSAgICBpZiBsZXQgU29tZShyZW1vdGUpID0gJmpv Yi5yZW1vdGUgewo+Pj4gLSAgICAgICAgbGV0IHJlbW90ZV9wcml2cyA9IHVzZXJfaW5mby5sb29r dXBfcHJpdnMoYXV0aF9pZCwgJlsicmVtb3RlIiwgcmVtb3RlLCAmam9iLnJlbW90ZV9zdG9yZV0p Owo+Pj4gLSAgICAgICAgcmV0dXJuIHJlbW90ZV9wcml2cyAmIFBSSVZfUkVNT1RFX1JFQUQgIT0g MDsKPj4+ICsgICAgICAgICAgICAvLyBjaGVjayBmb3IgZWl0aGVyIGRhdGFzdG9yZSByZWFkIG9y IGRhdGFzdG9yZSBiYWNrdXAgYWNjZXNzCj4+PiArICAgICAgICAgICAgLy8gKHRoZSBsYXRlciBp bXBseWluZyByZWFkIGFjY2VzcyBmb3Igb3duZWQgc25hcHNob3QgZ3JvdXBzKQo+Pj4gKyAgICAg ICAgICAgIGlmIHNvdXJjZV9wcml2cyAmIFBSSVZfREFUQVNUT1JFX1JFQUQgIT0gMCB7Cj4+PiAr ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+Pj4gKyAgICAgICAgICAgIH0KPj4+ICsgICAg ICAgICAgICBzb3VyY2VfcHJpdnMgJiBQUklWX0RBVEFTVE9SRV9CQUNLVVAgIT0gMAo+Pj4gKyAg ICAgICAgfQo+Pj4gICAgICAgfQo+Pj4gLSAgICB0cnVlCj4+PiAgIH0KPj4+ICAgCj4+PiAgICNb YXBpKAo+Pj4gICAgICAgaW5wdXQ6IHsKPj4+IC0gICAgICAgIHByb3BlcnRpZXM6IHt9LAo+Pj4g KyAgICAgICAgcHJvcGVydGllczogewo+Pj4gKyAgICAgICAgICAgICJzeW5jLWRpcmVjdGlvbiI6 IHsKPj4+ICsgICAgICAgICAgICAgICAgdHlwZTogU3luY0RpcmVjdGlvbiwKPj4+ICsgICAgICAg ICAgICAgICAgb3B0aW9uYWw6IHRydWUsCj4+PiArICAgICAgICAgICAgfSwKPj4+ICsgICAgICAg IH0sCj4+PiAgICAgICB9LAo+Pj4gICAgICAgcmV0dXJuczogewo+Pj4gICAgICAgICAgIGRlc2Ny aXB0aW9uOiAiTGlzdCBjb25maWd1cmVkIGpvYnMuIiwKPj4+IEBAIC05Miw2ICsxNjMsNyBAQCBw dWIgZm4gY2hlY2tfc3luY19qb2JfbW9kaWZ5X2FjY2VzcygKPj4+ICAgLy8vIExpc3QgYWxsIHN5 bmMgam9icwo+Pj4gICBwdWIgZm4gbGlzdF9zeW5jX2pvYnMoCj4+PiAgICAgICBfcGFyYW06IFZh bHVlLAo+Pj4gKyAgICBzeW5jX2RpcmVjdGlvbjogT3B0aW9uPFN5bmNEaXJlY3Rpb24+LAo+Pj4g ICAgICAgcnBjZW52OiAmbXV0IGR5biBScGNFbnZpcm9ubWVudCwKPj4+ICAgKSAtPiBSZXN1bHQ8 VmVjPFN5bmNKb2JDb25maWc+LCBFcnJvcj4gewo+Pj4gICAgICAgbGV0IGF1dGhfaWQ6IEF1dGhp ZCA9IHJwY2Vudi5nZXRfYXV0aF9pZCgpLnVud3JhcCgpLnBhcnNlKCk/Owo+Pj4gQEAgLTk5LDEz ICsxNzEsMTYgQEAgcHViIGZuIGxpc3Rfc3luY19qb2JzKAo+Pj4gICAKPj4+ICAgICAgIGxldCAo Y29uZmlnLCBkaWdlc3QpID0gc3luYzo6Y29uZmlnKCk/Owo+Pj4gICAKPj4+IC0gICAgbGV0IGxp c3QgPSBjb25maWcuY29udmVydF90b190eXBlZF9hcnJheSgic3luYyIpPzsKPj4+ICsgICAgbGV0 IHN5bmNfZGlyZWN0aW9uID0gc3luY19kaXJlY3Rpb24udW53cmFwX29yX2RlZmF1bHQoKTsKPj4+ ICsgICAgbGV0IGxpc3QgPSBjb25maWcuY29udmVydF90b190eXBlZF9hcnJheShzeW5jX2RpcmVj dGlvbi5hc19jb25maWdfdHlwZV9zdHIoKSk/Owo+Pj4gICAKPj4+ICAgICAgIHJwY2VudlsiZGln ZXN0Il0gPSBoZXg6OmVuY29kZShkaWdlc3QpLmludG8oKTsKPj4+ICAgCj4+PiAgICAgICBsZXQg bGlzdCA9IGxpc3QKPj4+ICAgICAgICAgICAuaW50b19pdGVyKCkKPj4+IC0gICAgICAgIC5maWx0 ZXIofHN5bmNfam9ifCBjaGVja19zeW5jX2pvYl9yZWFkX2FjY2VzcygmdXNlcl9pbmZvLCAmYXV0 aF9pZCwgc3luY19qb2IpKQo+Pj4gKyAgICAgICAgLmZpbHRlcih8c3luY19qb2J8IHsKPj4+ICsg ICAgICAgICAgICBjaGVja19zeW5jX2pvYl9yZWFkX2FjY2VzcygmdXNlcl9pbmZvLCAmYXV0aF9p ZCwgc3luY19qb2IsIHN5bmNfZGlyZWN0aW9uKQo+Pj4gKyAgICAgICAgfSkKPj4+ICAgICAgICAg ICAuY29sbGVjdCgpOwo+Pj4gICAgICAgT2sobGlzdCkKPj4+ICAgfQo+Pj4gQEAgLTExOCw2ICsx OTMsMTAgQEAgcHViIGZuIGxpc3Rfc3luY19qb2JzKAo+Pj4gICAgICAgICAgICAgICAgICAgdHlw ZTogU3luY0pvYkNvbmZpZywKPj4+ICAgICAgICAgICAgICAgICAgIGZsYXR0ZW46IHRydWUsCj4+ PiAgICAgICAgICAgICAgIH0sCj4+PiArICAgICAgICAgICAgInN5bmMtZGlyZWN0aW9uIjogewo+ Pj4gKyAgICAgICAgICAgICAgICB0eXBlOiBTeW5jRGlyZWN0aW9uLAo+Pj4gKyAgICAgICAgICAg ICAgICBvcHRpb25hbDogdHJ1ZSwKPj4+ICsgICAgICAgICAgICB9LAo+Pj4gICAgICAgICAgIH0s Cj4+PiAgICAgICB9LAo+Pj4gICAgICAgYWNjZXNzOiB7Cj4+PiBAQCAtMTI4LDE0ICsyMDcsMTYg QEAgcHViIGZuIGxpc3Rfc3luY19qb2JzKAo+Pj4gICAvLy8gQ3JlYXRlIGEgbmV3IHN5bmMgam9i Lgo+Pj4gICBwdWIgZm4gY3JlYXRlX3N5bmNfam9iKAo+Pj4gICAgICAgY29uZmlnOiBTeW5jSm9i Q29uZmlnLAo+Pj4gKyAgICBzeW5jX2RpcmVjdGlvbjogT3B0aW9uPFN5bmNEaXJlY3Rpb24+LAo+ Pj4gICAgICAgcnBjZW52OiAmbXV0IGR5biBScGNFbnZpcm9ubWVudCwKPj4+ICAgKSAtPiBSZXN1 bHQ8KCksIEVycm9yPiB7Cj4+PiAgICAgICBsZXQgYXV0aF9pZDogQXV0aGlkID0gcnBjZW52Lmdl dF9hdXRoX2lkKCkudW53cmFwKCkucGFyc2UoKT87Cj4+PiAgICAgICBsZXQgdXNlcl9pbmZvID0g Q2FjaGVkVXNlckluZm86Om5ldygpPzsKPj4+ICsgICAgbGV0IHN5bmNfZGlyZWN0aW9uID0gc3lu Y19kaXJlY3Rpb24udW53cmFwX29yX2RlZmF1bHQoKTsKPj4+ICAgCj4+PiAgICAgICBsZXQgX2xv Y2sgPSBzeW5jOjpsb2NrX2NvbmZpZygpPzsKPj4+ICAgCj4+PiAtICAgIGlmICFjaGVja19zeW5j X2pvYl9tb2RpZnlfYWNjZXNzKCZ1c2VyX2luZm8sICZhdXRoX2lkLCAmY29uZmlnKSB7Cj4+PiAr ICAgIGlmICFjaGVja19zeW5jX2pvYl9tb2RpZnlfYWNjZXNzKCZ1c2VyX2luZm8sICZhdXRoX2lk LCAmY29uZmlnLCBzeW5jX2RpcmVjdGlvbikgewo+Pj4gICAgICAgICAgIGJhaWwhKCJwZXJtaXNz aW9uIGNoZWNrIGZhaWxlZCIpOwo+Pj4gICAgICAgfQo+Pj4gICAKPj4+IEBAIC0xNTgsNyArMjM5 LDcgQEAgcHViIGZuIGNyZWF0ZV9zeW5jX2pvYigKPj4+ICAgICAgICAgICBwYXJhbV9iYWlsISgi aWQiLCAiam9iICd7fScgYWxyZWFkeSBleGlzdHMuIiwgY29uZmlnLmlkKTsKPj4+ICAgICAgIH0K Pj4+ICAgCj4+PiAtICAgIHNlY3Rpb25fY29uZmlnLnNldF9kYXRhKCZjb25maWcuaWQsICJzeW5j IiwgJmNvbmZpZyk/Owo+Pj4gKyAgICBzZWN0aW9uX2NvbmZpZy5zZXRfZGF0YSgmY29uZmlnLmlk LCBzeW5jX2RpcmVjdGlvbi5hc19jb25maWdfdHlwZV9zdHIoKSwgJmNvbmZpZyk/Owo+Pj4gICAK Pj4+ICAgICAgIHN5bmM6OnNhdmVfY29uZmlnKCZzZWN0aW9uX2NvbmZpZyk/Owo+Pj4gICAKPj4+ IEBAIC0xODgsOCArMjY5LDE3IEBAIHB1YiBmbiByZWFkX3N5bmNfam9iKGlkOiBTdHJpbmcsIHJw Y2VudjogJm11dCBkeW4gUnBjRW52aXJvbm1lbnQpIC0+IFJlc3VsdDxTeW5jCj4+PiAgIAo+Pj4g ICAgICAgbGV0IChjb25maWcsIGRpZ2VzdCkgPSBzeW5jOjpjb25maWcoKT87Cj4+PiAgIAo+Pj4g LSAgICBsZXQgc3luY19qb2IgPSBjb25maWcubG9va3VwKCJzeW5jIiwgJmlkKT87Cj4+PiAtICAg IGlmICFjaGVja19zeW5jX2pvYl9yZWFkX2FjY2VzcygmdXNlcl9pbmZvLCAmYXV0aF9pZCwgJnN5 bmNfam9iKSB7Cj4+PiArICAgIGxldCAoc3luY19qb2IsIHN5bmNfZGlyZWN0aW9uKSA9Cj4+PiAr ICAgICAgICBpZiBsZXQgU29tZSgoY29uZmlnX3R5cGUsIGNvbmZpZ19zZWN0aW9uKSkgPSBjb25m aWcuc2VjdGlvbnMuZ2V0KCZpZCkgewo+Pj4gKyAgICAgICAgICAgICgKPj4+ICsgICAgICAgICAg ICAgICAgU3luY0pvYkNvbmZpZzo6ZGVzZXJpYWxpemUoY29uZmlnX3NlY3Rpb24pPywKPj4+ICsg ICAgICAgICAgICAgICAgU3luY0RpcmVjdGlvbjo6ZnJvbV9jb25maWdfdHlwZV9zdHIoY29uZmln X3R5cGUpPywKPj4+ICsgICAgICAgICAgICApCj4+PiArICAgICAgICB9IGVsc2Ugewo+Pj4gKyAg ICAgICAgICAgIGh0dHBfYmFpbCEoTk9UX0ZPVU5ELCAiam9iICd7aWR9JyBkb2VzIG5vdCBleGlz dC4iKQo+Pj4gKyAgICAgICAgfTsKPj4+ICsKPj4+ICsgICAgaWYgIWNoZWNrX3N5bmNfam9iX3Jl YWRfYWNjZXNzKCZ1c2VyX2luZm8sICZhdXRoX2lkLCAmc3luY19qb2IsIHN5bmNfZGlyZWN0aW9u KSB7Cj4+PiAgICAgICAgICAgYmFpbCEoInBlcm1pc3Npb24gY2hlY2sgZmFpbGVkIik7Cj4+PiAg ICAgICB9Cj4+PiAgIAo+Pj4gQEAgLTI4NCw3ICszNzQsMTUgQEAgcHViIGZuIHVwZGF0ZV9zeW5j X2pvYigKPj4+ICAgICAgICAgICBjcmF0ZTo6dG9vbHM6OmRldGVjdF9tb2RpZmllZF9jb25maWd1 cmF0aW9uX2ZpbGUoJmRpZ2VzdCwgJmV4cGVjdGVkX2RpZ2VzdCk/Owo+Pj4gICAgICAgfQo+Pj4g ICAKPj4+IC0gICAgbGV0IG11dCBkYXRhOiBTeW5jSm9iQ29uZmlnID0gY29uZmlnLmxvb2t1cCgi c3luYyIsICZpZCk/Owo+Pj4gKyAgICBsZXQgKG11dCBkYXRhLCBzeW5jX2RpcmVjdGlvbikgPQo+ Pj4gKyAgICAgICAgaWYgbGV0IFNvbWUoKGNvbmZpZ190eXBlLCBjb25maWdfc2VjdGlvbikpID0g Y29uZmlnLnNlY3Rpb25zLmdldCgmaWQpIHsKPj4+ICsgICAgICAgICAgICAoCj4+PiArICAgICAg ICAgICAgICAgIFN5bmNKb2JDb25maWc6OmRlc2VyaWFsaXplKGNvbmZpZ19zZWN0aW9uKT8sCj4+ PiArICAgICAgICAgICAgICAgIFN5bmNEaXJlY3Rpb246OmZyb21fY29uZmlnX3R5cGVfc3RyKGNv bmZpZ190eXBlKT8sCj4+PiArICAgICAgICAgICAgKQo+Pj4gKyAgICAgICAgfSBlbHNlIHsKPj4+ ICsgICAgICAgICAgICBodHRwX2JhaWwhKE5PVF9GT1VORCwgImpvYiAne2lkfScgZG9lcyBub3Qg ZXhpc3QuIikKPj4+ICsgICAgICAgIH07Cj4+PiAgIAo+Pj4gICAgICAgaWYgbGV0IFNvbWUoZGVs ZXRlKSA9IGRlbGV0ZSB7Cj4+PiAgICAgICAgICAgZm9yIGRlbGV0ZV9wcm9wIGluIGRlbGV0ZSB7 Cj4+PiBAQCAtNDA1LDExICs1MDMsMTEgQEAgcHViIGZuIHVwZGF0ZV9zeW5jX2pvYigKPj4+ICAg ICAgICAgICB9Cj4+PiAgICAgICB9Cj4+PiAgIAo+Pj4gLSAgICBpZiAhY2hlY2tfc3luY19qb2Jf bW9kaWZ5X2FjY2VzcygmdXNlcl9pbmZvLCAmYXV0aF9pZCwgJmRhdGEpIHsKPj4+ICsgICAgaWYg IWNoZWNrX3N5bmNfam9iX21vZGlmeV9hY2Nlc3MoJnVzZXJfaW5mbywgJmF1dGhfaWQsICZkYXRh LCBzeW5jX2RpcmVjdGlvbikgewo+Pj4gICAgICAgICAgIGJhaWwhKCJwZXJtaXNzaW9uIGNoZWNr IGZhaWxlZCIpOwo+Pj4gICAgICAgfQo+Pj4gICAKPj4+IC0gICAgY29uZmlnLnNldF9kYXRhKCZp ZCwgInN5bmMiLCAmZGF0YSk/Owo+Pj4gKyAgICBjb25maWcuc2V0X2RhdGEoJmlkLCBzeW5jX2Rp cmVjdGlvbi5hc19jb25maWdfdHlwZV9zdHIoKSwgJmRhdGEpPzsKPj4+ICAgCj4+PiAgICAgICBz eW5jOjpzYXZlX2NvbmZpZygmY29uZmlnKT87Cj4+PiAgIAo+Pj4gQEAgLTQ1NiwxNyArNTU0LDE2 IEBAIHB1YiBmbiBkZWxldGVfc3luY19qb2IoCj4+PiAgICAgICAgICAgY3JhdGU6OnRvb2xzOjpk ZXRlY3RfbW9kaWZpZWRfY29uZmlndXJhdGlvbl9maWxlKCZkaWdlc3QsICZleHBlY3RlZF9kaWdl c3QpPzsKPj4+ICAgICAgIH0KPj4+ICAgCj4+PiAtICAgIG1hdGNoIGNvbmZpZy5sb29rdXAoInN5 bmMiLCAmaWQpIHsKPj4+IC0gICAgICAgIE9rKGpvYikgPT4gewo+Pj4gLSAgICAgICAgICAgIGlm ICFjaGVja19zeW5jX2pvYl9tb2RpZnlfYWNjZXNzKCZ1c2VyX2luZm8sICZhdXRoX2lkLCAmam9i KSB7Cj4+PiAtICAgICAgICAgICAgICAgIGJhaWwhKCJwZXJtaXNzaW9uIGNoZWNrIGZhaWxlZCIp Owo+Pj4gLSAgICAgICAgICAgIH0KPj4+IC0gICAgICAgICAgICBjb25maWcuc2VjdGlvbnMucmVt b3ZlKCZpZCk7Cj4+PiAtICAgICAgICB9Cj4+PiAtICAgICAgICBFcnIoXykgPT4gewo+Pj4gLSAg ICAgICAgICAgIGh0dHBfYmFpbCEoTk9UX0ZPVU5ELCAiam9iICd7fScgZG9lcyBub3QgZXhpc3Qu IiwgaWQpCj4+PiArICAgIGlmIGxldCBTb21lKChjb25maWdfdHlwZSwgY29uZmlnX3NlY3Rpb24p KSA9IGNvbmZpZy5zZWN0aW9ucy5nZXQoJmlkKSB7Cj4+PiArICAgICAgICBsZXQgc3luY19kaXJl Y3Rpb24gPSBTeW5jRGlyZWN0aW9uOjpmcm9tX2NvbmZpZ190eXBlX3N0cihjb25maWdfdHlwZSk/ Owo+Pj4gKyAgICAgICAgbGV0IGpvYiA9IFN5bmNKb2JDb25maWc6OmRlc2VyaWFsaXplKGNvbmZp Z19zZWN0aW9uKT87Cj4+PiArICAgICAgICBpZiAhY2hlY2tfc3luY19qb2JfbW9kaWZ5X2FjY2Vz cygmdXNlcl9pbmZvLCAmYXV0aF9pZCwgJmpvYiwgc3luY19kaXJlY3Rpb24pIHsKPj4+ICsgICAg ICAgICAgICBiYWlsISgicGVybWlzc2lvbiBjaGVjayBmYWlsZWQiKTsKPj4+ICAgICAgICAgICB9 Cj4+PiAtICAgIH07Cj4+PiArICAgICAgICBjb25maWcuc2VjdGlvbnMucmVtb3ZlKCZpZCk7Cj4+ PiArICAgIH0gZWxzZSB7Cj4+PiArICAgICAgICBodHRwX2JhaWwhKE5PVF9GT1VORCwgImpvYiAn e30nIGRvZXMgbm90IGV4aXN0LiIsIGlkKQo+Pj4gKyAgICB9Cj4+PiAgIAo+Pj4gICAgICAgc3lu Yzo6c2F2ZV9jb25maWcoJmNvbmZpZyk/Owo+Pj4gICAKPj4+IEBAIC01MzYsMzkgKzYzMyw2NyBA QCBhY2w6MTovcmVtb3RlL3JlbW90ZTEvcmVtb3Rlc3RvcmUxOndyaXRlQHBiczpSZW1vdGVTeW5j T3BlcmF0b3IKPj4+ICAgICAgIH07Cj4+PiAgIAo+Pj4gICAgICAgLy8gc2hvdWxkIHdvcmsgd2l0 aG91dCBBQ0xzCj4+PiAtICAgIGFzc2VydCEoY2hlY2tfc3luY19qb2JfcmVhZF9hY2Nlc3MoJnVz ZXJfaW5mbywgcm9vdF9hdXRoX2lkLCAmam9iKSk7Cj4+PiAtICAgIGFzc2VydCEoY2hlY2tfc3lu Y19qb2JfbW9kaWZ5X2FjY2VzcygmdXNlcl9pbmZvLCByb290X2F1dGhfaWQsICZqb2IpKTsKPj4+ ICsgICAgYXNzZXJ0IShjaGVja19zeW5jX2pvYl9yZWFkX2FjY2VzcygKPj4+ICsgICAgICAgICZ1 c2VyX2luZm8sCj4+PiArICAgICAgICByb290X2F1dGhfaWQsCj4+PiArICAgICAgICAmam9iLAo+ Pj4gKyAgICAgICAgU3luY0RpcmVjdGlvbjo6UHVsbCwKPj4+ICsgICAgKSk7Cj4+PiArICAgIGFz c2VydCEoY2hlY2tfc3luY19qb2JfbW9kaWZ5X2FjY2VzcygKPj4+ICsgICAgICAgICZ1c2VyX2lu Zm8sCj4+PiArICAgICAgICByb290X2F1dGhfaWQsCj4+PiArICAgICAgICAmam9iLAo+Pj4gKyAg ICAgICAgU3luY0RpcmVjdGlvbjo6UHVsbCwKPj4+ICsgICAgKSk7Cj4+PiAgIAo+Pj4gICAgICAg Ly8gdXNlciB3aXRob3V0IHBlcm1pc3Npb25zIG11c3QgZmFpbAo+Pj4gICAgICAgYXNzZXJ0ISgh Y2hlY2tfc3luY19qb2JfcmVhZF9hY2Nlc3MoCj4+PiAgICAgICAgICAgJnVzZXJfaW5mbywKPj4+ ICAgICAgICAgICAmbm9fcGVybV9hdXRoX2lkLAo+Pj4gLSAgICAgICAgJmpvYgo+Pj4gKyAgICAg ICAgJmpvYiwKPj4+ICsgICAgICAgIFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+PiAgICAgICApKTsK Pj4+ICAgICAgIGFzc2VydCEoIWNoZWNrX3N5bmNfam9iX21vZGlmeV9hY2Nlc3MoCj4+PiAgICAg ICAgICAgJnVzZXJfaW5mbywKPj4+ICAgICAgICAgICAmbm9fcGVybV9hdXRoX2lkLAo+Pj4gLSAg ICAgICAgJmpvYgo+Pj4gKyAgICAgICAgJmpvYiwKPj4+ICsgICAgICAgIFN5bmNEaXJlY3Rpb246 OlB1bGwsCj4+PiAgICAgICApKTsKPj4+ICAgCj4+PiAgICAgICAvLyByZWFkaW5nIHdpdGhvdXQg cHJvcGVyIHJlYWQgcGVybWlzc2lvbnMgb24gZWl0aGVyIHJlbW90ZSBvciBsb2NhbCBtdXN0IGZh aWwKPj4+IC0gICAgYXNzZXJ0ISghY2hlY2tfc3luY19qb2JfcmVhZF9hY2Nlc3MoJnVzZXJfaW5m bywgJnJlYWRfYXV0aF9pZCwgJmpvYikpOwo+Pj4gKyAgICBhc3NlcnQhKCFjaGVja19zeW5jX2pv Yl9yZWFkX2FjY2VzcygKPj4+ICsgICAgICAgICZ1c2VyX2luZm8sCj4+PiArICAgICAgICAmcmVh ZF9hdXRoX2lkLAo+Pj4gKyAgICAgICAgJmpvYiwKPj4+ICsgICAgICAgIFN5bmNEaXJlY3Rpb246 OlB1bGwsCj4+PiArICAgICkpOwo+Pj4gICAKPj4+ICAgICAgIC8vIHJlYWRpbmcgd2l0aG91dCBw cm9wZXIgcmVhZCBwZXJtaXNzaW9ucyBvbiBsb2NhbCBlbmQgbXVzdCBmYWlsCj4+PiAgICAgICBq b2IucmVtb3RlID0gU29tZSgicmVtb3RlMSIudG9fc3RyaW5nKCkpOwo+Pj4gLSAgICBhc3NlcnQh KCFjaGVja19zeW5jX2pvYl9yZWFkX2FjY2VzcygmdXNlcl9pbmZvLCAmcmVhZF9hdXRoX2lkLCAm am9iKSk7Cj4+PiArICAgIGFzc2VydCEoIWNoZWNrX3N5bmNfam9iX3JlYWRfYWNjZXNzKAo+Pj4g KyAgICAgICAgJnVzZXJfaW5mbywKPj4+ICsgICAgICAgICZyZWFkX2F1dGhfaWQsCj4+PiArICAg ICAgICAmam9iLAo+Pj4gKyAgICAgICAgU3luY0RpcmVjdGlvbjo6UHVsbCwKPj4+ICsgICAgKSk7 Cj4+PiAgIAo+Pj4gICAgICAgLy8gcmVhZGluZyB3aXRob3V0IHByb3BlciByZWFkIHBlcm1pc3Np b25zIG9uIHJlbW90ZSBlbmQgbXVzdCBmYWlsCj4+PiAgICAgICBqb2IucmVtb3RlID0gU29tZSgi cmVtb3RlMCIudG9fc3RyaW5nKCkpOwo+Pj4gICAgICAgam9iLnN0b3JlID0gImxvY2Fsc3RvcmUx Ii50b19zdHJpbmcoKTsKPj4+IC0gICAgYXNzZXJ0ISghY2hlY2tfc3luY19qb2JfcmVhZF9hY2Nl c3MoJnVzZXJfaW5mbywgJnJlYWRfYXV0aF9pZCwgJmpvYikpOwo+Pj4gKyAgICBhc3NlcnQhKCFj aGVja19zeW5jX2pvYl9yZWFkX2FjY2VzcygKPj4+ICsgICAgICAgICZ1c2VyX2luZm8sCj4+PiAr ICAgICAgICAmcmVhZF9hdXRoX2lkLAo+Pj4gKyAgICAgICAgJmpvYiwKPj4+ICsgICAgICAgIFN5 bmNEaXJlY3Rpb246OlB1bGwsCj4+PiArICAgICkpOwo+Pj4gICAKPj4+ICAgICAgIC8vIHdyaXRp bmcgd2l0aG91dCBwcm9wZXIgd3JpdGUgcGVybWlzc2lvbnMgb24gZWl0aGVyIGVuZCBtdXN0IGZh aWwKPj4+ICAgICAgIGpvYi5zdG9yZSA9ICJsb2NhbHN0b3JlMCIudG9fc3RyaW5nKCk7Cj4+PiAg ICAgICBhc3NlcnQhKCFjaGVja19zeW5jX2pvYl9tb2RpZnlfYWNjZXNzKAo+Pj4gICAgICAgICAg ICZ1c2VyX2luZm8sCj4+PiAgICAgICAgICAgJndyaXRlX2F1dGhfaWQsCj4+PiAtICAgICAgICAm am9iCj4+PiArICAgICAgICAmam9iLAo+Pj4gKyAgICAgICAgU3luY0RpcmVjdGlvbjo6UHVsbCwK Pj4+ICAgICAgICkpOwo+Pj4gICAKPj4+ICAgICAgIC8vIHdyaXRpbmcgd2l0aG91dCBwcm9wZXIg d3JpdGUgcGVybWlzc2lvbnMgb24gbG9jYWwgZW5kIG11c3QgZmFpbAo+Pj4gQEAgLTU4MCwzOSAr NzA1LDU0IEBAIGFjbDoxOi9yZW1vdGUvcmVtb3RlMS9yZW1vdGVzdG9yZTE6d3JpdGVAcGJzOlJl bW90ZVN5bmNPcGVyYXRvcgo+Pj4gICAgICAgYXNzZXJ0ISghY2hlY2tfc3luY19qb2JfbW9kaWZ5 X2FjY2VzcygKPj4+ICAgICAgICAgICAmdXNlcl9pbmZvLAo+Pj4gICAgICAgICAgICZ3cml0ZV9h dXRoX2lkLAo+Pj4gLSAgICAgICAgJmpvYgo+Pj4gKyAgICAgICAgJmpvYiwKPj4+ICsgICAgICAg IFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+PiAgICAgICApKTsKPj4+ICAgCj4+PiAgICAgICAvLyBy ZXNldCByZW1vdGUgdG8gb25lIHdoZXJlIHVzZXJzIGhhdmUgYWNjZXNzCj4+PiAgICAgICBqb2Iu cmVtb3RlID0gU29tZSgicmVtb3RlMSIudG9fc3RyaW5nKCkpOwo+Pj4gICAKPj4+ICAgICAgIC8v IHVzZXIgd2l0aCByZWFkIHBlcm1pc3Npb24gY2FuIG9ubHkgcmVhZCwgYnV0IG5vdCBtb2RpZnkv cnVuCj4+PiAtICAgIGFzc2VydCEoY2hlY2tfc3luY19qb2JfcmVhZF9hY2Nlc3MoJnVzZXJfaW5m bywgJnJlYWRfYXV0aF9pZCwgJmpvYikpOwo+Pj4gKyAgICBhc3NlcnQhKGNoZWNrX3N5bmNfam9i X3JlYWRfYWNjZXNzKAo+Pj4gKyAgICAgICAgJnVzZXJfaW5mbywKPj4+ICsgICAgICAgICZyZWFk X2F1dGhfaWQsCj4+PiArICAgICAgICAmam9iLAo+Pj4gKyAgICAgICAgU3luY0RpcmVjdGlvbjo6 UHVsbCwKPj4+ICsgICAgKSk7Cj4+PiAgICAgICBqb2Iub3duZXIgPSBTb21lKHJlYWRfYXV0aF9p ZC5jbG9uZSgpKTsKPj4+ICAgICAgIGFzc2VydCEoIWNoZWNrX3N5bmNfam9iX21vZGlmeV9hY2Nl c3MoCj4+PiAgICAgICAgICAgJnVzZXJfaW5mbywKPj4+ICAgICAgICAgICAmcmVhZF9hdXRoX2lk LAo+Pj4gLSAgICAgICAgJmpvYgo+Pj4gKyAgICAgICAgJmpvYiwKPj4+ICsgICAgICAgIFN5bmNE aXJlY3Rpb246OlB1bGwsCj4+PiAgICAgICApKTsKPj4+ICAgICAgIGpvYi5vd25lciA9IE5vbmU7 Cj4+PiAgICAgICBhc3NlcnQhKCFjaGVja19zeW5jX2pvYl9tb2RpZnlfYWNjZXNzKAo+Pj4gICAg ICAgICAgICZ1c2VyX2luZm8sCj4+PiAgICAgICAgICAgJnJlYWRfYXV0aF9pZCwKPj4+IC0gICAg ICAgICZqb2IKPj4+ICsgICAgICAgICZqb2IsCj4+PiArICAgICAgICBTeW5jRGlyZWN0aW9uOjpQ dWxsLAo+Pj4gICAgICAgKSk7Cj4+PiAgICAgICBqb2Iub3duZXIgPSBTb21lKHdyaXRlX2F1dGhf aWQuY2xvbmUoKSk7Cj4+PiAgICAgICBhc3NlcnQhKCFjaGVja19zeW5jX2pvYl9tb2RpZnlfYWNj ZXNzKAo+Pj4gICAgICAgICAgICZ1c2VyX2luZm8sCj4+PiAgICAgICAgICAgJnJlYWRfYXV0aF9p ZCwKPj4+IC0gICAgICAgICZqb2IKPj4+ICsgICAgICAgICZqb2IsCj4+PiArICAgICAgICBTeW5j RGlyZWN0aW9uOjpQdWxsLAo+Pj4gICAgICAgKSk7Cj4+PiAgIAo+Pj4gICAgICAgLy8gdXNlciB3 aXRoIHNpbXBsZSB3cml0ZSBwZXJtaXNzaW9uIGNhbiBtb2RpZnkvcnVuCj4+PiAtICAgIGFzc2Vy dCEoY2hlY2tfc3luY19qb2JfcmVhZF9hY2Nlc3MoJnVzZXJfaW5mbywgJndyaXRlX2F1dGhfaWQs ICZqb2IpKTsKPj4+ICsgICAgYXNzZXJ0IShjaGVja19zeW5jX2pvYl9yZWFkX2FjY2VzcygKPj4+ ICsgICAgICAgICZ1c2VyX2luZm8sCj4+PiArICAgICAgICAmd3JpdGVfYXV0aF9pZCwKPj4+ICsg ICAgICAgICZqb2IsCj4+PiArICAgICAgICBTeW5jRGlyZWN0aW9uOjpQdWxsLAo+Pj4gKyAgICAp KTsKPj4+ICAgICAgIGFzc2VydCEoY2hlY2tfc3luY19qb2JfbW9kaWZ5X2FjY2VzcygKPj4+ICAg ICAgICAgICAmdXNlcl9pbmZvLAo+Pj4gICAgICAgICAgICZ3cml0ZV9hdXRoX2lkLAo+Pj4gLSAg ICAgICAgJmpvYgo+Pj4gKyAgICAgICAgJmpvYiwKPj4+ICsgICAgICAgIFN5bmNEaXJlY3Rpb246 OlB1bGwsCj4+PiAgICAgICApKTsKPj4+ICAgCj4+PiAgICAgICAvLyBidXQgY2FuJ3QgbW9kaWZ5 L3J1biB3aXRoIGRlbGV0aW9uCj4+PiBAQCAtNjIwLDcgKzc2MCw4IEBAIGFjbDoxOi9yZW1vdGUv cmVtb3RlMS9yZW1vdGVzdG9yZTE6d3JpdGVAcGJzOlJlbW90ZVN5bmNPcGVyYXRvcgo+Pj4gICAg ICAgYXNzZXJ0ISghY2hlY2tfc3luY19qb2JfbW9kaWZ5X2FjY2VzcygKPj4+ICAgICAgICAgICAm dXNlcl9pbmZvLAo+Pj4gICAgICAgICAgICZ3cml0ZV9hdXRoX2lkLAo+Pj4gLSAgICAgICAgJmpv Ygo+Pj4gKyAgICAgICAgJmpvYiwKPj4+ICsgICAgICAgIFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+ PiAgICAgICApKTsKPj4+ICAgCj4+PiAgICAgICAvLyB1bmxlc3MgdGhleSBoYXZlIERhdGFzdG9y ZS5QcnVuZSBhcyB3ZWxsCj4+PiBAQCAtNjI4LDcgKzc2OSw4IEBAIGFjbDoxOi9yZW1vdGUvcmVt b3RlMS9yZW1vdGVzdG9yZTE6d3JpdGVAcGJzOlJlbW90ZVN5bmNPcGVyYXRvcgo+Pj4gICAgICAg YXNzZXJ0IShjaGVja19zeW5jX2pvYl9tb2RpZnlfYWNjZXNzKAo+Pj4gICAgICAgICAgICZ1c2Vy X2luZm8sCj4+PiAgICAgICAgICAgJndyaXRlX2F1dGhfaWQsCj4+PiAtICAgICAgICAmam9iCj4+ PiArICAgICAgICAmam9iLAo+Pj4gKyAgICAgICAgU3luY0RpcmVjdGlvbjo6UHVsbCwKPj4+ICAg ICAgICkpOwo+Pj4gICAKPj4+ICAgICAgIC8vIGNoYW5naW5nIG93bmVyIGlzIG5vdCBwb3NzaWJs ZQo+Pj4gQEAgLTYzNiw3ICs3NzgsOCBAQCBhY2w6MTovcmVtb3RlL3JlbW90ZTEvcmVtb3Rlc3Rv cmUxOndyaXRlQHBiczpSZW1vdGVTeW5jT3BlcmF0b3IKPj4+ICAgICAgIGFzc2VydCEoIWNoZWNr X3N5bmNfam9iX21vZGlmeV9hY2Nlc3MoCj4+PiAgICAgICAgICAgJnVzZXJfaW5mbywKPj4+ICAg ICAgICAgICAmd3JpdGVfYXV0aF9pZCwKPj4+IC0gICAgICAgICZqb2IKPj4+ICsgICAgICAgICZq b2IsCj4+PiArICAgICAgICBTeW5jRGlyZWN0aW9uOjpQdWxsLAo+Pj4gICAgICAgKSk7Cj4+PiAg IAo+Pj4gICAgICAgLy8gYWxzbyBub3QgdG8gdGhlIGRlZmF1bHQgJ3Jvb3RAcGFtJwo+Pj4gQEAg LTY0NCw3ICs3ODcsOCBAQCBhY2w6MTovcmVtb3RlL3JlbW90ZTEvcmVtb3Rlc3RvcmUxOndyaXRl QHBiczpSZW1vdGVTeW5jT3BlcmF0b3IKPj4+ICAgICAgIGFzc2VydCEoIWNoZWNrX3N5bmNfam9i X21vZGlmeV9hY2Nlc3MoCj4+PiAgICAgICAgICAgJnVzZXJfaW5mbywKPj4+ICAgICAgICAgICAm d3JpdGVfYXV0aF9pZCwKPj4+IC0gICAgICAgICZqb2IKPj4+ICsgICAgICAgICZqb2IsCj4+PiAr ICAgICAgICBTeW5jRGlyZWN0aW9uOjpQdWxsLAo+Pj4gICAgICAgKSk7Cj4+PiAgIAo+Pj4gICAg ICAgLy8gdW5sZXNzIHRoZXkgaGF2ZSBEYXRhc3RvcmUuTW9kaWZ5IGFzIHdlbGwKPj4+IEBAIC02 NTMsMTMgKzc5NywxNSBAQCBhY2w6MTovcmVtb3RlL3JlbW90ZTEvcmVtb3Rlc3RvcmUxOndyaXRl QHBiczpSZW1vdGVTeW5jT3BlcmF0b3IKPj4+ICAgICAgIGFzc2VydCEoY2hlY2tfc3luY19qb2Jf bW9kaWZ5X2FjY2VzcygKPj4+ICAgICAgICAgICAmdXNlcl9pbmZvLAo+Pj4gICAgICAgICAgICZ3 cml0ZV9hdXRoX2lkLAo+Pj4gLSAgICAgICAgJmpvYgo+Pj4gKyAgICAgICAgJmpvYiwKPj4+ICsg ICAgICAgIFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+PiAgICAgICApKTsKPj4+ICAgICAgIGpvYi5v d25lciA9IE5vbmU7Cj4+PiAgICAgICBhc3NlcnQhKGNoZWNrX3N5bmNfam9iX21vZGlmeV9hY2Nl c3MoCj4+PiAgICAgICAgICAgJnVzZXJfaW5mbywKPj4+ICAgICAgICAgICAmd3JpdGVfYXV0aF9p ZCwKPj4+IC0gICAgICAgICZqb2IKPj4+ICsgICAgICAgICZqb2IsCj4+PiArICAgICAgICBTeW5j RGlyZWN0aW9uOjpQdWxsLAo+Pj4gICAgICAgKSk7Cj4+PiAgIAo+Pj4gICAgICAgT2soKCkpCj4+ PiBkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wcm94bW94LWJhY2t1cC1wcm94eS5ycyBiL3NyYy9iaW4v cHJveG1veC1iYWNrdXAtcHJveHkucnMKPj4+IGluZGV4IDZmMTlhM2ZiZC4uNzAyODM1MTBkIDEw MDY0NAo+Pj4gLS0tIGEvc3JjL2Jpbi9wcm94bW94LWJhY2t1cC1wcm94eS5ycwo+Pj4gKysrIGIv c3JjL2Jpbi9wcm94bW94LWJhY2t1cC1wcm94eS5ycwo+Pj4gQEAgLTU4OSw3ICs1ODksMTQgQEAg YXN5bmMgZm4gc2NoZWR1bGVfZGF0YXN0b3JlX3N5bmNfam9icygpIHsKPj4+ICAgICAgICAgICBP aygoY29uZmlnLCBfZGlnZXN0KSkgPT4gY29uZmlnLAo+Pj4gICAgICAgfTsKPj4+ICAgCj4+PiAt ICAgIGZvciAoam9iX2lkLCAoXywgam9iX2NvbmZpZykpIGluIGNvbmZpZy5zZWN0aW9ucyB7Cj4+ PiArICAgIGZvciAoam9iX2lkLCAoam9iX3R5cGUsIGpvYl9jb25maWcpKSBpbiBjb25maWcuc2Vj dGlvbnMgewo+Pj4gKyAgICAgICAgbGV0IHN5bmNfZGlyZWN0aW9uID0gbWF0Y2ggU3luY0RpcmVj dGlvbjo6ZnJvbV9jb25maWdfdHlwZV9zdHIoJmpvYl90eXBlKSB7Cj4+PiArICAgICAgICAgICAg T2soZGlyZWN0aW9uKSA9PiBkaXJlY3Rpb24sCj4+PiArICAgICAgICAgICAgRXJyKGVycikgPT4g ewo+Pj4gKyAgICAgICAgICAgICAgICBlcHJpbnRsbiEoInVuZXhwZWN0ZWQgY29uZmlnIHR5cGUg aW4gc3luYyBqb2IgY29uZmlnIC0ge2Vycn0iKTsKPj4+ICsgICAgICAgICAgICAgICAgY29udGlu dWU7Cj4+PiArICAgICAgICAgICAgfQo+Pj4gKyAgICAgICAgfTsKPj4+ICAgICAgICAgICBsZXQg am9iX2NvbmZpZzogU3luY0pvYkNvbmZpZyA9IG1hdGNoIHNlcmRlX2pzb246OmZyb21fdmFsdWUo am9iX2NvbmZpZykgewo+Pj4gICAgICAgICAgICAgICBPayhjKSA9PiBjLAo+Pj4gICAgICAgICAg ICAgICBFcnIoZXJyKSA9PiB7Cj4+PiBAQCAtNjE2LDcgKzYyMyw3IEBAIGFzeW5jIGZuIHNjaGVk dWxlX2RhdGFzdG9yZV9zeW5jX2pvYnMoKSB7Cj4+PiAgICAgICAgICAgICAgICAgICBqb2JfY29u ZmlnLAo+Pj4gICAgICAgICAgICAgICAgICAgJmF1dGhfaWQsCj4+PiAgICAgICAgICAgICAgICAg ICBTb21lKGV2ZW50X3N0ciksCj4+PiAtICAgICAgICAgICAgICAgIFN5bmNEaXJlY3Rpb246OlB1 bGwsCj4+PiArICAgICAgICAgICAgICAgIHN5bmNfZGlyZWN0aW9uLAo+Pj4gICAgICAgICAgICAg ICAgICAgZmFsc2UsCj4+PiAgICAgICAgICAgICAgICkgewo+Pj4gICAgICAgICAgICAgICAgICAg ZXByaW50bG4hKCJ1bmFibGUgdG8gc3RhcnQgZGF0YXN0b3JlIHN5bmMgam9iIHtqb2JfaWR9IC0g e2Vycn0iKTsKPj4+IC0tIAo+Pj4gMi4zOS41Cj4+Pgo+Pj4KPj4+Cj4+PiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4gcGJzLWRldmVsIG1haWxpbmcg bGlzdAo+Pj4gcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCj4+PiBodHRwczovL2xpc3RzLnBy b3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMtZGV2ZWwKPj4+Cj4+Pgo+IAo+ IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnBicy1k ZXZlbCBtYWlsaW5nIGxpc3QKcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlz dHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo=