From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4845 invoked by alias); 1 Dec 2017 23:18:30 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 4835 invoked by uid 89); 1 Dec 2017 23:18:29 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-14.7 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_ADVERT2,KAM_ASCII_DIVIDERS,KB_WAM_FROM_NAME_SINGLEWORD,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=determination, sk:EXPRESS, sk:check_d, parg X-HELO: mail-wm0-f48.google.com Received: from mail-wm0-f48.google.com (HELO mail-wm0-f48.google.com) (74.125.82.48) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 01 Dec 2017 23:18:25 +0000 Received: by mail-wm0-f48.google.com with SMTP id f9so5904057wmh.0 for ; Fri, 01 Dec 2017 15:18:24 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=NQRFNE9SbCxY8WbpeGdCjhUsKecgmMbSWjSvZuP1SG8=; b=BbcP9psGGnX8jbLm3/n06zVy6xh9C2LcGMKwDSH+n9jfkug6j6MEzvCyMzoqMm5pOa Hz+GfRISqa32Qxomm3rcLw9dsELTh1DSrOiZYPvBFsn4aIAohjnurofNW2l+inK63w16 3odFxLbyOpBOPcN8xlev9ItfOISJpnw0r0cZM9NJefUk/rkRinPfnnU3+340p/fnk20B 27Hr5traSYpMwpdLzfngf78vxrfIQYiLRs+AxYlinHdejOJsC9vi04uvs6hqEaJaMu/+ gh2xcoBtJt7JNcxPIfvZGTUrKxK7G3gQNN49fyPhI/4U7FpGBiZytd7voiejkk6ukrx/ ewLQ== X-Gm-Message-State: AJaThX5MdG/TiuT55aNU23W5xkZa8OHh6kv0DsBd1SF2mGhx2pbHPTbo I3k4RhlmRS5eUEBc33/Y2iEeIEDsAKGtsiy9h5aJ/exz X-Google-Smtp-Source: AGs4zMa+9vmMXHakKWBlKQuQuVYWZ2t7OOg9GbGpPd0vlpuwQt4dgUkMx3ldX7w354qL/KdOC5xya75VTjqy2XYX9p0= X-Received: by 10.80.152.66 with SMTP id h2mr19832061edb.192.1512170302584; Fri, 01 Dec 2017 15:18:22 -0800 (PST) MIME-Version: 1.0 Received: by 10.80.179.221 with HTTP; Fri, 1 Dec 2017 15:18:21 -0800 (PST) From: Ian Lance Taylor Date: Fri, 01 Dec 2017 23:18:00 -0000 Message-ID: Subject: Go patch committed: Add size threshold for nil checks To: gcc-patches , "gofrontend-dev@googlegroups.com" Content-Type: multipart/mixed; boundary="f403045c27ceba0cc6055f4f95f4" X-SW-Source: 2017-12/txt/msg00075.txt.bz2 --f403045c27ceba0cc6055f4f95f4 Content-Type: text/plain; charset="UTF-8" Content-length: 872 This patch to the Go frontend by Than McIntosh adds a new control variable to the Gogo class that stores the size threshold for nil checks. This value can be used to control the policy for deciding when a given deference operation needs a check and when it does not. A size threshold of -1 means that every potentially faulting dereference needs an explicit check (and branch to error call). A size threshold of K (where K > 0) means that if the size of the object being dereferenced is >= K, then we need a check. Currently for gccgo we keep the same policy: do a nil check for an offset more than 4096. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline. Ian 2017-12-01 Than McIntosh * go-c.h (go_create_gogo_args): Add nil_check_size_threshold field. * go-lang.c (go_langhook_init): Set nil_check_size_threshold. --f403045c27ceba0cc6055f4f95f4 Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jaoiurki0 Content-length: 42656 SW5kZXg6IGdjYy9nby9nby1jLmgKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gZ2NjL2dvL2dvLWMuaAkocmV2aXNpb24gMjU0MDkwKQorKysgZ2NjL2dv L2dvLWMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBzdHJ1 Y3QgZ29fY3JlYXRlX2dvZ29fYXJncwogICBib29sIGNoZWNrX2RpdmlkZV9v dmVyZmxvdzsKICAgYm9vbCBjb21waWxpbmdfcnVudGltZTsKICAgaW50IGRl YnVnX2VzY2FwZV9sZXZlbDsKKyAgaW50NjRfdCBuaWxfY2hlY2tfc2l6ZV90 aHJlc2hvbGQ7CiB9OwogCiBleHRlcm4gdm9pZCBnb19jcmVhdGVfZ29nbyAo Y29uc3Qgc3RydWN0IGdvX2NyZWF0ZV9nb2dvX2FyZ3MqKTsKSW5kZXg6IGdj Yy9nby9nby1sYW5nLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2Nj L2dvL2dvLWxhbmcuYwkocmV2aXNpb24gMjU0MDkwKQorKysgZ2NjL2dvL2dv LWxhbmcuYwkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw3IEBAIGdv X2xhbmdob29rX2luaXQgKHZvaWQpCiAgIGFyZ3MuY2hlY2tfZGl2aWRlX292 ZXJmbG93ID0gZ29fY2hlY2tfZGl2aWRlX292ZXJmbG93OwogICBhcmdzLmNv bXBpbGluZ19ydW50aW1lID0gZ29fY29tcGlsaW5nX3J1bnRpbWU7CiAgIGFy Z3MuZGVidWdfZXNjYXBlX2xldmVsID0gZ29fZGVidWdfZXNjYXBlX2xldmVs OworICBhcmdzLm5pbF9jaGVja19zaXplX3RocmVzaG9sZCA9IDQwOTY7CiAg IGFyZ3MubGluZW1hcCA9IGdvX2dldF9saW5lbWFwKCk7CiAgIGFyZ3MuYmFj a2VuZCA9IGdvX2dldF9iYWNrZW5kKCk7CiAgIGdvX2NyZWF0ZV9nb2dvICgm YXJncyk7CkluZGV4OiBnY2MvZ28vZ29mcm9udGVuZC9NRVJHRQo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBnY2MvZ28vZ29mcm9udGVuZC9NRVJHRQko cmV2aXNpb24gMjU1MjY2KQorKysgZ2NjL2dvL2dvZnJvbnRlbmQvTUVSR0UJ KHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0wZDZiM2FiY2JmZTA0 OTQ5ZGI5NDcwODE2NTFhNTAzY2ViMTJmZTZlCis4Y2Q0MmEzZTllMGU2MThi YjA5ZTY3YmU3M2Y3ZDJmMjQ3N2EwZmFhCiAKIFRoZSBmaXJzdCBsaW5lIG9m IHRoaXMgZmlsZSBob2xkcyB0aGUgZ2l0IHJldmlzaW9uIG51bWJlciBvZiB0 aGUgbGFzdAogbWVyZ2UgZG9uZSBmcm9tIHRoZSBnb2Zyb250ZW5kIHJlcG9z aXRvcnkuCkluZGV4OiBnY2MvZ28vZ29mcm9udGVuZC9leHByZXNzaW9ucy5j Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvZ28vZ29mcm9udGVu ZC9leHByZXNzaW9ucy5jYwkocmV2aXNpb24gMjU0NzQ4KQorKysgZ2NjL2dv L2dvZnJvbnRlbmQvZXhwcmVzc2lvbnMuY2MJKHdvcmtpbmcgY29weSkKQEAg LTI5MCw3ICsyOTAsNyBAQCBFeHByZXNzaW9uOjpnZXRfaW50ZXJmYWNlX3R5 cGVfZGVzY3JpcHRvCiAgICAgICBFeHByZXNzaW9uOjptYWtlX2ludGVyZmFj ZV9pbmZvKHJocywgSU5URVJGQUNFX0lORk9fTUVUSE9EUywgbG9jYXRpb24p OwogCiAgIEV4cHJlc3Npb24qIGRlc2NyaXB0b3IgPQotICAgICAgRXhwcmVz c2lvbjo6bWFrZV91bmFyeShPUEVSQVRPUl9NVUxULCBtdGFibGUsIGxvY2F0 aW9uKTsKKyAgICAgIEV4cHJlc3Npb246Om1ha2VfZGVyZWZlcmVuY2UobXRh YmxlLCBOSUxfQ0hFQ0tfTk9UX05FRURFRCwgbG9jYXRpb24pOwogICBkZXNj cmlwdG9yID0gRXhwcmVzc2lvbjo6bWFrZV9maWVsZF9yZWZlcmVuY2UoZGVz Y3JpcHRvciwgMCwgbG9jYXRpb24pOwogICBFeHByZXNzaW9uKiBuaWwgPSBF eHByZXNzaW9uOjptYWtlX25pbChsb2NhdGlvbik7CiAKQEAgLTM5Myw3ICsz OTMsOCBAQCBFeHByZXNzaW9uOjpjb252ZXJ0X2ludGVyZmFjZV90b190eXBl KFR5CiAgICAgewogICAgICAgb2JqID0gRXhwcmVzc2lvbjo6bWFrZV91bnNh ZmVfY2FzdChUeXBlOjptYWtlX3BvaW50ZXJfdHlwZShsaHNfdHlwZSksIG9i aiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bG9jYXRpb24pOwotICAgICAgb2JqID0gRXhwcmVzc2lvbjo6bWFrZV91bmFy eShPUEVSQVRPUl9NVUxULCBvYmosIGxvY2F0aW9uKTsKKyAgICAgIG9iaiA9 IEV4cHJlc3Npb246Om1ha2VfZGVyZWZlcmVuY2Uob2JqLCBOSUxfQ0hFQ0tf Tk9UX05FRURFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbG9jYXRpb24pOwogICAgIH0KICAgcmV0dXJuIEV4cHJlc3Np b246Om1ha2VfY29tcG91bmQoY2hlY2tfaWZhY2UsIG9iaiwgbG9jYXRpb24p OwogfQpAQCAtMzg0MiwyNCArMzg0MywyMCBAQCBVbmFyeV9leHByZXNzaW9u Ojpkb19mbGF0dGVuKEdvZ28qIGdvZ28sCiAgICAgICAmJiAhdGhpcy0+ZXhw cl8tPmlzX3ZhcmlhYmxlKCkpCiAgICAgewogICAgICAgZ29fYXNzZXJ0KHRo aXMtPmV4cHJfLT50eXBlKCktPnBvaW50c190bygpICE9IE5VTEwpOwotICAg ICAgVHlwZSogcHR5cGUgPSB0aGlzLT5leHByXy0+dHlwZSgpLT5wb2ludHNf dG8oKTsKLSAgICAgIGlmICghcHR5cGUtPmlzX3ZvaWRfdHlwZSgpKQorICAg ICAgc3dpdGNoICh0aGlzLT5yZXF1aXJlc19uaWxfY2hlY2soZ29nbykpCiAg ICAgICAgIHsKLSAgICAgICAgICBpbnQ2NF90IHM7Ci0gICAgICAgICAgYm9v bCBvayA9IHB0eXBlLT5iYWNrZW5kX3R5cGVfc2l6ZShnb2dvLCAmcyk7Ci0g ICAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICBjYXNlIE5JTF9DSEVDS19F UlJPUl9FTkNPVU5URVJFRDoKICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgZ29fYXNzZXJ0KHNhd19lcnJvcnMoKSk7CiAgICAgICAgICAgICAgIHJl dHVybiBFeHByZXNzaW9uOjptYWtlX2Vycm9yKHRoaXMtPmxvY2F0aW9uKCkp OwogICAgICAgICAgICAgfQotICAgICAgICAgIGlmIChzID49IDQwOTYgfHwg dGhpcy0+aXNzdWVfbmlsX2NoZWNrXykKLSAgICAgICAgICAgIHsKLSAgICAg ICAgICAgICAgVGVtcG9yYXJ5X3N0YXRlbWVudCogdGVtcCA9Ci0gICAgICAg ICAgICAgICAgICBTdGF0ZW1lbnQ6Om1ha2VfdGVtcG9yYXJ5KE5VTEwsIHRo aXMtPmV4cHJfLCBsb2NhdGlvbik7Ci0gICAgICAgICAgICAgIGluc2VydGVy LT5pbnNlcnQodGVtcCk7Ci0gICAgICAgICAgICAgIHRoaXMtPmV4cHJfID0K LSAgICAgICAgICAgICAgICAgIEV4cHJlc3Npb246Om1ha2VfdGVtcG9yYXJ5 X3JlZmVyZW5jZSh0ZW1wLCBsb2NhdGlvbik7Ci0gICAgICAgICAgICB9Cisg ICAgICAgICAgY2FzZSBOSUxfQ0hFQ0tfTk9UX05FRURFRDoKKyAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgTklMX0NIRUNLX05FRURFRDoK KyAgICAgICAgICAgIHRoaXMtPmNyZWF0ZV90ZW1wXyA9IHRydWU7CisgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIE5JTF9DSEVDS19ERUZB VUxUOgorICAgICAgICAgICAgZ29fdW5yZWFjaGFibGUoKTsKICAgICAgICAg fQogICAgIH0KIApAQCAtMzk2MCw2ICszOTU3LDQxIEBAIFVuYXJ5X2V4cHJl c3Npb246OmJhc2VfaXNfc3RhdGljX2luaXRpYWwKICAgcmV0dXJuIGZhbHNl OwogfQogCisvLyBSZXR1cm4gd2hldGhlciB0aGlzIGRlcmVmZXJlbmNlIGV4 cHJlc3Npb24gcmVxdWlyZXMgYW4gZXhwbGljaXQgbmlsCisvLyBjaGVjay4g SWYgd2UgYXJlIGRlcmVmZXJlbmNpbmcgdGhlIHBvaW50ZXIgdG8gYSBsYXJn ZSBzdHJ1Y3QKKy8vIChncmVhdGVyIHRoYW4gdGhlIHNwZWNpZmllZCBzaXpl IHRocmVzaG9sZCksIHdlIG5lZWQgdG8gY2hlY2sgZm9yCisvLyBuaWwuIFdl IGRvbid0IGJvdGhlciB0byBjaGVjayBmb3Igc21hbGwgc3RydWN0cyBiZWNh dXNlIHdlIGV4cGVjdAorLy8gdGhlIHN5c3RlbSB0byBjcmFzaCBvbiBhIG5p bCBwb2ludGVyIGRlcmVmZXJlbmNlLiBIb3dldmVyLCBpZiB3ZQorLy8ga25v dyB0aGUgYWRkcmVzcyBvZiB0aGlzIGV4cHJlc3Npb24gaXMgYmVpbmcgdGFr ZW4sIHdlIG11c3QgYWx3YXlzCisvLyBjaGVjayBmb3IgbmlsLgorVW5hcnlf ZXhwcmVzc2lvbjo6TmlsX2NoZWNrX2NsYXNzaWZpY2F0aW9uCitVbmFyeV9l eHByZXNzaW9uOjpyZXF1aXJlc19uaWxfY2hlY2soR29nbyogZ29nbykgCit7 CisgIGdvX2Fzc2VydCh0aGlzLT5vcF8gPT0gT1BFUkFUT1JfTVVMVCk7Cisg IGdvX2Fzc2VydCh0aGlzLT5leHByXy0+dHlwZSgpLT5wb2ludHNfdG8oKSAh PSBOVUxMKTsKKworICBpZiAodGhpcy0+aXNzdWVfbmlsX2NoZWNrXyA9PSBO SUxfQ0hFQ0tfTkVFREVEKQorICAgIHJldHVybiBOSUxfQ0hFQ0tfTkVFREVE OworICBlbHNlIGlmICh0aGlzLT5pc3N1ZV9uaWxfY2hlY2tfID09IE5JTF9D SEVDS19OT1RfTkVFREVEKQorICAgIHJldHVybiBOSUxfQ0hFQ0tfTk9UX05F RURFRDsKKworICBUeXBlKiBwdHlwZSA9IHRoaXMtPmV4cHJfLT50eXBlKCkt PnBvaW50c190bygpOworICBpbnQ2NF90IHR5cGVfc2l6ZSA9IC0xOworICBp ZiAoIXB0eXBlLT5pc192b2lkX3R5cGUoKSkKKyAgICB7CisgICAgICBib29s IG9rID0gcHR5cGUtPmJhY2tlbmRfdHlwZV9zaXplKGdvZ28sICZ0eXBlX3Np emUpOworICAgICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIE5JTF9DSEVD S19FUlJPUl9FTkNPVU5URVJFRDsKKyAgICB9CisKKyAgaW50NjRfdCBzaXpl X2N1dG9mZiA9IGdvZ28tPm5pbF9jaGVja19zaXplX3RocmVzaG9sZCgpOwor ICBpZiAoc2l6ZV9jdXRvZmYgPT0gLTEgfHwgKHR5cGVfc2l6ZSAhPSAtMSAm JiB0eXBlX3NpemUgPj0gc2l6ZV9jdXRvZmYpKQorICAgIHRoaXMtPmlzc3Vl X25pbF9jaGVja18gPSBOSUxfQ0hFQ0tfTkVFREVEOworICBlbHNlCisgICAg dGhpcy0+aXNzdWVfbmlsX2NoZWNrXyA9IE5JTF9DSEVDS19OT1RfTkVFREVE OworICByZXR1cm4gdGhpcy0+aXNzdWVfbmlsX2NoZWNrXzsKK30KKwogLy8g QXBwbHkgdW5hcnkgb3Bjb2RlIE9QIHRvIFVOQywgc2V0dGluZyBOQy4gIFJl dHVybiB0cnVlIGlmIHRoaXMKIC8vIGNvdWxkIGJlIGRvbmUsIGZhbHNlIGlm IG5vdC4gIE9uIG92ZXJmbG93LCBpc3N1ZXMgYW4gZXJyb3IgYW5kIHNldHMK IC8vICpJU1NVRURfRVJST1IuCkBAIC00NDA4LDQzICs0NDQwLDQyIEBAIFVu YXJ5X2V4cHJlc3Npb246OmRvX2dldF9iYWNrZW5kKFRyYW5zbGEKICAgICAg IHsKICAgICAgICAgZ29fYXNzZXJ0KHRoaXMtPmV4cHJfLT50eXBlKCktPnBv aW50c190bygpICE9IE5VTEwpOwogCi0JLy8gSWYgd2UgYXJlIGRlcmVmZXJl bmNpbmcgdGhlIHBvaW50ZXIgdG8gYSBsYXJnZSBzdHJ1Y3QsIHdlCi0JLy8g bmVlZCB0byBjaGVjayBmb3IgbmlsLiAgV2UgZG9uJ3QgYm90aGVyIHRvIGNo ZWNrIGZvciBzbWFsbAotCS8vIHN0cnVjdHMgYmVjYXVzZSB3ZSBleHBlY3Qg dGhlIHN5c3RlbSB0byBjcmFzaCBvbiBhIG5pbAotCS8vIHBvaW50ZXIgZGVy ZWZlcmVuY2UuCSBIb3dldmVyLCBpZiB3ZSBrbm93IHRoZSBhZGRyZXNzIG9m IHRoaXMKLQkvLyBleHByZXNzaW9uIGlzIGJlaW5nIHRha2VuLCB3ZSBtdXN0 IGFsd2F5cyBjaGVjayBmb3IgbmlsLgotCisgICAgICAgIGJvb2wga25vd25f dmFsaWQgPSBmYWxzZTsKICAgICAgICAgVHlwZSogcHR5cGUgPSB0aGlzLT5l eHByXy0+dHlwZSgpLT5wb2ludHNfdG8oKTsKICAgICAgICAgQnR5cGUqIHBi dHlwZSA9IHB0eXBlLT5nZXRfYmFja2VuZChnb2dvKTsKLSAgICAgICAgaWYg KCFwdHlwZS0+aXNfdm9pZF90eXBlKCkpCi0JICB7Ci0gICAgICAgICAgICBp bnQ2NF90IHM7Ci0gICAgICAgICAgICBib29sIG9rID0gcHR5cGUtPmJhY2tl bmRfdHlwZV9zaXplKGdvZ28sICZzKTsKLSAgICAgICAgICAgIGlmICghb2sp CisgICAgICAgIHN3aXRjaCAodGhpcy0+cmVxdWlyZXNfbmlsX2NoZWNrKGdv Z28pKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgTklMX0NIRUNL X05PVF9ORUVERUQ6CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg ICAgY2FzZSBOSUxfQ0hFQ0tfRVJST1JfRU5DT1VOVEVSRUQ6CiAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICBnb19hc3NlcnQoc2F3X2Vycm9y cygpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZ29nby0+YmFja2VuZCgp LT5lcnJvcl9leHByZXNzaW9uKCk7CiAgICAgICAgICAgICAgIH0KLQkgICAg aWYgKHMgPj0gNDA5NiB8fCB0aGlzLT5pc3N1ZV9uaWxfY2hlY2tfKQotCSAg ICAgIHsKKyAgICAgICAgICAgIGNhc2UgTklMX0NIRUNLX05FRURFRDoKKyAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGdvX2Fzc2VydCh0aGlz LT5leHByXy0+aXNfdmFyaWFibGUoKSk7CiAgICAgICAgICAgICAgICAgQmV4 cHJlc3Npb24qIG5pbCA9Ci0JCSAgRXhwcmVzc2lvbjo6bWFrZV9uaWwobG9j KS0+Z2V0X2JhY2tlbmQoY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAg IEV4cHJlc3Npb246Om1ha2VfbmlsKGxvYyktPmdldF9iYWNrZW5kKGNvbnRl eHQpOwogICAgICAgICAgICAgICAgIEJleHByZXNzaW9uKiBjb21wYXJlID0K ICAgICAgICAgICAgICAgICAgICAgZ29nby0+YmFja2VuZCgpLT5iaW5hcnlf ZXhwcmVzc2lvbihPUEVSQVRPUl9FUUVRLCBiZXhwciwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu aWwsIGxvYyk7CiAgICAgICAgICAgICAgICAgQmV4cHJlc3Npb24qIGNyYXNo ID0KLQkJICBnb2dvLT5ydW50aW1lX2Vycm9yKFJVTlRJTUVfRVJST1JfTklM X0RFUkVGRVJFTkNFLAotCQkJCSAgICAgIGxvYyktPmdldF9iYWNrZW5kKGNv bnRleHQpOworICAgICAgICAgICAgICAgICAgICBnb2dvLT5ydW50aW1lX2Vy cm9yKFJVTlRJTUVfRVJST1JfTklMX0RFUkVGRVJFTkNFLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYyktPmdldF9iYWNr ZW5kKGNvbnRleHQpOwogICAgICAgICAgICAgICAgIEJmdW5jdGlvbiogYmZu ID0gY29udGV4dC0+ZnVuY3Rpb24oKS0+ZnVuY192YWx1ZSgpLT5nZXRfZGVj bCgpOwogICAgICAgICAgICAgICAgIGJleHByID0gZ29nby0+YmFja2VuZCgp LT5jb25kaXRpb25hbF9leHByZXNzaW9uKGJmbiwgYnR5cGUsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29tcGFyZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmFz aCwgYmV4cHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jKTsKLQotCSAgICAg IH0KLQkgIH0KLSAgICAgICAgcmV0ID0gZ29nby0+YmFja2VuZCgpLT5pbmRp cmVjdF9leHByZXNzaW9uKHBidHlwZSwgYmV4cHIsIGZhbHNlLCBsb2MpOwor ICAgICAgICAgICAgICAgIGtub3duX3ZhbGlkID0gdHJ1ZTsKKyAgICAgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAg Y2FzZSBOSUxfQ0hFQ0tfREVGQVVMVDoKKyAgICAgICAgICAgICAgZ29fdW5y ZWFjaGFibGUoKTsKKyAgICAgICAgICB9CisgICAgICAgIHJldCA9IGdvZ28t PmJhY2tlbmQoKS0+aW5kaXJlY3RfZXhwcmVzc2lvbihwYnR5cGUsIGJleHBy LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAga25vd25fdmFsaWQsIGxvYyk7CiAgICAgICB9CiAgICAgICBi cmVhazsKIApAQCAtNDUyOSw2ICs0NTYwLDE5IEBAIEV4cHJlc3Npb246Om1h a2VfdW5hcnkoT3BlcmF0b3Igb3AsIEV4cHIKICAgcmV0dXJuIG5ldyBVbmFy eV9leHByZXNzaW9uKG9wLCBleHByLCBsb2NhdGlvbik7CiB9CiAKK0V4cHJl c3Npb24qCitFeHByZXNzaW9uOjptYWtlX2RlcmVmZXJlbmNlKEV4cHJlc3Np b24qIHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmlsX2No ZWNrX2NsYXNzaWZpY2F0aW9uIGRvY2hlY2ssCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExvY2F0aW9uIGxvY2F0aW9uKQoreworICBFeHByZXNz aW9uKiBkZXJlZiA9IEV4cHJlc3Npb246Om1ha2VfdW5hcnkoT1BFUkFUT1Jf TVVMVCwgcHRyLCBsb2NhdGlvbik7CisgIGlmIChkb2NoZWNrID09IE5JTF9D SEVDS19ORUVERUQpCisgICAgZGVyZWYtPnVuYXJ5X2V4cHJlc3Npb24oKS0+ c2V0X3JlcXVpcmVzX25pbF9jaGVjayh0cnVlKTsKKyAgZWxzZSBpZiAoZG9j aGVjayA9PSBOSUxfQ0hFQ0tfTk9UX05FRURFRCkKKyAgICBkZXJlZi0+dW5h cnlfZXhwcmVzc2lvbigpLT5zZXRfcmVxdWlyZXNfbmlsX2NoZWNrKGZhbHNl KTsKKyAgcmV0dXJuIGRlcmVmOworfQorCiAvLyBJZiB0aGlzIGlzIGFuIGlu ZGlyZWN0aW9uIHRocm91Z2ggYSBwb2ludGVyLCByZXR1cm4gdGhlIGV4cHJl c3Npb24KIC8vIGJlaW5nIHBvaW50ZWQgdGhyb3VnaC4gIE90aGVyd2lzZSBy ZXR1cm4gdGhpcy4KIApAQCAtNjgyOSw3ICs2ODczLDcgQEAgQm91bmRfbWV0 aG9kX2V4cHJlc3Npb246OmNyZWF0ZV90aHVuayhHbwogICAvLyBGaWVsZCAw IG9mIHRoZSBjbG9zdXJlIGlzIHRoZSBmdW5jdGlvbiBjb2RlIHBvaW50ZXIs IGZpZWxkIDEgaXMKICAgLy8gdGhlIHZhbHVlIG9uIHdoaWNoIHRvIGludm9r ZSB0aGUgbWV0aG9kLgogICBFeHByZXNzaW9uKiBhcmcgPSBFeHByZXNzaW9u OjptYWtlX3Zhcl9yZWZlcmVuY2UoY3AsIGxvYyk7Ci0gIGFyZyA9IEV4cHJl c3Npb246Om1ha2VfdW5hcnkoT1BFUkFUT1JfTVVMVCwgYXJnLCBsb2MpOwor ICBhcmcgPSBFeHByZXNzaW9uOjptYWtlX2RlcmVmZXJlbmNlKGFyZywgTklM X0NIRUNLX05PVF9ORUVERUQsIGxvYyk7CiAgIGFyZyA9IEV4cHJlc3Npb246 Om1ha2VfZmllbGRfcmVmZXJlbmNlKGFyZywgMSwgbG9jKTsKIAogICBFeHBy ZXNzaW9uKiBibWUgPSBFeHByZXNzaW9uOjptYWtlX2JvdW5kX21ldGhvZChh cmcsIG1ldGhvZCwgZm4sIGxvYyk7CkBAIC02ODkzLDcgKzY5MzcsOCBAQCBi bWVfY2hlY2tfbmlsKGNvbnN0IE1ldGhvZDo6RmllbGRfaW5kZXhlCiAJCQkJ CSAgICAgIEV4cHJlc3Npb246Om1ha2VfbmlsKGxvYyksCiAJCQkJCSAgICAg IGxvYyk7CiAgICAgICBjb25kID0gRXhwcmVzc2lvbjo6bWFrZV9iaW5hcnko T1BFUkFUT1JfT1JPUiwgY29uZCwgbiwgbG9jKTsKLSAgICAgICpyZWYgPSBF eHByZXNzaW9uOjptYWtlX3VuYXJ5KE9QRVJBVE9SX01VTFQsICpyZWYsIGxv Yyk7CisgICAgICAqcmVmID0gRXhwcmVzc2lvbjo6bWFrZV9kZXJlZmVyZW5j ZSgqcmVmLCBFeHByZXNzaW9uOjpOSUxfQ0hFQ0tfREVGQVVMVCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYyk7CiAg ICAgICBnb19hc3NlcnQoKCpyZWYpLT50eXBlKCktPnN0cnVjdF90eXBlKCkg PT0gc3R5cGUpOwogICAgIH0KICAgKnJlZiA9IEV4cHJlc3Npb246Om1ha2Vf ZmllbGRfcmVmZXJlbmNlKCpyZWYsIGZpZWxkX2luZGV4ZXMtPmZpZWxkX2lu ZGV4LApAQCAtNjk0OCw3ICs2OTkzLDcgQEAgQm91bmRfbWV0aG9kX2V4cHJl c3Npb246OmRvX2ZsYXR0ZW4oR29nbwogICBFeHByZXNzaW9uKiB2YWwgPSBl eHByOwogICBpZiAoZm50eXBlLT5yZWNlaXZlcigpLT50eXBlKCktPnBvaW50 c190bygpID09IE5VTEwKICAgICAgICYmIHZhbC0+dHlwZSgpLT5wb2ludHNf dG8oKSAhPSBOVUxMKQotICAgIHZhbCA9IEV4cHJlc3Npb246Om1ha2VfdW5h cnkoT1BFUkFUT1JfTVVMVCwgdmFsLCBsb2MpOworICAgIHZhbCA9IEV4cHJl c3Npb246Om1ha2VfZGVyZWZlcmVuY2UodmFsLCBOSUxfQ0hFQ0tfREVGQVVM VCwgbG9jKTsKIAogICAvLyBOb3RlIHRoYXQgd2UgYXJlIGlnbm9yaW5nIHRo aXMtPmV4cHJfdHlwZV8gaGVyZS4gIFRoZSB0aHVuayB3aWxsCiAgIC8vIGV4 cGVjdCBhIGNsb3N1cmUgd2hvc2Ugc2Vjb25kIGZpZWxkIGhhcyB0eXBlIHRo aXMtPmV4cHJfdHlwZV8gKGlmCkBAIC04OTE5LDcgKzg5NjQsOCBAQCBCdWls dGluX2NhbGxfZXhwcmVzc2lvbjo6ZG9fZ2V0X2JhY2tlbmQoCiAJICAgIGFy Z190eXBlID0gYXJnX3R5cGUtPnBvaW50c190bygpOwogCSAgICBnb19hc3Nl cnQoYXJnX3R5cGUtPmFycmF5X3R5cGUoKSAhPSBOVUxMCiAJCSAgICAgICAm JiAhYXJnX3R5cGUtPmlzX3NsaWNlX3R5cGUoKSk7Ci0gICAgICAgICAgICBh cmcgPSBFeHByZXNzaW9uOjptYWtlX3VuYXJ5KE9QRVJBVE9SX01VTFQsIGFy ZywgbG9jYXRpb24pOworICAgICAgICAgICAgYXJnID0gRXhwcmVzc2lvbjo6 bWFrZV9kZXJlZmVyZW5jZShhcmcsIE5JTF9DSEVDS19ERUZBVUxULAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs b2NhdGlvbik7CiAJICB9CiAKIAlUeXBlKiBpbnRfdHlwZSA9IFR5cGU6Omxv b2t1cF9pbnRlZ2VyX3R5cGUoImludCIpOwpAQCAtODk1Myw4ICs4OTk5LDkg QEAgQnVpbHRpbl9jYWxsX2V4cHJlc3Npb246OmRvX2dldF9iYWNrZW5kKAog CQkJCQkJCSAgYXJnLCBuaWwsIGxvY2F0aW9uKTsKIAkJRXhwcmVzc2lvbiog emVybyA9IEV4cHJlc3Npb246Om1ha2VfaW50ZWdlcl91bCgwLCBpbnRfdHlw ZSwKIAkJCQkJCQkgICAgICAgbG9jYXRpb24pOwotCQlFeHByZXNzaW9uKiBp bmRpciA9IEV4cHJlc3Npb246Om1ha2VfdW5hcnkoT1BFUkFUT1JfTVVMVCwK LQkJCQkJCQkgICBhcmcsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICBF eHByZXNzaW9uKiBpbmRpciA9CisgICAgICAgICAgICAgICAgICAgIEV4cHJl c3Npb246Om1ha2VfZGVyZWZlcmVuY2UoYXJnLCBOSUxfQ0hFQ0tfTk9UX05F RURFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsb2NhdGlvbik7CiAJCXZhbCA9IEV4cHJlc3Npb246Om1h a2VfY29uZGl0aW9uYWwoY21wLCB6ZXJvLCBpbmRpciwgbG9jYXRpb24pOwog CSAgICAgIH0KIAkgICAgZWxzZQpAQCAtODk5NSw4ICs5MDQyLDkgQEAgQnVp bHRpbl9jYWxsX2V4cHJlc3Npb246OmRvX2dldF9iYWNrZW5kKAogCQkJCQkJ CSAgYXJnLCBuaWwsIGxvY2F0aW9uKTsKIAkJRXhwcmVzc2lvbiogemVybyA9 IEV4cHJlc3Npb246Om1ha2VfaW50ZWdlcl91bCgwLCBpbnRfdHlwZSwKIAkJ CQkJCQkgICAgICAgbG9jYXRpb24pOwotCQlFeHByZXNzaW9uKiBpbmRpciA9 IEV4cHJlc3Npb246Om1ha2VfdW5hcnkoT1BFUkFUT1JfTVVMVCwKLQkJCQkJ CQkgICBwYXJnLCBsb2NhdGlvbik7CisgICAgICAgICAgICAgICAgRXhwcmVz c2lvbiogaW5kaXIgPQorICAgICAgICAgICAgICAgICAgICBFeHByZXNzaW9u OjptYWtlX2RlcmVmZXJlbmNlKHBhcmcsIE5JTF9DSEVDS19OT1RfTkVFREVE LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxvY2F0aW9uKTsKIAkJdmFsID0gRXhwcmVzc2lvbjo6bWFrZV9j b25kaXRpb25hbChjbXAsIHplcm8sIGluZGlyLCBsb2NhdGlvbik7CiAJICAg ICAgfQogCSAgICBlbHNlCkBAIC0xMDI3NCw3ICsxMDMyMiw3IEBAIENhbGxf ZXhwcmVzc2lvbjo6ZG9fZ2V0X2JhY2tlbmQoVHJhbnNsYXQKICAgICAgICAg ICBUeXBlOjptYWtlX3BvaW50ZXJfdHlwZSgKICAgICAgICAgICAgICAgVHlw ZTo6bWFrZV9wb2ludGVyX3R5cGUoVHlwZTo6bWFrZV92b2lkX3R5cGUoKSkp OwogICAgICAgZm4gPSBFeHByZXNzaW9uOjptYWtlX3Vuc2FmZV9jYXN0KHBm bnR5cGUsIHRoaXMtPmZuXywgbG9jYXRpb24pOwotICAgICAgZm4gPSBFeHBy ZXNzaW9uOjptYWtlX3VuYXJ5KE9QRVJBVE9SX01VTFQsIGZuLCBsb2NhdGlv bik7CisgICAgICBmbiA9IEV4cHJlc3Npb246Om1ha2VfZGVyZWZlcmVuY2Uo Zm4sIE5JTF9DSEVDS19OT1RfTkVFREVELCBsb2NhdGlvbik7CiAgICAgfQog ICBlbHNlCiAgICAgewpAQCAtMTA1MzIsOCArMTA1ODAsOCBAQCBJbmRleF9l eHByZXNzaW9uOjpkb19sb3dlcihHb2dvKiwgTmFtZWRfCiAJICAgJiYgdHlw ZS0+cG9pbnRzX3RvKCktPmFycmF5X3R5cGUoKSAhPSBOVUxMCiAJICAgJiYg IXR5cGUtPnBvaW50c190bygpLT5pc19zbGljZV90eXBlKCkpCiAgICAgewot ICAgICAgRXhwcmVzc2lvbiogZGVyZWYgPSBFeHByZXNzaW9uOjptYWtlX3Vu YXJ5KE9QRVJBVE9SX01VTFQsIGxlZnQsCi0JCQkJCQkgbG9jYXRpb24pOwor ICAgICAgRXhwcmVzc2lvbiogZGVyZWYgPQorICAgICAgICAgIEV4cHJlc3Np b246Om1ha2VfZGVyZWZlcmVuY2UobGVmdCwgTklMX0NIRUNLX0RFRkFVTFQs IGxvY2F0aW9uKTsKIAogICAgICAgLy8gRm9yIGFuIG9yZGluYXJ5IGluZGV4 IGludG8gdGhlIGFycmF5LCB0aGUgcG9pbnRlciB3aWxsIGJlCiAgICAgICAv LyBkZXJlZmVyZW5jZWQuICBGb3IgYSBzbGljZSBpdCB3aWxsIG5vdC0tdGhl IHJlc3VsdGluZyBzbGljZQpAQCAtMTEyOTcsNyArMTEzNDUsOCBAQCBTdHJp bmdfaW5kZXhfZXhwcmVzc2lvbjo6ZG9fZ2V0X2JhY2tlbmQoCiAgIExvY2F0 aW9uIGxvYyA9IHRoaXMtPmxvY2F0aW9uKCk7CiAgIEV4cHJlc3Npb24qIHN0 cmluZ19hcmcgPSB0aGlzLT5zdHJpbmdfOwogICBpZiAodGhpcy0+c3RyaW5n Xy0+dHlwZSgpLT5wb2ludHNfdG8oKSAhPSBOVUxMKQotICAgIHN0cmluZ19h cmcgPSBFeHByZXNzaW9uOjptYWtlX3VuYXJ5KE9QRVJBVE9SX01VTFQsIHRo aXMtPnN0cmluZ18sIGxvYyk7CisgICAgc3RyaW5nX2FyZyA9IEV4cHJlc3Np b246Om1ha2VfZGVyZWZlcmVuY2UodGhpcy0+c3RyaW5nXywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUxfQ0hF Q0tfTk9UX05FRURFRCwgbG9jKTsKIAogICBFeHByZXNzaW9uKiBiYWRfaW5k ZXggPSBFeHByZXNzaW9uOjpjaGVja19ib3VuZHModGhpcy0+c3RhcnRfLCBs b2MpOwogCkBAIC0xMTUzMSw4ICsxMTU4MCw5IEBAIE1hcF9pbmRleF9leHBy ZXNzaW9uOjpkb19nZXRfYmFja2VuZChUcmEKICAgZ29fYXNzZXJ0KHRoaXMt PnZhbHVlX3BvaW50ZXJfICE9IE5VTEwKICAgICAgICAgICAgICYmIHRoaXMt PnZhbHVlX3BvaW50ZXJfLT5pc192YXJpYWJsZSgpKTsKIAotICBFeHByZXNz aW9uKiB2YWwgPSBFeHByZXNzaW9uOjptYWtlX3VuYXJ5KE9QRVJBVE9SX01V TFQsIHRoaXMtPnZhbHVlX3BvaW50ZXJfLAotCQkJCQkgICB0aGlzLT5sb2Nh dGlvbigpKTsKKyAgRXhwcmVzc2lvbiogdmFsID0gRXhwcmVzc2lvbjo6bWFr ZV9kZXJlZmVyZW5jZSh0aGlzLT52YWx1ZV9wb2ludGVyXywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUxf Q0hFQ0tfTk9UX05FRURFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5sb2NhdGlvbigpKTsKICAg cmV0dXJuIHZhbC0+Z2V0X2JhY2tlbmQoY29udGV4dCk7CiB9CiAKQEAgLTEx NzY4LDcgKzExODE4LDcgQEAgSW50ZXJmYWNlX2ZpZWxkX3JlZmVyZW5jZV9l eHByZXNzaW9uOjpnZQogICBFeHByZXNzaW9uKiByZWYgPSB0aGlzLT5leHBy XzsKICAgTG9jYXRpb24gbG9jID0gdGhpcy0+bG9jYXRpb24oKTsKICAgaWYg KHJlZi0+dHlwZSgpLT5wb2ludHNfdG8oKSAhPSBOVUxMKQotICAgIHJlZiA9 IEV4cHJlc3Npb246Om1ha2VfdW5hcnkoT1BFUkFUT1JfTVVMVCwgcmVmLCBs b2MpOworICAgIHJlZiA9IEV4cHJlc3Npb246Om1ha2VfZGVyZWZlcmVuY2Uo cmVmLCBOSUxfQ0hFQ0tfREVGQVVMVCwgbG9jKTsKIAogICBFeHByZXNzaW9u KiBtdGFibGUgPQogICAgICAgRXhwcmVzc2lvbjo6bWFrZV9pbnRlcmZhY2Vf aW5mbyhyZWYsIElOVEVSRkFDRV9JTkZPX01FVEhPRFMsIGxvYyk7CkBAIC0x MTc3OCw3ICsxMTgyOCw4IEBAIEludGVyZmFjZV9maWVsZF9yZWZlcmVuY2Vf ZXhwcmVzc2lvbjo6Z2UKICAgdW5zaWduZWQgaW50IGluZGV4OwogICBjb25z dCBTdHJ1Y3RfZmllbGQqIGZpZWxkID0gbXRhYmxlX3R5cGUtPmZpbmRfbG9j YWxfZmllbGQobmFtZSwgJmluZGV4KTsKICAgZ29fYXNzZXJ0KGZpZWxkICE9 IE5VTEwpOwotICBtdGFibGUgPSBFeHByZXNzaW9uOjptYWtlX3VuYXJ5KE9Q RVJBVE9SX01VTFQsIG10YWJsZSwgbG9jKTsKKworICBtdGFibGUgPSBFeHBy ZXNzaW9uOjptYWtlX2RlcmVmZXJlbmNlKG10YWJsZSwgTklMX0NIRUNLX05P VF9ORUVERUQsIGxvYyk7CiAgIHJldHVybiBFeHByZXNzaW9uOjptYWtlX2Zp ZWxkX3JlZmVyZW5jZShtdGFibGUsIGluZGV4LCBsb2MpOwogfQogCkBAIC0x MTc5MCw3ICsxMTg0MSw4IEBAIEludGVyZmFjZV9maWVsZF9yZWZlcmVuY2Vf ZXhwcmVzc2lvbjo6Z2UKIHsKICAgRXhwcmVzc2lvbiogZXhwciA9IHRoaXMt PmV4cHJfOwogICBpZiAoZXhwci0+dHlwZSgpLT5wb2ludHNfdG8oKSAhPSBO VUxMKQotICAgIGV4cHIgPSBFeHByZXNzaW9uOjptYWtlX3VuYXJ5KE9QRVJB VE9SX01VTFQsIGV4cHIsIHRoaXMtPmxvY2F0aW9uKCkpOworICAgIGV4cHIg PSBFeHByZXNzaW9uOjptYWtlX2RlcmVmZXJlbmNlKGV4cHIsIE5JTF9DSEVD S19ERUZBVUxULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRoaXMtPmxvY2F0aW9uKCkpOwogICByZXR1cm4gRXhwcmVzc2lv bjo6bWFrZV9pbnRlcmZhY2VfaW5mbyhleHByLCBJTlRFUkZBQ0VfSU5GT19P QkpFQ1QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRoaXMtPmxvY2F0aW9uKCkpOwogfQpAQCAtMTE5NjMsNyArMTIwMTUs NyBAQCBJbnRlcmZhY2VfZmllbGRfcmVmZXJlbmNlX2V4cHJlc3Npb246OmNy CiAgIC8vIEZpZWxkIDAgb2YgdGhlIGNsb3N1cmUgaXMgdGhlIGZ1bmN0aW9u IGNvZGUgcG9pbnRlciwgZmllbGQgMSBpcwogICAvLyB0aGUgdmFsdWUgb24g d2hpY2ggdG8gaW52b2tlIHRoZSBtZXRob2QuCiAgIEV4cHJlc3Npb24qIGFy ZyA9IEV4cHJlc3Npb246Om1ha2VfdmFyX3JlZmVyZW5jZShjcCwgbG9jKTsK LSAgYXJnID0gRXhwcmVzc2lvbjo6bWFrZV91bmFyeShPUEVSQVRPUl9NVUxU LCBhcmcsIGxvYyk7CisgIGFyZyA9IEV4cHJlc3Npb246Om1ha2VfZGVyZWZl cmVuY2UoYXJnLCBOSUxfQ0hFQ0tfTk9UX05FRURFRCwgbG9jKTsKICAgYXJn ID0gRXhwcmVzc2lvbjo6bWFrZV9maWVsZF9yZWZlcmVuY2UoYXJnLCAxLCBs b2MpOwogCiAgIEV4cHJlc3Npb24gKmlmcmUgPSBFeHByZXNzaW9uOjptYWtl X2ludGVyZmFjZV9maWVsZF9yZWZlcmVuY2UoYXJnLCBuYW1lLApJbmRleDog Z2NjL2dvL2dvZnJvbnRlbmQvZXhwcmVzc2lvbnMuaAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBnY2MvZ28vZ29mcm9udGVuZC9leHByZXNzaW9ucy5o CShyZXZpc2lvbiAyNTQ3NDgpCisrKyBnY2MvZ28vZ29mcm9udGVuZC9leHBy ZXNzaW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MDYsNiArNTA2LDIzIEBA IGNsYXNzIEV4cHJlc3Npb24KICAgc3RhdGljIEV4cHJlc3Npb24qCiAgIG1h a2VfYmFja2VuZChCZXhwcmVzc2lvbiosIFR5cGUqLCBMb2NhdGlvbik7CiAK KyAgZW51bSBOaWxfY2hlY2tfY2xhc3NpZmljYXRpb24KKyAgICB7CisgICAg ICAvLyBVc2UgdGhlIGRlZmF1bHQgcG9saWN5IGZvciBkZWNpZGluZyBpZiB0 aGlzIGRlcmVmIG5lZWRzIGEgY2hlY2suCisgICAgICBOSUxfQ0hFQ0tfREVG QVVMVCwKKyAgICAgIC8vIEFuIGV4cGxpY2l0IGNoZWNrIGlzIHJlcXVpcmVk IGZvciB0aGlzIGRlcmVmZXJlbmNlIG9wZXJhdGlvbi4KKyAgICAgIE5JTF9D SEVDS19ORUVERUQsCisgICAgICAvLyBObyBjaGVjayBuZWVkZWQgZm9yIHRo aXMgZGVyZWZlcmVuY2Ugb3BlcmF0aW9uLgorICAgICAgTklMX0NIRUNLX05P VF9ORUVERUQsCisgICAgICAvLyBBIHR5cGUgZXJyb3Igb3IgZXJyb3IgY29u c3RydWN0IHdhcyBlbmNvdW50ZXJlZCB3aGVuIGRldGVybWluaW5nCisgICAg ICAvLyB3aGV0aGVyIHRoaXMgZGVyZWYgbmVlZHMgYW4gZXhwbGljaXQgY2hl Y2suCisgICAgICBOSUxfQ0hFQ0tfRVJST1JfRU5DT1VOVEVSRUQKKyAgICB9 OworCisgIC8vIE1ha2UgYSBkZXJlZmVyZW5jZSBleHByZXNzaW9uLgorICBz dGF0aWMgRXhwcmVzc2lvbioKKyAgbWFrZV9kZXJlZmVyZW5jZShFeHByZXNz aW9uKiwgTmlsX2NoZWNrX2NsYXNzaWZpY2F0aW9uLCBMb2NhdGlvbik7CisK ICAgLy8gUmV0dXJuIHRoZSBleHByZXNzaW9uIGNsYXNzaWZpY2F0aW9uLgog ICBFeHByZXNzaW9uX2NsYXNzaWZpY2F0aW9uCiAgIGNsYXNzaWZpY2F0aW9u KCkgY29uc3QKQEAgLTE3MzAsNyArMTc0Nyw4IEBAIGNsYXNzIFVuYXJ5X2V4 cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2kKICAgVW5hcnlfZXhwcmVzc2lv bihPcGVyYXRvciBvcCwgRXhwcmVzc2lvbiogZXhwciwgTG9jYXRpb24gbG9j YXRpb24pCiAgICAgOiBFeHByZXNzaW9uKEVYUFJFU1NJT05fVU5BUlksIGxv Y2F0aW9uKSwKICAgICAgIG9wXyhvcCksIGVzY2FwZXNfKHRydWUpLCBjcmVh dGVfdGVtcF8oZmFsc2UpLCBpc19nY19yb290XyhmYWxzZSksCi0gICAgICBp c19zbGljZV9pbml0XyhmYWxzZSksIGV4cHJfKGV4cHIpLCBpc3N1ZV9uaWxf Y2hlY2tfKGZhbHNlKQorICAgICAgaXNfc2xpY2VfaW5pdF8oZmFsc2UpLCBl eHByXyhleHByKSwKKyAgICAgIGlzc3VlX25pbF9jaGVja18oTklMX0NIRUNL X0RFRkFVTFQpCiAgIHsgfQogCiAgIC8vIFJldHVybiB0aGUgb3BlcmF0b3Iu CkBAIC0xNzkyLDYgKzE4MTAsMTcgQEAgY2xhc3MgVW5hcnlfZXhwcmVzc2lv biA6IHB1YmxpYyBFeHByZXNzaQogICBzdGF0aWMgRXhwcmVzc2lvbioKICAg ZG9faW1wb3J0KEltcG9ydCopOwogCisgIC8vIERlY2xhcmUgdGhhdCB0aGlz IGRlcmVmIGRvZXMgb3IgZG9lcyBub3QgcmVxdWlyZSBhbiBleHBsaWNpdCBu aWwgY2hlY2suCisgIHZvaWQKKyAgc2V0X3JlcXVpcmVzX25pbF9jaGVjayhi b29sIG5lZWRlZCkKKyAgeworICAgIGdvX2Fzc2VydCh0aGlzLT5vcF8gPT0g T1BFUkFUT1JfTVVMVCk7CisgICAgaWYgKG5lZWRlZCkKKyAgICAgIHRoaXMt Pmlzc3VlX25pbF9jaGVja18gPSBOSUxfQ0hFQ0tfTkVFREVEOworICAgIGVs c2UKKyAgICAgIHRoaXMtPmlzc3VlX25pbF9jaGVja18gPSBOSUxfQ0hFQ0tf Tk9UX05FRURFRDsKKyAgfQorCiAgcHJvdGVjdGVkOgogICBpbnQKICAgZG9f dHJhdmVyc2UoVHJhdmVyc2UqIHRyYXZlcnNlKQpAQCAtMTg0NywxMiArMTg3 NiwyMCBAQCBjbGFzcyBVbmFyeV9leHByZXNzaW9uIDogcHVibGljIEV4cHJl c3NpCiAKICAgdm9pZAogICBkb19pc3N1ZV9uaWxfY2hlY2soKQotICB7IHRo aXMtPmlzc3VlX25pbF9jaGVja18gPSAodGhpcy0+b3BfID09IE9QRVJBVE9S X01VTFQpOyB9CisgIHsKKyAgICBpZiAodGhpcy0+b3BfID09IE9QRVJBVE9S X01VTFQpCisgICAgICB0aGlzLT5zZXRfcmVxdWlyZXNfbmlsX2NoZWNrKHRy dWUpOworICB9CiAKICBwcml2YXRlOgogICBzdGF0aWMgYm9vbAogICBiYXNl X2lzX3N0YXRpY19pbml0aWFsaXplcihFeHByZXNzaW9uKik7CiAKKyAgLy8g UmV0dXJuIGEgZGV0ZXJtaW5hdGlvbiBhcyB0byB3aGV0aGVyIHRoaXMgZGVy ZWZlcmVuY2UgZXhwcmVzc2lvbgorICAvLyByZXF1aXJlcyBhIG5pbCBjaGVj ay4KKyAgTmlsX2NoZWNrX2NsYXNzaWZpY2F0aW9uCisgIHJlcXVpcmVzX25p bF9jaGVjayhHb2dvKik7CisKICAgLy8gVGhlIHVuYXJ5IG9wZXJhdG9yIHRv IGFwcGx5LgogICBPcGVyYXRvciBvcF87CiAgIC8vIE5vcm1hbGx5IHRydWUu ICBGYWxzZSBpZiB0aGlzIGlzIGFuIGFkZHJlc3MgZXhwcmVzc2lvbiB3aGlj aCBkb2VzCkBAIC0xODc0LDcgKzE5MTEsNyBAQCBjbGFzcyBVbmFyeV9leHBy ZXNzaW9uIDogcHVibGljIEV4cHJlc3NpCiAgIEV4cHJlc3Npb24qIGV4cHJf OwogICAvLyBXaGV0aGVyIG9yIG5vdCB0byBpc3N1ZSBhIG5pbCBjaGVjayBm b3IgdGhpcyBleHByZXNzaW9uIGlmIGl0cyBhZGRyZXNzCiAgIC8vIGlzIGJl aW5nIHRha2VuLgotICBib29sIGlzc3VlX25pbF9jaGVja187CisgIE5pbF9j aGVja19jbGFzc2lmaWNhdGlvbiBpc3N1ZV9uaWxfY2hlY2tfOwogfTsKIAog Ly8gQSBiaW5hcnkgZXhwcmVzc2lvbi4KSW5kZXg6IGdjYy9nby9nb2Zyb250 ZW5kL2dvLmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9nby9n b2Zyb250ZW5kL2dvLmNjCShyZXZpc2lvbiAyNTQwOTApCisrKyBnY2MvZ28v Z29mcm9udGVuZC9nby5jYwkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEs NyBAQCBnb19jcmVhdGVfZ29nbyhjb25zdCBzdHJ1Y3QgZ29fY3JlYXRlX2dv CiAgIGlmIChhcmdzLT5jX2hlYWRlciAhPSBOVUxMKQogICAgIDo6Z29nby0+ c2V0X2NfaGVhZGVyKGFyZ3MtPmNfaGVhZGVyKTsKICAgOjpnb2dvLT5zZXRf ZGVidWdfZXNjYXBlX2xldmVsKGFyZ3MtPmRlYnVnX2VzY2FwZV9sZXZlbCk7 CisgIDo6Z29nby0+c2V0X25pbF9jaGVja19zaXplX3RocmVzaG9sZChhcmdz LT5uaWxfY2hlY2tfc2l6ZV90aHJlc2hvbGQpOwogfQogCiAvLyBQYXJzZSB0 aGUgaW5wdXQgZmlsZXMuCkluZGV4OiBnY2MvZ28vZ29mcm9udGVuZC9nb2dv LmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9nby9nb2Zyb250 ZW5kL2dvZ28uY2MJKHJldmlzaW9uIDI1NDc0OCkKKysrIGdjYy9nby9nb2Zy b250ZW5kL2dvZ28uY2MJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcg QEAgR29nbzo6R29nbyhCYWNrZW5kKiBiYWNrZW5kLCBMaW5lbWFwKiBsaQog ICAgIGNoZWNrX2RpdmlkZV9vdmVyZmxvd18odHJ1ZSksCiAgICAgY29tcGls aW5nX3J1bnRpbWVfKGZhbHNlKSwKICAgICBkZWJ1Z19lc2NhcGVfbGV2ZWxf KDApLAorICAgIG5pbF9jaGVja19zaXplX3RocmVzaG9sZF8oNDA5NiksCiAg ICAgdmVyaWZ5X3R5cGVzXygpLAogICAgIGludGVyZmFjZV90eXBlc18oKSwK ICAgICBzcGVjaWZpY190eXBlX2Z1bmN0aW9uc18oKSwKQEAgLTU1NjcsNyAr NTU2OCwxMCBAQCBGdW5jdGlvbjo6YnVpbGQoR29nbyogZ29nbywgTmFtZWRf b2JqZWN0CiAgICAgICAgICAgICAgIHZhcnMucHVzaF9iYWNrKGJ2YXIpOwog CSAgICAgIEV4cHJlc3Npb24qIHBhcm1fcmVmID0KICAgICAgICAgICAgICAg ICAgIEV4cHJlc3Npb246Om1ha2VfdmFyX3JlZmVyZW5jZShwYXJtX25vLCBs b2MpOwotCSAgICAgIHBhcm1fcmVmID0gRXhwcmVzc2lvbjo6bWFrZV91bmFy eShPUEVSQVRPUl9NVUxULCBwYXJtX3JlZiwgbG9jKTsKKyAgICAgICAgICAg ICAgcGFybV9yZWYgPQorICAgICAgICAgICAgICAgICAgRXhwcmVzc2lvbjo6 bWFrZV9kZXJlZmVyZW5jZShwYXJtX3JlZiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwcmVzc2lvbjo6TklM X0NIRUNLX0RFRkFVTFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxvYyk7CiAJICAgICAgaWYgKCgqcCktPnZh cl92YWx1ZSgpLT5pc19pbl9oZWFwKCkpCiAJCXBhcm1fcmVmID0gRXhwcmVz c2lvbjo6bWFrZV9oZWFwX2V4cHJlc3Npb24ocGFybV9yZWYsIGxvYyk7CiAg ICAgICAgICAgICAgIHZhcl9pbml0cy5wdXNoX2JhY2socGFybV9yZWYtPmdl dF9iYWNrZW5kKCZjb250ZXh0KSk7CkluZGV4OiBnY2MvZ28vZ29mcm9udGVu ZC9nb2dvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2dvL2dv ZnJvbnRlbmQvZ29nby5oCShyZXZpc2lvbiAyNTUwNjIpCisrKyBnY2MvZ28v Z29mcm9udGVuZC9nb2dvLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxOCw2ICsz MTgsMjAgQEAgY2xhc3MgR29nbwogICBzZXRfZGVidWdfZXNjYXBlX2xldmVs KGludCBsZXZlbCkKICAgeyB0aGlzLT5kZWJ1Z19lc2NhcGVfbGV2ZWxfID0g bGV2ZWw7IH0KIAorICAvLyBSZXR1cm4gdGhlIHNpemUgdGhyZXNob2xkIHVz ZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gaXNzdWUKKyAgLy8gYSBuaWwt Y2hlY2sgZm9yIGEgZ2l2ZW4gcG9pbnRlciBkZXJlZmVyZW5jZS4gQSB0aHJl c2hvbGQgb2YgLTEKKyAgLy8gaW1wbGllcyB0aGF0IGFsbCBwb3RlbnRpYWxs eSBmYXVsdGluZyBkZXJlZmVyZW5jZSBvcHMgc2hvdWxkCisgIC8vIGJlIG5p bC1jaGVja2VkLiBBIHBvc2l0aXZlIHRocmVzaG9sZCBvZiBOIGltcGxpZXMg dGhhdCBhIGRlcmVmCisgIC8vIG9mICpQIHdoZXJlIFAgaGFzIHNpemUgbGVz cyB0aGFuIE4gZG9lc24ndCBuZWVkIGEgbmlsIGNoZWNrLgorICBpbnQ2NF90 CisgIG5pbF9jaGVja19zaXplX3RocmVzaG9sZCgpIGNvbnN0CisgIHsgcmV0 dXJuIHRoaXMtPm5pbF9jaGVja19zaXplX3RocmVzaG9sZF87IH0KKworICAv LyBTZXQgdGhlIG5pbC1jaGVjayBzaXplIHRocmVzaG9sZCwgYXMgZGVzY3Jp YmVkIGFib3ZlLgorICB2b2lkCisgIHNldF9uaWxfY2hlY2tfc2l6ZV90aHJl c2hvbGQoaW50NjRfdCBieXRlcykKKyAgeyB0aGlzLT5uaWxfY2hlY2tfc2l6 ZV90aHJlc2hvbGRfID0gYnl0ZXM7IH0KKwogICAvLyBJbXBvcnQgYSBwYWNr YWdlLiAgRklMRU5BTUUgaXMgdGhlIGZpbGUgbmFtZSBhcmd1bWVudCwgTE9D QUxfTkFNRQogICAvLyBpcyB0aGUgbG9jYWwgbmFtZSB0byBnaXZlIHRvIHRo ZSBwYWNrYWdlLiAgSWYgTE9DQUxfTkFNRSBpcyBlbXB0eQogICAvLyB0aGUg ZGVjbGFyYXRpb25zIGFyZSBhZGRlZCB0byB0aGUgZ2xvYmFsIHNjb3BlLgpA QCAtMTAyNSw2ICsxMDM5LDggQEAgY2xhc3MgR29nbwogICAvLyBUaGUgbGV2 ZWwgb2YgZXNjYXBlIGFuYWx5c2lzIGRlYnVnIGluZm9ybWF0aW9uIHRvIGVt aXQsIGZyb20gdGhlCiAgIC8vIC1mZ28tZGVidWctZXNjYXBlIG9wdGlvbi4K ICAgaW50IGRlYnVnX2VzY2FwZV9sZXZlbF87CisgIC8vIE5pbC1jaGVjayBz aXplIHRocmVzaGhvbGQuCisgIGludDY0X3QgbmlsX2NoZWNrX3NpemVfdGhy ZXNob2xkXzsKICAgLy8gQSBsaXN0IG9mIHR5cGVzIHRvIHZlcmlmeS4KICAg c3RkOjp2ZWN0b3I8VHlwZSo+IHZlcmlmeV90eXBlc187CiAgIC8vIEEgbGlz dCBvZiBpbnRlcmZhY2UgdHlwZXMgZGVmaW5lZCB3aGlsZSBwYXJzaW5nLgpJ bmRleDogZ2NjL2dvL2dvZnJvbnRlbmQvcGFyc2UuY2MKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gZ2NjL2dvL2dvZnJvbnRlbmQvcGFyc2UuY2MJKHJl dmlzaW9uIDI1NTA2MikKKysrIGdjYy9nby9nb2Zyb250ZW5kL3BhcnNlLmNj CSh3b3JraW5nIGNvcHkpCkBAIC0yNzQ1LDE0ICsyNzQ1LDE3IEBAIFBhcnNl OjplbmNsb3NpbmdfdmFyX3JlZmVyZW5jZShOYW1lZF9vYmoKIAogICBFeHBy ZXNzaW9uKiBjbG9zdXJlX3JlZiA9IEV4cHJlc3Npb246Om1ha2VfdmFyX3Jl ZmVyZW5jZShjbG9zdXJlLAogCQkJCQkJCSAgIGxvY2F0aW9uKTsKLSAgY2xv c3VyZV9yZWYgPSBFeHByZXNzaW9uOjptYWtlX3VuYXJ5KE9QRVJBVE9SX01V TFQsIGNsb3N1cmVfcmVmLCBsb2NhdGlvbik7CisgIGNsb3N1cmVfcmVmID0K KyAgICAgIEV4cHJlc3Npb246Om1ha2VfZGVyZWZlcmVuY2UoY2xvc3VyZV9y ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cHJl c3Npb246Ok5JTF9DSEVDS19ERUZBVUxULAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsb2NhdGlvbik7CiAKICAgLy8gVGhlIGNsb3N1 cmUgc3RydWN0dXJlIGhvbGRzIHBvaW50ZXJzIHRvIHRoZSB2YXJpYWJsZXMs IHNvIHdlIG5lZWQKICAgLy8gdG8gaW50cm9kdWNlIGFuIGluZGlyZWN0aW9u LgogICBFeHByZXNzaW9uKiBlID0gRXhwcmVzc2lvbjo6bWFrZV9maWVsZF9y ZWZlcmVuY2UoY2xvc3VyZV9yZWYsCiAJCQkJCQkgICBpbnMuZmlyc3QtPmlu ZGV4KCksCiAJCQkJCQkgICBsb2NhdGlvbik7Ci0gIGUgPSBFeHByZXNzaW9u OjptYWtlX3VuYXJ5KE9QRVJBVE9SX01VTFQsIGUsIGxvY2F0aW9uKTsKKyAg ZSA9IEV4cHJlc3Npb246Om1ha2VfZGVyZWZlcmVuY2UoZSwgRXhwcmVzc2lv bjo6TklMX0NIRUNLX0RFRkFVTFQsIGxvY2F0aW9uKTsKICAgcmV0dXJuIEV4 cHJlc3Npb246Om1ha2VfZW5jbG9zaW5nX3Zhcl9yZWZlcmVuY2UoZSwgdmFy LCBsb2NhdGlvbik7CiB9CiAKSW5kZXg6IGdjYy9nby9nb2Zyb250ZW5kL3N0 YXRlbWVudHMuY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2dv L2dvZnJvbnRlbmQvc3RhdGVtZW50cy5jYwkocmV2aXNpb24gMjU0OTgzKQor KysgZ2NjL2dvL2dvZnJvbnRlbmQvc3RhdGVtZW50cy5jYwkod29ya2luZyBj b3B5KQpAQCAtMzE1LDcgKzMxNSw4IEBAIFZhcmlhYmxlX2RlY2xhcmF0aW9u X3N0YXRlbWVudDo6ZG9fZ2V0X2IKICAgaWYgKGJpbml0ICE9IE5VTEwpCiAg ICAgewogICAgICAgRXhwcmVzc2lvbiogZSA9IEV4cHJlc3Npb246Om1ha2Vf dGVtcG9yYXJ5X3JlZmVyZW5jZSh0ZW1wLCBsb2MpOwotICAgICAgZSA9IEV4 cHJlc3Npb246Om1ha2VfdW5hcnkoT1BFUkFUT1JfTVVMVCwgZSwgbG9jKTsK KyAgICAgIGUgPSBFeHByZXNzaW9uOjptYWtlX2RlcmVmZXJlbmNlKGUsIEV4 cHJlc3Npb246Ok5JTF9DSEVDS19OT1RfTkVFREVELAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jKTsKICAgICAgIEJleHBy ZXNzaW9uKiBiZSA9IGUtPmdldF9iYWNrZW5kKGNvbnRleHQpOwogICAgICAg c2V0ID0gY29udGV4dC0+YmFja2VuZCgpLT5hc3NpZ25tZW50X3N0YXRlbWVu dChiZnVuY3Rpb24sIGJlLCBiaW5pdCwgbG9jKTsKICAgICB9CkBAIC03NDAs NyArNzQxLDkgQEAgQXNzaWdubWVudF9zdGF0ZW1lbnQ6OmRvX2xvd2VyKEdv Z28qLCBOYQogCQkJCQkgICAgYTEsIGEyLCBhMyk7CiAgICAgICBUeXBlKiBw dHJ2YWxfdHlwZSA9IFR5cGU6Om1ha2VfcG9pbnRlcl90eXBlKG10LT52YWxf dHlwZSgpKTsKICAgICAgIGNhbGwgPSBFeHByZXNzaW9uOjptYWtlX2Nhc3Qo cHRydmFsX3R5cGUsIGNhbGwsIGxvYyk7Ci0gICAgICBFeHByZXNzaW9uKiBp bmRpciA9IEV4cHJlc3Npb246Om1ha2VfdW5hcnkoT1BFUkFUT1JfTVVMVCwg Y2FsbCwgbG9jKTsKKyAgICAgIEV4cHJlc3Npb24qIGluZGlyID0KKyAgICAg ICAgICBFeHByZXNzaW9uOjptYWtlX2RlcmVmZXJlbmNlKGNhbGwsIEV4cHJl c3Npb246Ok5JTF9DSEVDS19OT1RfTkVFREVELAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbG9jKTsKICAgICAgIHJlZiA9IEV4 cHJlc3Npb246Om1ha2VfdGVtcG9yYXJ5X3JlZmVyZW5jZSh2YWxfdGVtcCwg bG9jKTsKICAgICAgIGItPmFkZF9zdGF0ZW1lbnQoU3RhdGVtZW50OjptYWtl X2Fzc2lnbm1lbnQoaW5kaXIsIHJlZiwgbG9jKSk7CiAKQEAgLTEyOTIsNyAr MTI5NSw4IEBAIFR1cGxlX21hcF9hc3NpZ25tZW50X3N0YXRlbWVudDo6ZG9f bG93ZXIKIAogICAvLyB2YWwgPSAqdmFsX19wdHJfdGVtcAogICByZWYgPSBF eHByZXNzaW9uOjptYWtlX3RlbXBvcmFyeV9yZWZlcmVuY2UodmFsX3B0cl90 ZW1wLCBsb2MpOwotICBFeHByZXNzaW9uKiBpbmQgPSBFeHByZXNzaW9uOjpt YWtlX3VuYXJ5KE9QRVJBVE9SX01VTFQsIHJlZiwgbG9jKTsKKyAgRXhwcmVz c2lvbiogaW5kID0KKyAgICAgIEV4cHJlc3Npb246Om1ha2VfZGVyZWZlcmVu Y2UocmVmLCBFeHByZXNzaW9uOjpOSUxfQ0hFQ0tfTk9UX05FRURFRCwgbG9j KTsKICAgcyA9IFN0YXRlbWVudDo6bWFrZV9hc3NpZ25tZW50KHRoaXMtPnZh bF8sIGluZCwgbG9jKTsKICAgYi0+YWRkX3N0YXRlbWVudChzKTsKIApAQCAt MjM2Nyw4ICsyMzcxLDEwIEBAIFRodW5rX3N0YXRlbWVudDo6YnVpbGRfdGh1 bmsoR29nbyogZ29nbywKICAgLy8gb25lcyB1c2VkIGluIGJ1aWxkX3N0cnVj dC4KICAgRXhwcmVzc2lvbiogdGh1bmtfcGFyYW1ldGVyID0gRXhwcmVzc2lv bjo6bWFrZV92YXJfcmVmZXJlbmNlKG5hbWVkX3BhcmFtZXRlciwKIAkJCQkJ CQkgICAgICAgbG9jYXRpb24pOwotICB0aHVua19wYXJhbWV0ZXIgPSBFeHBy ZXNzaW9uOjptYWtlX3VuYXJ5KE9QRVJBVE9SX01VTFQsIHRodW5rX3BhcmFt ZXRlciwKLQkJCQkJICAgbG9jYXRpb24pOworICB0aHVua19wYXJhbWV0ZXIg PQorICAgICAgRXhwcmVzc2lvbjo6bWFrZV9kZXJlZmVyZW5jZSh0aHVua19w YXJhbWV0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEV4cHJlc3Npb246Ok5JTF9DSEVDS19OT1RfTkVFREVELAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbik7CiAKICAgSW50 ZXJmYWNlX2ZpZWxkX3JlZmVyZW5jZV9leHByZXNzaW9uKiBpbnRlcmZhY2Vf bWV0aG9kID0KICAgICBjZS0+Zm4oKS0+aW50ZXJmYWNlX2ZpZWxkX3JlZmVy ZW5jZV9leHByZXNzaW9uKCk7CkBAIC0yNDIxLDggKzI0MjcsMTAgQEAgVGh1 bmtfc3RhdGVtZW50OjpidWlsZF90aHVuayhHb2dvKiBnb2dvLAogCSAgICB7 CiAJICAgICAgRXhwcmVzc2lvbiogdGh1bmtfcGFyYW0gPQogCQlFeHByZXNz aW9uOjptYWtlX3Zhcl9yZWZlcmVuY2UobmFtZWRfcGFyYW1ldGVyLCBsb2Nh dGlvbik7Ci0JICAgICAgdGh1bmtfcGFyYW0gPQotCQlFeHByZXNzaW9uOjpt YWtlX3VuYXJ5KE9QRVJBVE9SX01VTFQsIHRodW5rX3BhcmFtLCBsb2NhdGlv bik7CisgICAgICAgICAgICAgdGh1bmtfcGFyYW0gPQorICAgICAgICAgICAg ICAgICBFeHByZXNzaW9uOjptYWtlX2RlcmVmZXJlbmNlKHRodW5rX3BhcmFt LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEV4cHJlc3Npb246Ok5JTF9DSEVDS19OT1RfTkVFREVELAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0 aW9uKTsKIAkgICAgICBwYXJhbSA9IEV4cHJlc3Npb246Om1ha2VfZmllbGRf cmVmZXJlbmNlKHRodW5rX3BhcmFtLAogCQkJCQkJICAgICAgIG5leHRfaW5k ZXgsCiAJCQkJCQkgICAgICAgbG9jYXRpb24pOwpAQCAtNTgzNyw3ICs1ODQ1 LDggQEAgRm9yX3JhbmdlX3N0YXRlbWVudDo6bG93ZXJfcmFuZ2VfbWFwKEdv ZwogICBFeHByZXNzaW9uKiBsaHMgPSBFeHByZXNzaW9uOjptYWtlX3RlbXBv cmFyeV9yZWZlcmVuY2UoaW5kZXhfdGVtcCwgbG9jKTsKICAgRXhwcmVzc2lv biogcmhzID0gRXhwcmVzc2lvbjo6bWFrZV90ZW1wb3JhcnlfcmVmZXJlbmNl KGhpdGVyLCBsb2MpOwogICByaHMgPSBFeHByZXNzaW9uOjptYWtlX2ZpZWxk X3JlZmVyZW5jZShyZWYsIDAsIGxvYyk7Ci0gIHJocyA9IEV4cHJlc3Npb246 Om1ha2VfdW5hcnkoT1BFUkFUT1JfTVVMVCwgcmVmLCBsb2MpOworICByaHMg PSBFeHByZXNzaW9uOjptYWtlX2RlcmVmZXJlbmNlKHJlZiwgRXhwcmVzc2lv bjo6TklMX0NIRUNLX05PVF9ORUVERUQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbG9jKTsKICAgU3RhdGVtZW50KiBzZXQgPSBT dGF0ZW1lbnQ6Om1ha2VfYXNzaWdubWVudChsaHMsIHJocywgbG9jKTsKICAg aXRlcl9pbml0LT5hZGRfc3RhdGVtZW50KHNldCk7CiAKQEAgLTU4NDYsNyAr NTg1NSw4IEBAIEZvcl9yYW5nZV9zdGF0ZW1lbnQ6Omxvd2VyX3JhbmdlX21h cChHb2cKICAgICAgIGxocyA9IEV4cHJlc3Npb246Om1ha2VfdGVtcG9yYXJ5 X3JlZmVyZW5jZSh2YWx1ZV90ZW1wLCBsb2MpOwogICAgICAgcmhzID0gRXhw cmVzc2lvbjo6bWFrZV90ZW1wb3JhcnlfcmVmZXJlbmNlKGhpdGVyLCBsb2Mp OwogICAgICAgcmhzID0gRXhwcmVzc2lvbjo6bWFrZV9maWVsZF9yZWZlcmVu Y2UocmhzLCAxLCBsb2MpOwotICAgICAgcmhzID0gRXhwcmVzc2lvbjo6bWFr ZV91bmFyeShPUEVSQVRPUl9NVUxULCByaHMsIGxvYyk7CisgICAgICByaHMg PSBFeHByZXNzaW9uOjptYWtlX2RlcmVmZXJlbmNlKHJocywgRXhwcmVzc2lv bjo6TklMX0NIRUNLX05PVF9ORUVERUQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxvYyk7CiAgICAgICBzZXQgPSBTdGF0 ZW1lbnQ6Om1ha2VfYXNzaWdubWVudChsaHMsIHJocywgbG9jKTsKICAgICAg IGl0ZXJfaW5pdC0+YWRkX3N0YXRlbWVudChzZXQpOwogICAgIH0KSW5kZXg6 IGdjYy9nby9nb2Zyb250ZW5kL3R5cGVzLmNjCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGdjYy9nby9nb2Zyb250ZW5kL3R5cGVzLmNjCShyZXZpc2lv biAyNTUyNjYpCisrKyBnY2MvZ28vZ29mcm9udGVuZC90eXBlcy5jYwkod29y a2luZyBjb3B5KQpAQCAtMjIxNSwxMCArMjIxNSwxMCBAQCBUeXBlOjp3cml0 ZV9uYW1lZF9lcXVhbChHb2dvKiBnb2dvLCBOYW1lCiAKICAgLy8gQ29tcGFy ZSB0aGUgdmFsdWVzIGZvciBlcXVhbGl0eS4KICAgRXhwcmVzc2lvbiogdDEg PSBFeHByZXNzaW9uOjptYWtlX3RlbXBvcmFyeV9yZWZlcmVuY2UocDEsIGJs b2MpOwotICB0MSA9IEV4cHJlc3Npb246Om1ha2VfdW5hcnkoT1BFUkFUT1Jf TVVMVCwgdDEsIGJsb2MpOworICB0MSA9IEV4cHJlc3Npb246Om1ha2VfZGVy ZWZlcmVuY2UodDEsIEV4cHJlc3Npb246Ok5JTF9DSEVDS19OT1RfTkVFREVE LCBibG9jKTsKIAogICBFeHByZXNzaW9uKiB0MiA9IEV4cHJlc3Npb246Om1h a2VfdGVtcG9yYXJ5X3JlZmVyZW5jZShwMiwgYmxvYyk7Ci0gIHQyID0gRXhw cmVzc2lvbjo6bWFrZV91bmFyeShPUEVSQVRPUl9NVUxULCB0MiwgYmxvYyk7 CisgIHQyID0gRXhwcmVzc2lvbjo6bWFrZV9kZXJlZmVyZW5jZSh0MiwgRXhw cmVzc2lvbjo6TklMX0NIRUNLX05PVF9ORUVERUQsIGJsb2MpOwogCiAgIEV4 cHJlc3Npb24qIGNvbmQgPSBFeHByZXNzaW9uOjptYWtlX2JpbmFyeShPUEVS QVRPUl9FUUVRLCB0MSwgdDIsIGJsb2MpOwogCkBAIC01OTExLDcgKzU5MTEs OSBAQCBTdHJ1Y3RfdHlwZTo6ZmllbGRfcmVmZXJlbmNlX2RlcHRoKEV4cHJl CiAJICBFeHByZXNzaW9uKiBoZXJlID0gRXhwcmVzc2lvbjo6bWFrZV9maWVs ZF9yZWZlcmVuY2Uoc3RydWN0X2V4cHIsIGksCiAJCQkJCQkJICAgICAgbG9j YXRpb24pOwogCSAgaWYgKHBmLT50eXBlKCktPnBvaW50c190bygpICE9IE5V TEwpCi0JICAgIGhlcmUgPSBFeHByZXNzaW9uOjptYWtlX3VuYXJ5KE9QRVJB VE9SX01VTFQsIGhlcmUsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGhlcmUg PSBFeHByZXNzaW9uOjptYWtlX2RlcmVmZXJlbmNlKGhlcmUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBy ZXNzaW9uOjpOSUxfQ0hFQ0tfREVGQVVMVCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uKTsKIAkg IHdoaWxlIChzdWItPmV4cHIoKSAhPSBOVUxMKQogCSAgICB7CiAJICAgICAg c3ViID0gc3ViLT5leHByKCktPmRlcmVmKCktPmZpZWxkX3JlZmVyZW5jZV9l eHByZXNzaW9uKCk7CkBAIC02MzQyLDExICs2MzQ0LDEzIEBAIFN0cnVjdF90 eXBlOjp3cml0ZV9lcXVhbF9mdW5jdGlvbihHb2dvKgogCiAgICAgICAvLyBD b21wYXJlIG9uZSBmaWVsZCBpbiBib3RoIFAxIGFuZCBQMi4KICAgICAgIEV4 cHJlc3Npb24qIGYxID0gRXhwcmVzc2lvbjo6bWFrZV90ZW1wb3JhcnlfcmVm ZXJlbmNlKHAxLCBibG9jKTsKLSAgICAgIGYxID0gRXhwcmVzc2lvbjo6bWFr ZV91bmFyeShPUEVSQVRPUl9NVUxULCBmMSwgYmxvYyk7CisgICAgICBmMSA9 IEV4cHJlc3Npb246Om1ha2VfZGVyZWZlcmVuY2UoZjEsIEV4cHJlc3Npb246 Ok5JTF9DSEVDS19ERUZBVUxULAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJsb2MpOwogICAgICAgZjEgPSBFeHByZXNzaW9u OjptYWtlX2ZpZWxkX3JlZmVyZW5jZShmMSwgZmllbGRfaW5kZXgsIGJsb2Mp OwogCiAgICAgICBFeHByZXNzaW9uKiBmMiA9IEV4cHJlc3Npb246Om1ha2Vf dGVtcG9yYXJ5X3JlZmVyZW5jZShwMiwgYmxvYyk7Ci0gICAgICBmMiA9IEV4 cHJlc3Npb246Om1ha2VfdW5hcnkoT1BFUkFUT1JfTVVMVCwgZjIsIGJsb2Mp OworICAgICAgZjIgPSBFeHByZXNzaW9uOjptYWtlX2RlcmVmZXJlbmNlKGYy LCBFeHByZXNzaW9uOjpOSUxfQ0hFQ0tfREVGQVVMVCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jKTsKICAgICAgIGYy ID0gRXhwcmVzc2lvbjo6bWFrZV9maWVsZF9yZWZlcmVuY2UoZjIsIGZpZWxk X2luZGV4LCBibG9jKTsKIAogICAgICAgRXhwcmVzc2lvbiogY29uZCA9IEV4 cHJlc3Npb246Om1ha2VfYmluYXJ5KE9QRVJBVE9SX05PVEVRLCBmMSwgZjIs IGJsb2MpOwpAQCAtNzE5MywxMiArNzE5NywxMiBAQCBBcnJheV90eXBlOjp3 cml0ZV9lcXVhbF9mdW5jdGlvbihHb2dvKiBnCiAKICAgLy8gQ29tcGFyZSBl bGVtZW50IGluIFAxIGFuZCBQMi4KICAgRXhwcmVzc2lvbiogZTEgPSBFeHBy ZXNzaW9uOjptYWtlX3RlbXBvcmFyeV9yZWZlcmVuY2UocDEsIGJsb2MpOwot ICBlMSA9IEV4cHJlc3Npb246Om1ha2VfdW5hcnkoT1BFUkFUT1JfTVVMVCwg ZTEsIGJsb2MpOworICBlMSA9IEV4cHJlc3Npb246Om1ha2VfZGVyZWZlcmVu Y2UoZTEsIEV4cHJlc3Npb246Ok5JTF9DSEVDS19ERUZBVUxULCBibG9jKTsK ICAgcmVmID0gRXhwcmVzc2lvbjo6bWFrZV90ZW1wb3JhcnlfcmVmZXJlbmNl KGluZGV4LCBibG9jKTsKICAgZTEgPSBFeHByZXNzaW9uOjptYWtlX2FycmF5 X2luZGV4KGUxLCByZWYsIE5VTEwsIE5VTEwsIGJsb2MpOwogCiAgIEV4cHJl c3Npb24qIGUyID0gRXhwcmVzc2lvbjo6bWFrZV90ZW1wb3JhcnlfcmVmZXJl bmNlKHAyLCBibG9jKTsKLSAgZTIgPSBFeHByZXNzaW9uOjptYWtlX3VuYXJ5 KE9QRVJBVE9SX01VTFQsIGUyLCBibG9jKTsKKyAgZTIgPSBFeHByZXNzaW9u OjptYWtlX2RlcmVmZXJlbmNlKGUyLCBFeHByZXNzaW9uOjpOSUxfQ0hFQ0tf REVGQVVMVCwgYmxvYyk7CiAgIHJlZiA9IEV4cHJlc3Npb246Om1ha2VfdGVt cG9yYXJ5X3JlZmVyZW5jZShpbmRleCwgYmxvYyk7CiAgIGUyID0gRXhwcmVz c2lvbjo6bWFrZV9hcnJheV9pbmRleChlMiwgcmVmLCBOVUxMLCBOVUxMLCBi bG9jKTsKIApAQCAtMTEyMTksNyArMTEyMjMsOCBAQCBUeXBlOjphcHBseV9m aWVsZF9pbmRleGVzKEV4cHJlc3Npb24qIGV4CiAgIGlmIChleHByLT50eXBl KCktPnN0cnVjdF90eXBlKCkgPT0gTlVMTCkKICAgICB7CiAgICAgICBnb19h c3NlcnQoZXhwci0+dHlwZSgpLT5wb2ludHNfdG8oKSAhPSBOVUxMKTsKLSAg ICAgIGV4cHIgPSBFeHByZXNzaW9uOjptYWtlX3VuYXJ5KE9QRVJBVE9SX01V TFQsIGV4cHIsIGxvY2F0aW9uKTsKKyAgICAgIGV4cHIgPSBFeHByZXNzaW9u OjptYWtlX2RlcmVmZXJlbmNlKGV4cHIsIEV4cHJlc3Npb246Ok5JTF9DSEVD S19ERUZBVUxULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbG9jYXRpb24pOwogICAgICAgZ29fYXNzZXJ0KGV4cHItPnR5 cGUoKS0+c3RydWN0X3R5cGUoKSA9PSBzdHlwZSk7CiAgICAgfQogICByZXR1 cm4gRXhwcmVzc2lvbjo6bWFrZV9maWVsZF9yZWZlcmVuY2UoZXhwciwgZmll bGRfaW5kZXhlcy0+ZmllbGRfaW5kZXgsCkBAIC0xMTMyMyw3ICsxMTMyOCw4 IEBAIFR5cGU6OmJpbmRfZmllbGRfb3JfbWV0aG9kKEdvZ28qIGdvZ28sIGMK ICAgICAgICYmIHR5cGUtPnBvaW50c190bygpICE9IE5VTEwKICAgICAgICYm IHR5cGUtPnBvaW50c190bygpLT5wb2ludHNfdG8oKSAhPSBOVUxMKQogICAg IHsKLSAgICAgIGV4cHIgPSBFeHByZXNzaW9uOjptYWtlX3VuYXJ5KE9QRVJB VE9SX01VTFQsIGV4cHIsIGxvY2F0aW9uKTsKKyAgICAgIGV4cHIgPSBFeHBy ZXNzaW9uOjptYWtlX2RlcmVmZXJlbmNlKGV4cHIsIEV4cHJlc3Npb246Ok5J TF9DSEVDS19ERUZBVUxULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbG9jYXRpb24pOwogICAgICAgdHlwZSA9IHR5cGUt PnBvaW50c190bygpOwogICAgICAgaWYgKHR5cGUtPmRlcmVmKCktPmlzX2Vy cm9yX3R5cGUoKSkKIAlyZXR1cm4gRXhwcmVzc2lvbjo6bWFrZV9lcnJvcihs b2NhdGlvbik7CkBAIC0xMTM1Niw4ICsxMTM2Miw5IEBAIFR5cGU6OmJpbmRf ZmllbGRfb3JfbWV0aG9kKEdvZ28qIGdvZ28sIGMKICAgICAgICAgICAgICAg ICAgIHJldHVybiBFeHByZXNzaW9uOjptYWtlX2Vycm9yKGxvY2F0aW9uKTsK ICAgICAgICAgICAgICAgICB9CiAJICAgICAgZ29fYXNzZXJ0KHR5cGUtPnBv aW50c190bygpICE9IE5VTEwpOwotCSAgICAgIGV4cHIgPSBFeHByZXNzaW9u OjptYWtlX3VuYXJ5KE9QRVJBVE9SX01VTFQsIGV4cHIsCi0JCQkJCSAgICBs b2NhdGlvbik7CisgICAgICAgICAgICAgIGV4cHIgPSBFeHByZXNzaW9uOjpt YWtlX2RlcmVmZXJlbmNlKGV4cHIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cHJlc3Npb246Ok5JTF9D SEVDS19ERUZBVUxULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbik7CiAJICAgICAgZ29fYXNz ZXJ0KGV4cHItPnR5cGUoKS0+c3RydWN0X3R5cGUoKSA9PSBzdCk7CiAJICAg IH0KIAkgIHJldCA9IHN0LT5maWVsZF9yZWZlcmVuY2UoZXhwciwgbmFtZSwg bG9jYXRpb24pOwpJbmRleDogZ2NjL2dvL2dvZnJvbnRlbmQvd2IuY2MKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2dvL2dvZnJvbnRlbmQvd2Iu Y2MJKHJldmlzaW9uIDI1NDc0OCkKKysrIGdjYy9nby9nb2Zyb250ZW5kL3di LmNjCSh3b3JraW5nIGNvcHkpCkBAIC00MTcsNyArNDE3LDggQEAgR29nbzo6 YXNzaWduX3dpdGhfd3JpdGVfYmFycmllcihGdW5jdGlvbgogICAgICAgcmhz ID0gRXhwcmVzc2lvbjo6bWFrZV90ZW1wb3JhcnlfcmVmZXJlbmNlKHJoc190 ZW1wLCBsb2MpOwogICAgIH0KIAotICBFeHByZXNzaW9uKiBpbmRpciA9IEV4 cHJlc3Npb246Om1ha2VfdW5hcnkoT1BFUkFUT1JfTVVMVCwgbGhzLCBsb2Mp OworICBFeHByZXNzaW9uKiBpbmRpciA9CisgICAgICBFeHByZXNzaW9uOjpt YWtlX2RlcmVmZXJlbmNlKGxocywgRXhwcmVzc2lvbjo6TklMX0NIRUNLX0RF RkFVTFQsIGxvYyk7CiAgIFN0YXRlbWVudCogYXNzaWduID0gU3RhdGVtZW50 OjptYWtlX2Fzc2lnbm1lbnQoaW5kaXIsIHJocywgbG9jKTsKIAogICBsaHMg PSBFeHByZXNzaW9uOjptYWtlX3RlbXBvcmFyeV9yZWZlcmVuY2UobGhzX3Rl bXAsIGxvYyk7Cg== --f403045c27ceba0cc6055f4f95f4--