<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>32076</bug_id>
          
          <creation_ts>2009-12-02 11:04:09 -0800</creation_ts>
          <short_desc>Web Inspector: Simplify the settings support in inspector controller.</short_desc>
          <delta_ts>2009-12-03 04:47:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>168072</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-02 11:04:09 -0800</bug_when>
    <thetext>Looks like majority of the settings are going to be related to the frontend. i was thinking that we could leave only string name/value pairs as settings for inspector controller and serialize rest into json on the frontend side. That way we have nice structured settings with no custom serializers in frontend, have basic support for name/value settings on inspector controller side and have no native serialization code for different platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168129</commentid>
    <comment_count>1</comment_count>
      <attachid>44174</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-02 12:54:10 -0800</bug_when>
    <thetext>Created attachment 44174
[PATCH] Proposed change

This change makes everything String. It supports reading boolean properties from the legacy store in order to properly handle debugger/profiles/resources enabled state. However, it does not read numbers properly - users will lose preferred attached height once migrated (only once). I think it is reasonable compromise given that all supporting code can be deleted...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168155</commentid>
    <comment_count>2</comment_count>
      <attachid>44174</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-02 14:02:07 -0800</bug_when>
    <thetext>Comment on attachment 44174
[PATCH] Proposed change

I&apos;d like to land this manually after I test gtk build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168363</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-03 04:47:29 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	A	LayoutTests/inspector/settings-set-get-expected.txt
	A	LayoutTests/inspector/settings-set-get.html
	M	WebCore/ChangeLog
	M	WebCore/WebCore.Inspector.exp
	M	WebCore/bindings/js/JSInspectorFrontendHostCustom.cpp
	M	WebCore/bindings/v8/custom/V8InspectorFrontendHostCustom.cpp
	M	WebCore/inspector/InspectorClient.h
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/InspectorController.h
	M	WebCore/inspector/InspectorFrontendHost.cpp
	M	WebCore/inspector/InspectorFrontendHost.h
	M	WebCore/inspector/InspectorFrontendHost.idl
	M	WebCore/loader/EmptyClients.h
	M	WebKit/cf/ChangeLog
	M	WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp
	M	WebKit/chromium/ChangeLog
	M	WebKit/chromium/src/InspectorClientImpl.cpp
	M	WebKit/chromium/src/InspectorClientImpl.h
	M	WebKit/gtk/ChangeLog
	M	WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp
	M	WebKit/gtk/WebCoreSupport/InspectorClientGtk.h
	M	WebKit/haiku/ChangeLog
	M	WebKit/haiku/WebCoreSupport/InspectorClientHaiku.cpp
	M	WebKit/haiku/WebCoreSupport/InspectorClientHaiku.h
	M	WebKit/mac/ChangeLog
	M	WebKit/mac/WebCoreSupport/WebInspectorClient.h
	M	WebKit/mac/WebCoreSupport/WebInspectorClient.mm
	M	WebKit/qt/ChangeLog
	M	WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
	M	WebKit/qt/WebCoreSupport/InspectorClientQt.h
	M	WebKit/win/ChangeLog
	M	WebKit/win/WebCoreSupport/WebInspectorClient.cpp
	M	WebKit/win/WebCoreSupport/WebInspectorClient.h
	M	WebKit/wx/ChangeLog
	M	WebKit/wx/WebKitSupport/InspectorClientWx.cpp
	M	WebKit/wx/WebKitSupport/InspectorClientWx.h
Committed r51631</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44174</attachid>
            <date>2009-12-02 12:54:10 -0800</date>
            <delta_ts>2009-12-02 14:02:06 -0800</delta_ts>
            <desc>[PATCH] Proposed change</desc>
            <filename>simple_settings</filename>
            <type>text/plain</type>
            <size>57180</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNGQzNmU3Li5mOTYyOGM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTYgQEAKIDIwMDktMTIt
MDIgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBkaGNwLTE3Mi0yOC0xNzQtMjIwLnNwYi5jb3Jw
Lmdvb2dsZS5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogU2ltcGxpZnkgdGhlIHNldHRpbmdzIHN1cHBvcnQgaW4gaW5z
cGVjdG9yIGNvbnRyb2xsZXIuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMyMDc2CisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2V0dGluZ3Mtc2V0LWdl
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc2V0dGluZ3Mtc2V0LWdldC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorCisyMDA5LTEyLTAyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5A
ZGhjcC0xNzItMjgtMTc0LTIyMC5zcGIuY29ycC5nb29nbGUuY29tPgorCiAgICAgICAgIFJldmll
d2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBET00gdHJl
ZSBzZWxlY3Rpb24gZGlzYXBwZWFycyB1cG9uIHBhZ2UgcmVmcmVzaC4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9zZXR0aW5ncy1zZXQtZ2V0LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9zZXR0aW5ncy1zZXQtZ2V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWM5NjQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3NldHRpbmdzLXNldC1nZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNSBAQAorVGVzdHMgZnJvbnQtZW5kIHNldHRpbmdzIHJlYWQvd3JpdGUuCisKK1NldHRpbmcg
c2hvdWxkIGhhdmUgJ2JhcicgdmFsdWUsIHdhczogJ2JhcicKK1NldHRpbmcgc2hvdWxkIGhhdmUg
J2JheicgdmFsdWUsIHdhczogJ2JheicKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3NldHRpbmdzLXNldC1nZXQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zZXR0aW5n
cy1zZXQtZ2V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM0MWQ3
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zZXR0aW5ncy1zZXQt
Z2V0Lmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJp
bnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBkb2l0KCkK
K3sKKyAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9zZXRTZXR0aW5nKCdmb28n
LCAnYmFyJykiKTsKKyAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCisgICAgeworICAgICAg
ICBvdXRwdXQoIlNldHRpbmcgc2hvdWxkIGhhdmUgJ2JhcicgdmFsdWUsIHdhczogJyIgKyByZXN1
bHQgKyAiJyIpOworICAgIH0KKyAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9z
ZXR0aW5nKCdmb28nKSIsIGNhbGxiYWNrKTsKKworICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3Io
ImZyb250ZW5kX3NldFNldHRpbmcoJ2ZvbycsICdiYXonKSIpOworICAgIGZ1bmN0aW9uIGNhbGxi
YWNrMihyZXN1bHQpCisgICAgeworICAgICAgICBvdXRwdXQoIlNldHRpbmcgc2hvdWxkIGhhdmUg
J2JheicgdmFsdWUsIHdhczogJyIgKyByZXN1bHQgKyAiJyIpOworICAgICAgICBub3RpZnlEb25l
KCk7CisgICAgfQorICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3NldHRpbmco
J2ZvbycpIiwgY2FsbGJhY2syKTsKK30KKworLy8gRnJvbnRlbmQgZnVuY3Rpb25zLgorCitmdW5j
dGlvbiBmcm9udGVuZF9zZXRTZXR0aW5nKGtleSwgdmFsdWUpCit7CisgICAgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LnNldFNldHRpbmcoa2V5LCB2YWx1ZSk7Cit9CisKK2Z1bmN0aW9uIGZyb250ZW5k
X3NldHRpbmcoa2V5KQoreworICAgIHJldHVybiBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2V0dGlu
ZyhrZXkpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJvbmxvYWQo
KSI+Cis8cCBpZD0idGVzdC10b3BpYyI+CitUZXN0cyBmcm9udC1lbmQgc2V0dGluZ3MgcmVhZC93
cml0ZS4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZTI3MjEzLi5mZWJhMTg5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDQ2IEBACiAyMDA5LTEyLTAyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZGhjcC0xNzItMjgt
MTc0LTIyMC5zcGIuY29ycC5nb29nbGUuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNpbXBsaWZ5IHRoZSBzZXR0aW5n
cyBzdXBwb3J0IGluIGluc3BlY3RvciBjb250cm9sbGVyLgorICAgICAgICAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMDc2CisKKyAgICAgICAgVGVz
dDogaW5zcGVjdG9yL3NldHRpbmdzLXNldC1nZXQuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5J
bnNwZWN0b3IuZXhwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRI
b3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JG
cm9udGVuZEhvc3RDdXN0b20uY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVjdG9yQ29udHJvbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZXR0aW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNldFNldHRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0V2luZG93VmlzaWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjphdHRhY2hXaW5kb3cpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcmVMYXN0QWN0aXZlUGFu
ZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2NyaXB0T2JqZWN0
UmVhZHkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvd1dpbmRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVSZXNvdXJj
ZVRyYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Fi
bGVSZXNvdXJjZVRyYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OmVuc3VyZVJlc291cmNlVHJhY2tpbmdTZXR0aW5nc0xvYWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVQcm9maWxlcik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNhYmxlUHJvZmlsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5hYmxlRGVidWdnZXJGcm9tRnJvbnRlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzYWJsZURlYnVnZ2VyKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmRIb3N0OjpzZXR0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kSG9zdDo6c2V0U2V0dGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhv
c3QuaWRsOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVtcHR5SW5zcGVjdG9yQ2xpZW50Ojpwb3B1bGF0ZVNldHRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlJbnNwZWN0b3JDbGllbnQ6OnN0b3JlU2V0dGluZyk6CisKKzIwMDktMTItMDIg
IFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBkaGNwLTE3Mi0yOC0xNzQtMjIwLnNwYi5jb3JwLmdv
b2dsZS5jb20+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IERPTSB0cmVlIHNlbGVjdGlvbiBkaXNhcHBlYXJzIHVwb24gcGFn
ZSByZWZyZXNoLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLkluc3BlY3Rvci5leHAgYi9X
ZWJDb3JlL1dlYkNvcmUuSW5zcGVjdG9yLmV4cAppbmRleCAwMDA1OTRkLi4zNzliN2EyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuSW5zcGVjdG9yLmV4cAorKysgYi9XZWJDb3JlL1dlYkNv
cmUuSW5zcGVjdG9yLmV4cApAQCAtMSw0ICsxLDQgQEAKLV9fWk43V2ViQ29yZTE5SW5zcGVjdG9y
Q29udHJvbGxlcjEwc2V0U2V0dGluZ0VSS05TXzZTdHJpbmdFUktOUzBfN1NldHRpbmdFCitfX1pO
N1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxMHNldFNldHRpbmdFUktOU182U3RyaW5nRVMz
XwogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTJhdHRhY2hXaW5kb3dFdgogX19a
TjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTJkZXRhY2hXaW5kb3dFdgogX19aTjdXZWJD
b3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTRlbmFibGVEZWJ1Z2dlckV2CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCmluZGV4
IDViNDQxMzQuLjU2Zjg1ZWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNw
ZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCkBAIC04OSw4OCArODksNiBAQCBKU1ZhbHVl
IEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzZWFyY2goRXhlY1N0YXRlKiBleGVjLCBjb25zdCBB
cmdMaXN0JiBhcmdzKQogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCByZXN1bHQpOwog
fQogCi1KU1ZhbHVlIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzZXR0aW5nKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKLXsKLSAgICBpZiAoYXJncy5zaXplKCkgPCAxKQot
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIFN0cmluZyBrZXkgPSBhcmdzLmF0
KDApLnRvU3RyaW5nKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9
IGltcGwoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgIGlmICghaWMpCi0gICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwotICAgIGNvbnN0IEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRp
bmcmIHNldHRpbmcgPSBpYy0+c2V0dGluZyhrZXkpOwotCi0gICAgc3dpdGNoIChzZXR0aW5nLnR5
cGUoKSkgewotICAgICAgICBkZWZhdWx0OgotICAgICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xs
ZXI6OlNldHRpbmc6Ok5vVHlwZToKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
ICAgICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OlN0cmluZ1R5cGU6Ci0g
ICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgc2V0dGluZy5zdHJpbmcoKSk7Ci0gICAg
ICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6RG91YmxlVHlwZToKLSAgICAg
ICAgICAgIHJldHVybiBqc051bWJlcihleGVjLCBzZXR0aW5nLmRvdWJsZVZhbHVlKCkpOwotICAg
ICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OkludGVnZXJUeXBlOgotICAg
ICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHNldHRpbmcuaW50ZWdlclZhbHVlKCkpOwot
ICAgICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OkJvb2xlYW5UeXBlOgot
ICAgICAgICAgICAgcmV0dXJuIGpzQm9vbGVhbihzZXR0aW5nLmJvb2xlYW5WYWx1ZSgpKTsKLSAg
ICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpTdHJpbmdWZWN0b3JUeXBl
OiB7Ci0gICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBzdHJpbmdzQXJyYXk7Ci0gICAg
ICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5ncyA9IHNldHRpbmcuc3RyaW5nVmVj
dG9yKCk7Ci0gICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmdzLnNpemUo
KTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgICAgICBzdHJpbmdzQXJyYXkuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIHN0cmluZ3Nb
aV0pKTsKLSAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCBzdHJpbmdzQXJy
YXkpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1KU1ZhbHVlIEpTSW5zcGVjdG9yRnJvbnRlbmRI
b3N0OjpzZXRTZXR0aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKLXsK
LSAgICBpZiAoYXJncy5zaXplKCkgPCAyKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
LQotICAgIFN0cmluZyBrZXkgPSBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpOwotICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAg
ICBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nIHNldHRpbmc7Ci0KLSAgICBKU1ZhbHVlIHZh
bHVlID0gYXJncy5hdCgxKTsKLSAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSB8fCB2YWx1ZS5p
c051bGwoKSkgewotICAgICAgICAvLyBEbyBub3RoaW5nLiBUaGUgc2V0dGluZyBpcyBhbHJlYWR5
IE5vVHlwZS4KLSAgICAgICAgQVNTRVJUKHNldHRpbmcudHlwZSgpID09IEluc3BlY3RvckNvbnRy
b2xsZXI6OlNldHRpbmc6Ok5vVHlwZSk7Ci0gICAgfSBlbHNlIGlmICh2YWx1ZS5pc1N0cmluZygp
KQotICAgICAgICBzZXR0aW5nLnNldCh2YWx1ZS50b1N0cmluZyhleGVjKSk7Ci0gICAgZWxzZSBp
ZiAodmFsdWUuaXNOdW1iZXIoKSkKLSAgICAgICAgc2V0dGluZy5zZXQodmFsdWUudG9OdW1iZXIo
ZXhlYykpOwotICAgIGVsc2UgaWYgKHZhbHVlLmlzQm9vbGVhbigpKQotICAgICAgICBzZXR0aW5n
LnNldCh2YWx1ZS50b0Jvb2xlYW4oZXhlYykpOwotICAgIGVsc2UgewotICAgICAgICBKU0FycmF5
KiBqc0FycmF5ID0gYXNBcnJheSh2YWx1ZSk7Ci0gICAgICAgIGlmICghanNBcnJheSkKLSAgICAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICBWZWN0b3I8U3RyaW5nPiBzdHJp
bmdzOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwganNBcnJheS0+bGVuZ3RoKCk7
ICsraSkgewotICAgICAgICAgICAgU3RyaW5nIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSku
dG9TdHJpbmcoZXhlYyk7Ci0gICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgICAgICAgICBzdHJpbmdz
LmFwcGVuZChpdGVtKTsKLSAgICAgICAgfQotICAgICAgICBzZXR0aW5nLnNldChzdHJpbmdzKTsK
LSAgICB9Ci0KLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwotCi0gICAgSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbXBsKCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpZiAoaWMpCi0gICAgICAgIGljLT5zZXRTZXR0aW5n
KGtleSwgc2V0dGluZyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3Vz
dG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRI
b3N0Q3VzdG9tLmNwcAppbmRleCAwOGNiODg5Li5hZmJkOWFjIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0
b20uY3BwCkBAIC04NCw4NyArODQsNCBAQCBDQUxMQkFDS19GVU5DX0RFQ0woSW5zcGVjdG9yRnJv
bnRlbmRIb3N0U2VhcmNoKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUNBTExCQUNLX0ZVTkNf
REVDTChJbnNwZWN0b3JGcm9udGVuZEhvc3RTZXR0aW5nKQotewotICAgIElOQ19TVEFUUygiSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LnNldHRpbmcoKSIpOwotCi0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PCAxKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgU3RyaW5nIGtleSA9
IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2soYXJnc1swXSk7Ci0gICAgaWYgKGtleS5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBJbnNwZWN0b3JG
cm9udGVuZEhvc3QqIGluc3BlY3Rvckhvc3QgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2
ZU9iamVjdDxJbnNwZWN0b3JGcm9udGVuZEhvc3Q+KFY4Q2xhc3NJbmRleDo6SU5TUEVDVE9SRlJP
TlRFTkRIT1NULCBhcmdzLkhvbGRlcigpKTsKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9
IGluc3BlY3Rvckhvc3QtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpZiAoIWljKQotICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgIGNvbnN0IEluc3BlY3RvckNvbnRyb2xs
ZXI6OlNldHRpbmcmIHNldHRpbmcgPSBpYy0+c2V0dGluZyhrZXkpOwotCi0gICAgc3dpdGNoIChz
ZXR0aW5nLnR5cGUoKSkgewotICAgICAgICBkZWZhdWx0OgotICAgICAgICBjYXNlIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OlNldHRpbmc6Ok5vVHlwZToKLSAgICAgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7Ci0gICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6U3Ry
aW5nVHlwZToKLSAgICAgICAgICAgIHJldHVybiB2OFN0cmluZyhzZXR0aW5nLnN0cmluZygpKTsK
LSAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpEb3VibGVUeXBlOgot
ICAgICAgICAgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5ldyhzZXR0aW5nLmRvdWJsZVZhbHVlKCkp
OwotICAgICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OkludGVnZXJUeXBl
OgotICAgICAgICAgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5ldyhzZXR0aW5nLmludGVnZXJWYWx1
ZSgpKTsKLSAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpCb29sZWFu
VHlwZToKLSAgICAgICAgICAgIHJldHVybiB2OEJvb2xlYW4oc2V0dGluZy5ib29sZWFuVmFsdWUo
KSk7Ci0gICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6U3RyaW5nVmVj
dG9yVHlwZTogewotICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0cmluZ3MgPSBz
ZXR0aW5nLnN0cmluZ1ZlY3RvcigpOwotICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4g
c3RyaW5nc0FycmF5ID0gdjg6OkFycmF5OjpOZXcoc3RyaW5ncy5zaXplKCkpOwotICAgICAgICAg
ICAgY29uc3QgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5ncy5zaXplKCk7Ci0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgc3Ry
aW5nc0FycmF5LT5TZXQodjg6Ok51bWJlcjo6TmV3KGkpLCB2OFN0cmluZyhzdHJpbmdzW2ldKSk7
Ci0gICAgICAgICAgICByZXR1cm4gc3RyaW5nc0FycmF5OwotICAgICAgICB9Ci0gICAgfQotfQot
Ci1DQUxMQkFDS19GVU5DX0RFQ0woSW5zcGVjdG9yRnJvbnRlbmRIb3N0U2V0U2V0dGluZykKLXsK
LSAgICBJTkNfU1RBVFMoIkluc3BlY3RvckZyb250ZW5kSG9zdC5zZXRTZXR0aW5nKCkiKTsKLSAg
ICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
Ci0KLSAgICBTdHJpbmcga2V5ID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayhhcmdzWzBd
KTsKLSAgICBpZiAoa2V5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKLQotICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcgc2V0dGluZzsKLQotICAgIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlID0gYXJnc1sxXTsKLSAgICBpZiAodmFsdWUtPklzVW5k
ZWZpbmVkKCkgfHwgdmFsdWUtPklzTnVsbCgpKSB7Ci0gICAgICAgIC8vIERvIG5vdGhpbmcuIFRo
ZSBzZXR0aW5nIGlzIGFscmVhZHkgTm9UeXBlLgotICAgICAgICBBU1NFUlQoc2V0dGluZy50eXBl
KCkgPT0gSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6Tm9UeXBlKTsKLSAgICB9IGVsc2Ug
aWYgKHZhbHVlLT5Jc1N0cmluZygpKQotICAgICAgICBzZXR0aW5nLnNldCh0b1dlYkNvcmVTdHJp
bmdXaXRoTnVsbENoZWNrKHZhbHVlKSk7Ci0gICAgZWxzZSBpZiAodmFsdWUtPklzTnVtYmVyKCkp
Ci0gICAgICAgIHNldHRpbmcuc2V0KHZhbHVlLT5OdW1iZXJWYWx1ZSgpKTsKLSAgICBlbHNlIGlm
ICh2YWx1ZS0+SXNCb29sZWFuKCkpCi0gICAgICAgIHNldHRpbmcuc2V0KHZhbHVlLT5Cb29sZWFu
VmFsdWUoKSk7Ci0gICAgZWxzZSBpZiAodmFsdWUtPklzQXJyYXkoKSkgewotICAgICAgICB2ODo6
TG9jYWw8djg6OkFycmF5PiB2OEFycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46OkNhc3QodmFs
dWUpOwotICAgICAgICBWZWN0b3I8U3RyaW5nPiBzdHJpbmdzOwotICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgdjhBcnJheS0+TGVuZ3RoKCk7ICsraSkgewotICAgICAgICAgICAgU3Ry
aW5nIGl0ZW0gPSB0b1dlYkNvcmVTdHJpbmcodjhBcnJheS0+R2V0KHY4OjpJbnRlZ2VyOjpOZXco
aSkpKTsKLSAgICAgICAgICAgIGlmIChpdGVtLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgICAgICAgICAgc3RyaW5ncy5hcHBlbmQoaXRlbSk7
Ci0gICAgICAgIH0KLSAgICAgICAgc2V0dGluZy5zZXQoc3RyaW5ncyk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBJbnNwZWN0b3JGcm9udGVuZEhv
c3QqIGluc3BlY3Rvckhvc3QgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxJ
bnNwZWN0b3JGcm9udGVuZEhvc3Q+KFY4Q2xhc3NJbmRleDo6SU5TUEVDVE9SRlJPTlRFTkRIT1NU
LCBhcmdzLkhvbGRlcigpKTsKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGluc3BlY3Rv
ckhvc3QtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpZiAoaWMpCi0gICAgICAgIGluc3Bl
Y3Rvckhvc3QtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0U2V0dGluZyhrZXksIHNldHRpbmcp
OwotCi0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCBmOTY2NjJhLi5lNDQ4Y2Qy
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtNTksOSArNTksOCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcm
IG5ld1VSTCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBT
dHJpbmcmIGtleSwgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBJbnNwZWN0b3JD
b250cm9sbGVyOjpTZXR0aW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTZXR0aW5n
KGNvbnN0IFN0cmluZyYga2V5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGlu
Zyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JXaW5kb3dPYmplY3RDbGVhcmVkKCkgPSAw
OwogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYjg2
ZWRhMy4uYzI2OTgyNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKQEAgLTEyMSw3ICsxMjEsNiBAQCBzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bUF0dGFjaGVk
SGVpZ2h0ID0gMjUwLjBmOwogc3RhdGljIGNvbnN0IGZsb2F0IG1heGltdW1BdHRhY2hlZEhlaWdo
dFJhdGlvID0gMC43NWY7CiAKIHN0YXRpYyB1bnNpZ25lZCBzX2luc3BlY3RvckNvbnRyb2xsZXJD
b3VudDsKLXN0YXRpYyBIYXNoTWFwPFN0cmluZywgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGlu
Zyo+KiBzX3NldHRpbmdDYWNoZTsKIAogSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29u
dHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAgICA6IG1faW5z
cGVjdGVkUGFnZShwYWdlKQpAQCAtMTY4LDEyICsxNjcsNiBAQCBJbnNwZWN0b3JDb250cm9sbGVy
Ojp+SW5zcGVjdG9yQ29udHJvbGxlcigpCiAgICAgQVNTRVJUKHNfaW5zcGVjdG9yQ29udHJvbGxl
ckNvdW50KTsKICAgICAtLXNfaW5zcGVjdG9yQ29udHJvbGxlckNvdW50OwogCi0gICAgaWYgKCFz
X2luc3BlY3RvckNvbnRyb2xsZXJDb3VudCAmJiBzX3NldHRpbmdDYWNoZSkgewotICAgICAgICBk
ZWxldGVBbGxWYWx1ZXMoKnNfc2V0dGluZ0NhY2hlKTsKLSAgICAgICAgZGVsZXRlIHNfc2V0dGlu
Z0NhY2hlOwotICAgICAgICBzX3NldHRpbmdDYWNoZSA9IDA7Ci0gICAgfQotICAgIAogICAgIHJl
bGVhc2VET01BZ2VudCgpOwogCiAgICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5kaXNjb25uZWN0Q29u
dHJvbGxlcigpOwpAQCAtMjA0LDQ2ICsxOTcsMjIgQEAgYm9vbCBJbnNwZWN0b3JDb250cm9sbGVy
OjplbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9pbnNwZWN0ZWRQYWdlLT5zZXR0aW5ncygp
LT5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCk7CiB9CiAKLWNvbnN0IEluc3BlY3RvckNvbnRyb2xs
ZXI6OlNldHRpbmcmIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldHRpbmcoY29uc3QgU3RyaW5nJiBr
ZXkpIGNvbnN0CitTdHJpbmcgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0dGluZyhjb25zdCBTdHJp
bmcmIGtleSkgY29uc3QKIHsKLSAgICBpZiAoIXNfc2V0dGluZ0NhY2hlKQotICAgICAgICBzX3Nl
dHRpbmdDYWNoZSA9IG5ldyBIYXNoTWFwPFN0cmluZywgU2V0dGluZyo+OwotCi0gICAgaWYgKFNl
dHRpbmcqIGNhY2hlZFNldHRpbmcgPSBzX3NldHRpbmdDYWNoZS0+Z2V0KGtleSkpCi0gICAgICAg
IHJldHVybiAqY2FjaGVkU2V0dGluZzsKLQotICAgIFNldHRpbmcqIG5ld1NldHRpbmcgPSBuZXcg
U2V0dGluZzsKLSAgICBzX3NldHRpbmdDYWNoZS0+c2V0KGtleSwgbmV3U2V0dGluZyk7Ci0KLSAg
ICBtX2NsaWVudC0+cG9wdWxhdGVTZXR0aW5nKGtleSwgKm5ld1NldHRpbmcpOworICAgIFNldHRp
bmdzOjppdGVyYXRvciBpdCA9IG1fc2V0dGluZ3MuZmluZChrZXkpOworICAgIGlmIChpdCAhPSBt
X3NldHRpbmdzLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKIAotICAgIHJldHVy
biAqbmV3U2V0dGluZzsKKyAgICBTdHJpbmcgdmFsdWU7CisgICAgbV9jbGllbnQtPnBvcHVsYXRl
U2V0dGluZyhrZXksICZ2YWx1ZSk7CisgICAgbV9zZXR0aW5ncy5zZXQoa2V5LCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldFNldHRp
bmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFNldHRpbmcmIHNldHRpbmcpCit2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnNldFNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7Ci0gICAgaWYgKHNldHRpbmcudHlwZSgpID09IFNldHRpbmc6Ok5vVHlwZSkg
ewotICAgICAgICBpZiAoc19zZXR0aW5nQ2FjaGUpIHsKLSAgICAgICAgICAgIFNldHRpbmcqIGNh
Y2hlZFNldHRpbmcgPSBzX3NldHRpbmdDYWNoZS0+Z2V0KGtleSk7Ci0gICAgICAgICAgICBpZiAo
Y2FjaGVkU2V0dGluZykgewotICAgICAgICAgICAgICAgIHNfc2V0dGluZ0NhY2hlLT5yZW1vdmUo
a2V5KTsKLSAgICAgICAgICAgICAgICBkZWxldGUgY2FjaGVkU2V0dGluZzsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIG1fY2xpZW50LT5yZW1vdmVTZXR0aW5nKGtleSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXNfc2V0dGluZ0NhY2hlKQotICAgICAg
ICBzX3NldHRpbmdDYWNoZSA9IG5ldyBIYXNoTWFwPFN0cmluZywgU2V0dGluZyo+OwotCi0gICAg
aWYgKFNldHRpbmcqIGNhY2hlZFNldHRpbmcgPSBzX3NldHRpbmdDYWNoZS0+Z2V0KGtleSkpCi0g
ICAgICAgICpjYWNoZWRTZXR0aW5nID0gc2V0dGluZzsKLSAgICBlbHNlCi0gICAgICAgIHNfc2V0
dGluZ0NhY2hlLT5zZXQoa2V5LCBuZXcgU2V0dGluZyhzZXR0aW5nKSk7Ci0KLSAgICBtX2NsaWVu
dC0+c3RvcmVTZXR0aW5nKGtleSwgc2V0dGluZyk7CisgICAgbV9zZXR0aW5ncy5zZXQoa2V5LCB2
YWx1ZSk7CisgICAgbV9jbGllbnQtPnN0b3JlU2V0dGluZyhrZXksIHZhbHVlKTsKIH0KIAogLy8g
VHJ5aW5nIHRvIGluc3BlY3Qgc29tZXRoaW5nIGluIGEgZnJhbWUgd2l0aCBKYXZhU2NyaXB0IGRp
c2FibGVkIHdvdWxkIGxhdGVyIGxlYWQgdG8KQEAgLTMyMywxMSArMjkyLDggQEAgdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpzZXRXaW5kb3dWaXNpYmxlKGJvb2wgdmlzaWJsZSwgYm9vbCBhdHRh
Y2hlZCkKICAgICAgICAgcG9wdWxhdGVTY3JpcHRPYmplY3RzKCk7CiAKICAgICAgICAgaWYgKG1f
c2hvd0FmdGVyVmlzaWJsZSA9PSBDdXJyZW50UGFuZWwpIHsKLSAgICAgICAgICBTZXR0aW5nIGxh
c3RBY3RpdmVQYW5lbFNldHRpbmcgPSBzZXR0aW5nKGxhc3RBY3RpdmVQYW5lbFNldHRpbmdOYW1l
KTsKLSAgICAgICAgICBpZiAobGFzdEFjdGl2ZVBhbmVsU2V0dGluZy50eXBlKCkgPT0gU2V0dGlu
Zzo6U3RyaW5nVHlwZSkKLSAgICAgICAgICAgICAgbV9zaG93QWZ0ZXJWaXNpYmxlID0gc3BlY2lh
bFBhbmVsRm9ySlNOYW1lKGxhc3RBY3RpdmVQYW5lbFNldHRpbmcuc3RyaW5nKCkpOwotICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgbV9zaG93QWZ0ZXJWaXNpYmxlID0gRWxlbWVudHNQYW5l
bDsKKyAgICAgICAgICBTdHJpbmcgbGFzdEFjdGl2ZVBhbmVsU2V0dGluZyA9IHNldHRpbmcobGFz
dEFjdGl2ZVBhbmVsU2V0dGluZ05hbWUpOworICAgICAgICAgIG1fc2hvd0FmdGVyVmlzaWJsZSA9
IHNwZWNpYWxQYW5lbEZvckpTTmFtZShsYXN0QWN0aXZlUGFuZWxTZXR0aW5nKTsKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChtX25vZGVUb0ZvY3VzKQpAQCAtNDM5LDggKzQwNSwxMCBAQCB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmF0dGFjaFdpbmRvdygpCiAKICAgICBtX2NsaWVudC0+YXR0
YWNoV2luZG93KCk7CiAKLSAgICBTZXR0aW5nIGF0dGFjaGVkSGVpZ2h0ID0gc2V0dGluZyhpbnNw
ZWN0b3JBdHRhY2hlZEhlaWdodE5hbWUpOwotICAgIHVuc2lnbmVkIHByZWZlcnJlZEhlaWdodCA9
IGF0dGFjaGVkSGVpZ2h0LnR5cGUoKSA9PSBTZXR0aW5nOjpJbnRlZ2VyVHlwZSA/IGF0dGFjaGVk
SGVpZ2h0LmludGVnZXJWYWx1ZSgpIDogZGVmYXVsdEF0dGFjaGVkSGVpZ2h0OworICAgIFN0cmlu
ZyBhdHRhY2hlZEhlaWdodCA9IHNldHRpbmcoaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHROYW1lKTsK
KyAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOworICAgIGludCBoZWlnaHQgPSBhdHRhY2hlZEhlaWdo
dC50b0ludCgmc3VjY2Vzcyk7CisgICAgdW5zaWduZWQgcHJlZmVycmVkSGVpZ2h0ID0gc3VjY2Vz
cyA/IGhlaWdodCA6IGRlZmF1bHRBdHRhY2hlZEhlaWdodDsKIAogICAgIC8vIFdlIG5lZWQgdG8g
Y29uc3RyYWluIHRoZSB3aW5kb3cgaGVpZ2h0IGhlcmUgaW4gY2FzZSB0aGUgdXNlciBoYXMgcmVz
aXplZCB0aGUgaW5zcGVjdGVkIHBhZ2UncyB3aW5kb3cgc28gdGhhdAogICAgIC8vIHRoZSB1c2Vy
J3MgcHJlZmVycmVkIGhlaWdodCB3b3VsZCBiZSB0b28gYmlnIHRvIGRpc3BsYXkuCkBAIC00NzAs
MTQgKzQzOCwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEF0dGFjaGVkV2luZG93
SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKICAgICB1bnNpZ25lZCB0b3RhbEhlaWdodCA9IG1fcGFn
ZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+dmlzaWJsZUhlaWdodCgpICsgbV9pbnNwZWN0ZWRQYWdl
LT5tYWluRnJhbWUoKS0+dmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CiAgICAgdW5zaWduZWQgYXR0
YWNoZWRIZWlnaHQgPSBjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCwgdG90
YWxIZWlnaHQpOwogICAgIAotICAgIHNldFNldHRpbmcoaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHRO
YW1lLCBTZXR0aW5nKGF0dGFjaGVkSGVpZ2h0KSk7CisgICAgc2V0U2V0dGluZyhpbnNwZWN0b3JB
dHRhY2hlZEhlaWdodE5hbWUsIFN0cmluZzo6bnVtYmVyKGF0dGFjaGVkSGVpZ2h0KSk7CiAgICAg
CiAgICAgbV9jbGllbnQtPnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGF0dGFjaGVkSGVpZ2h0KTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9yZUxhc3RBY3RpdmVQYW5lbChjb25z
dCBTdHJpbmcmIHBhbmVsTmFtZSkKIHsKLSAgICBzZXRTZXR0aW5nKGxhc3RBY3RpdmVQYW5lbFNl
dHRpbmdOYW1lLCBTZXR0aW5nKHBhbmVsTmFtZSkpOworICAgIHNldFNldHRpbmcobGFzdEFjdGl2
ZVBhbmVsU2V0dGluZ05hbWUsIHBhbmVsTmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6dG9nZ2xlU2VhcmNoRm9yTm9kZUluUGFnZSgpCkBAIC01NDksMTEgKzUxNywxMSBAQCB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNjcmlwdE9iamVjdFJlYWR5KCkKICAgICBzZXRGcm9u
dGVuZFByb3h5T2JqZWN0KG1fc2NyaXB0U3RhdGUsIHdlYkluc3BlY3Rvck9iaiwgaW5qZWN0ZWRT
Y3JpcHRPYmopOwogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgU2V0dGlu
ZyBkZWJ1Z2dlckVuYWJsZWQgPSBzZXR0aW5nKGRlYnVnZ2VyRW5hYmxlZFNldHRpbmdOYW1lKTsK
LSAgICBpZiAoZGVidWdnZXJFbmFibGVkLnR5cGUoKSA9PSBTZXR0aW5nOjpCb29sZWFuVHlwZSAm
JiBkZWJ1Z2dlckVuYWJsZWQuYm9vbGVhblZhbHVlKCkpCisgICAgU3RyaW5nIGRlYnVnZ2VyRW5h
YmxlZCA9IHNldHRpbmcoZGVidWdnZXJFbmFibGVkU2V0dGluZ05hbWUpOworICAgIGlmIChkZWJ1
Z2dlckVuYWJsZWQgPT0gInRydWUiKQogICAgICAgICBlbmFibGVEZWJ1Z2dlcigpOwotICAgIFNl
dHRpbmcgcHJvZmlsZXJFbmFibGVkID0gc2V0dGluZyhwcm9maWxlckVuYWJsZWRTZXR0aW5nTmFt
ZSk7Ci0gICAgaWYgKHByb2ZpbGVyRW5hYmxlZC50eXBlKCkgPT0gU2V0dGluZzo6Qm9vbGVhblR5
cGUgJiYgcHJvZmlsZXJFbmFibGVkLmJvb2xlYW5WYWx1ZSgpKQorICAgIFN0cmluZyBwcm9maWxl
ckVuYWJsZWQgPSBzZXR0aW5nKHByb2ZpbGVyRW5hYmxlZFNldHRpbmdOYW1lKTsKKyAgICBpZiAo
cHJvZmlsZXJFbmFibGVkID09ICJ0cnVlIikKICAgICAgICAgZW5hYmxlUHJvZmlsZXIoKTsKICNl
bmRpZgogCkBAIC02NDUsOCArNjEzLDEwIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hv
d1dpbmRvdygpCiAKICAgICBtX2NsaWVudC0+c2hvd1dpbmRvdygpOwogCi0gICAgU2V0dGluZyBh
dHRhY2hlZEhlaWdodCA9IHNldHRpbmcoaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHROYW1lKTsKLSAg
ICB1bnNpZ25lZCBwcmVmZXJyZWRIZWlnaHQgPSBhdHRhY2hlZEhlaWdodC50eXBlKCkgPT0gU2V0
dGluZzo6SW50ZWdlclR5cGUgPyBhdHRhY2hlZEhlaWdodC5pbnRlZ2VyVmFsdWUoKSA6IGRlZmF1
bHRBdHRhY2hlZEhlaWdodDsKKyAgICBTdHJpbmcgYXR0YWNoZWRIZWlnaHQgPSBzZXR0aW5nKGlu
c3BlY3RvckF0dGFjaGVkSGVpZ2h0TmFtZSk7CisgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAg
ICBpbnQgaGVpZ2h0ID0gYXR0YWNoZWRIZWlnaHQudG9JbnQoJnN1Y2Nlc3MpOworICAgIHVuc2ln
bmVkIHByZWZlcnJlZEhlaWdodCA9IHN1Y2Nlc3MgPyBoZWlnaHQgOiBkZWZhdWx0QXR0YWNoZWRI
ZWlnaHQ7CiAKICAgICAvLyBUaGlzIGNhbGwgbWlnaHQgbm90IGdvIHRocm91Z2ggKGlmIHRoZSB3
aW5kb3cgc3RhcnRzIG91dCBkZXRhY2hlZCksIGJ1dCBpZiB0aGUgd2luZG93IGlzIGluaXRpYWxs
eSBjcmVhdGVkIGF0dGFjaGVkLAogICAgIC8vIEluc3BlY3RvckNvbnRyb2xsZXI6OmF0dGFjaFdp
bmRvdyBpcyBuZXZlciBjYWxsZWQsIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRvIHNldCB0aGUg
YXR0YWNoZWRXaW5kb3dIZWlnaHQuCkBAIC0xMDc3LDcgKzEwNDcsNyBAQCB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmVuYWJsZVJlc291cmNlVHJhY2tpbmcoYm9vbCBhbHdheXMsIGJvb2wgcmVs
b2FkKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYWx3YXlzKQotICAgICAgICBzZXRTZXR0
aW5nKHJlc291cmNlVHJhY2tpbmdFbmFibGVkU2V0dGluZ05hbWUsIFNldHRpbmcodHJ1ZSkpOwor
ICAgICAgICBzZXRTZXR0aW5nKHJlc291cmNlVHJhY2tpbmdFbmFibGVkU2V0dGluZ05hbWUsICJ0
cnVlIik7CiAKICAgICBpZiAobV9yZXNvdXJjZVRyYWNraW5nRW5hYmxlZCkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTA5Nyw3ICsxMDY3LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNh
YmxlUmVzb3VyY2VUcmFja2luZyhib29sIGFsd2F5cykKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKGFsd2F5cykKLSAgICAgICAgc2V0U2V0dGluZyhyZXNvdXJjZVRyYWNraW5nRW5hYmxlZFNl
dHRpbmdOYW1lLCBTZXR0aW5nKGZhbHNlKSk7CisgICAgICAgIHNldFNldHRpbmcocmVzb3VyY2VU
cmFja2luZ0VuYWJsZWRTZXR0aW5nTmFtZSwgImZhbHNlIik7CiAKICAgICBBU1NFUlQobV9pbnNw
ZWN0ZWRQYWdlKTsKICAgICBtX3Jlc291cmNlVHJhY2tpbmdFbmFibGVkID0gZmFsc2U7CkBAIC0x
MTExLDggKzEwODEsOCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZVJlc291cmNl
VHJhY2tpbmdTZXR0aW5nc0xvYWRlZCgpCiAgICAgICAgIHJldHVybjsKICAgICBtX3Jlc291cmNl
VHJhY2tpbmdTZXR0aW5nc0xvYWRlZCA9IHRydWU7CiAKLSAgICBTZXR0aW5nIHJlc291cmNlVHJh
Y2tpbmcgPSBzZXR0aW5nKHJlc291cmNlVHJhY2tpbmdFbmFibGVkU2V0dGluZ05hbWUpOwotICAg
IGlmIChyZXNvdXJjZVRyYWNraW5nLnR5cGUoKSA9PSBTZXR0aW5nOjpCb29sZWFuVHlwZSAmJiBy
ZXNvdXJjZVRyYWNraW5nLmJvb2xlYW5WYWx1ZSgpKQorICAgIFN0cmluZyByZXNvdXJjZVRyYWNr
aW5nID0gc2V0dGluZyhyZXNvdXJjZVRyYWNraW5nRW5hYmxlZFNldHRpbmdOYW1lKTsKKyAgICBp
ZiAocmVzb3VyY2VUcmFja2luZyA9PSAidHJ1ZSIpCiAgICAgICAgIG1fcmVzb3VyY2VUcmFja2lu
Z0VuYWJsZWQgPSB0cnVlOwogfQogCkBAIC0xNTAwLDcgKzE0NzAsNyBAQCB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OnRvZ2dsZVJlY29yZEJ1dHRvbihib29sIGlzUHJvZmlsaW5nKQogdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVQcm9maWxlcihib29sIGFsd2F5cywgYm9vbCBza2lw
UmVjb21waWxlKQogewogICAgIGlmIChhbHdheXMpCi0gICAgICAgIHNldFNldHRpbmcocHJvZmls
ZXJFbmFibGVkU2V0dGluZ05hbWUsIFNldHRpbmcodHJ1ZSkpOworICAgICAgICBzZXRTZXR0aW5n
KHByb2ZpbGVyRW5hYmxlZFNldHRpbmdOYW1lLCAidHJ1ZSIpOwogCiAgICAgaWYgKG1fcHJvZmls
ZXJFbmFibGVkKQogICAgICAgICByZXR1cm47CkBAIC0xNTE3LDcgKzE0ODcsNyBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmVuYWJsZVByb2ZpbGVyKGJvb2wgYWx3YXlzLCBib29sIHNraXBS
ZWNvbXBpbGUpCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2FibGVQcm9maWxlcihib29s
IGFsd2F5cykKIHsKICAgICBpZiAoYWx3YXlzKQotICAgICAgICBzZXRTZXR0aW5nKHByb2ZpbGVy
RW5hYmxlZFNldHRpbmdOYW1lLCBTZXR0aW5nKGZhbHNlKSk7CisgICAgICAgIHNldFNldHRpbmco
cHJvZmlsZXJFbmFibGVkU2V0dGluZ05hbWUsICJmYWxzZSIpOwogCiAgICAgaWYgKCFtX3Byb2Zp
bGVyRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTUzMyw3ICsxNTAzLDcgQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaXNhYmxlUHJvZmlsZXIoYm9vbCBhbHdheXMpCiB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmVuYWJsZURlYnVnZ2VyRnJvbUZyb250ZW5kKGJvb2wgYWx3YXlz
KQogewogICAgIGlmIChhbHdheXMpCi0gICAgICAgIHNldFNldHRpbmcoZGVidWdnZXJFbmFibGVk
U2V0dGluZ05hbWUsIFNldHRpbmcodHJ1ZSkpOworICAgICAgICBzZXRTZXR0aW5nKGRlYnVnZ2Vy
RW5hYmxlZFNldHRpbmdOYW1lLCAidHJ1ZSIpOwogCiAgICAgQVNTRVJUKG1faW5zcGVjdGVkUGFn
ZSk7CiAKQEAgLTE1NjYsNyArMTUzNiw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlz
YWJsZURlYnVnZ2VyKGJvb2wgYWx3YXlzKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYWx3
YXlzKQotICAgICAgICBzZXRTZXR0aW5nKGRlYnVnZ2VyRW5hYmxlZFNldHRpbmdOYW1lLCBTZXR0
aW5nKGZhbHNlKSk7CisgICAgICAgIHNldFNldHRpbmcoZGVidWdnZXJFbmFibGVkU2V0dGluZ05h
bWUsICJmYWxzZSIpOwogCiAgICAgQVNTRVJUKG1faW5zcGVjdGVkUGFnZSk7CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA2ZjI2MWVjLi4wZGQ2ZmIxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xMTAsNjAgKzExMCw2IEBA
IHB1YmxpYzoKICAgICAgICAgU3RvcmFnZVBhbmVsCiAgICAgfSBTcGVjaWFsUGFuZWxzOwogCi0g
ICAgc3RydWN0IFNldHRpbmcgewotICAgICAgICBlbnVtIFR5cGUgewotICAgICAgICAgICAgTm9U
eXBlLCBTdHJpbmdUeXBlLCBTdHJpbmdWZWN0b3JUeXBlLCBEb3VibGVUeXBlLCBJbnRlZ2VyVHlw
ZSwgQm9vbGVhblR5cGUKLSAgICAgICAgfTsKLQotICAgICAgICBTZXR0aW5nKCkKLSAgICAgICAg
ICAgIDogbV90eXBlKE5vVHlwZSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgZXhw
bGljaXQgU2V0dGluZyhib29sIHZhbHVlKQotICAgICAgICAgICAgOiBtX3R5cGUoQm9vbGVhblR5
cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fc2ltcGxlQ29udGVudC5tX2Jvb2xlYW4gPSB2
YWx1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGV4cGxpY2l0IFNldHRpbmcodW5zaWduZWQgdmFs
dWUpCi0gICAgICAgICAgICA6IG1fdHlwZShJbnRlZ2VyVHlwZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgbV9zaW1wbGVDb250ZW50Lm1faW50ZWdlciA9IHZhbHVlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZXhwbGljaXQgU2V0dGluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQotICAgICAgICAgICAg
OiBtX3R5cGUoU3RyaW5nVHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgbV9zdHJpbmcgPSB2
YWx1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQotCi0gICAgICAgIFN0cmluZyBzdHJpbmcoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUg
PT0gU3RyaW5nVHlwZSk7IHJldHVybiBtX3N0cmluZzsgfQotICAgICAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgc3RyaW5nVmVjdG9yKCkgY29uc3QgeyBBU1NFUlQobV90eXBlID09IFN0cmluZ1Zl
Y3RvclR5cGUpOyByZXR1cm4gbV9zdHJpbmdWZWN0b3I7IH0KLSAgICAgICAgZG91YmxlIGRvdWJs
ZVZhbHVlKCkgY29uc3QgeyBBU1NFUlQobV90eXBlID09IERvdWJsZVR5cGUpOyByZXR1cm4gbV9z
aW1wbGVDb250ZW50Lm1fZG91YmxlOyB9Ci0gICAgICAgIGxvbmcgaW50ZWdlclZhbHVlKCkgY29u
c3QgeyBBU1NFUlQobV90eXBlID09IEludGVnZXJUeXBlKTsgcmV0dXJuIG1fc2ltcGxlQ29udGVu
dC5tX2ludGVnZXI7IH0KLSAgICAgICAgYm9vbCBib29sZWFuVmFsdWUoKSBjb25zdCB7IEFTU0VS
VChtX3R5cGUgPT0gQm9vbGVhblR5cGUpOyByZXR1cm4gbV9zaW1wbGVDb250ZW50Lm1fYm9vbGVh
bjsgfQotCi0gICAgICAgIHZvaWQgc2V0KGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgbV90eXBlID0g
U3RyaW5nVHlwZTsgbV9zdHJpbmcgPSB2YWx1ZTsgfQotICAgICAgICB2b2lkIHNldChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgdmFsdWUpIHsgbV90eXBlID0gU3RyaW5nVmVjdG9yVHlwZTsgbV9zdHJp
bmdWZWN0b3IgPSB2YWx1ZTsgfQotICAgICAgICB2b2lkIHNldChkb3VibGUgdmFsdWUpIHsgbV90
eXBlID0gRG91YmxlVHlwZTsgbV9zaW1wbGVDb250ZW50Lm1fZG91YmxlID0gdmFsdWU7IH0KLSAg
ICAgICAgdm9pZCBzZXQobG9uZyB2YWx1ZSkgeyBtX3R5cGUgPSBJbnRlZ2VyVHlwZTsgbV9zaW1w
bGVDb250ZW50Lm1faW50ZWdlciA9IHZhbHVlOyB9Ci0gICAgICAgIHZvaWQgc2V0KGJvb2wgdmFs
dWUpIHsgbV90eXBlID0gQm9vbGVhblR5cGU7IG1fc2ltcGxlQ29udGVudC5tX2Jvb2xlYW4gPSB2
YWx1ZTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgVHlwZSBtX3R5cGU7Ci0KLSAgICAgICAg
U3RyaW5nIG1fc3RyaW5nOwotICAgICAgICBWZWN0b3I8U3RyaW5nPiBtX3N0cmluZ1ZlY3RvcjsK
LQotICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICBkb3VibGUgbV9kb3VibGU7Ci0gICAgICAg
ICAgICBsb25nIG1faW50ZWdlcjsKLSAgICAgICAgICAgIGJvb2wgbV9ib29sZWFuOwotICAgICAg
ICB9IG1fc2ltcGxlQ29udGVudDsKLSAgICB9OwogICAgIEluc3BlY3RvckNvbnRyb2xsZXIoUGFn
ZSosIEluc3BlY3RvckNsaWVudCopOwogICAgIH5JbnNwZWN0b3JDb250cm9sbGVyKCk7CiAKQEAg
LTE3OCw4ICsxMjQsOCBAQCBwdWJsaWM6CiAKICAgICBQYWdlKiBpbnNwZWN0ZWRQYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9pbnNwZWN0ZWRQYWdlOyB9CiAKLSAgICBjb25zdCBTZXR0aW5nJiBzZXR0
aW5nKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKLSAgICB2b2lkIHNldFNldHRpbmcoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFNldHRpbmcmKTsKKyAgICBTdHJpbmcgc2V0dGluZyhjb25zdCBT
dHJpbmcmIGtleSkgY29uc3Q7CisgICAgdm9pZCBzZXRTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogICAgIHZvaWQgaW5zcGVjdChOb2RlKik7CiAgICAg
dm9pZCBoaWdobGlnaHQoTm9kZSopOwpAQCAtMzk3LDggKzM0MywxMSBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxJbmplY3RlZFNjcmlwdEhvc3Q+IG1faW5qZWN0ZWRTY3JpcHRIb3N0OwogICAgIEhh
c2hNYXA8U3RyaW5nLCBTY3JpcHRWYWx1ZT4gbV9pZFRvV3JhcHBlZE9iamVjdDsKICAgICBPYmpl
Y3RHcm91cHNNYXAgbV9vYmplY3RHcm91cHM7Ci0KICAgICBsb25nIG1fbGFzdEJvdW5kT2JqZWN0
SWQ7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFNldHRpbmdzOworICAg
IG11dGFibGUgU2V0dGluZ3MgbV9zZXR0aW5nczsKKwogICAgIFZlY3RvcjxwYWlyPGxvbmcsIFN0
cmluZz4gPiBtX3BlbmRpbmdFdmFsdWF0ZVRlc3RDb21tYW5kczsKICNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKICAgICBib29sIG1fZGVidWdnZXJFbmFibGVkOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggMTM4YTRkZi4uOGQzYjNhMSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC0xODgs
NiArMTg4LDE3IEBAIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjphZGRTb3VyY2VUb0ZyYW1l
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK1N0cmluZyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNldHRpbmcoY29uc3QgU3RyaW5nJiBr
ZXkpCit7CisgICAgcmV0dXJuIG1faW5zcGVjdG9yQ29udHJvbGxlciA/IG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+c2V0dGluZyhrZXkpIDogIiI7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0OjpzZXRTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQor
eworICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgIG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+c2V0U2V0dGluZyhrZXksIHZhbHVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmgKaW5kZXggZGNiZWM2Yi4uMDkxNWZiZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKQEAgLTcwLDYgKzcwLDkgQEAgcHVibGlj
OgogICAgIHZvaWQgYWRkUmVzb3VyY2VTb3VyY2VUb0ZyYW1lKGxvbmcgaWRlbnRpZmllciwgTm9k
ZSogZnJhbWUpOwogICAgIGJvb2wgYWRkU291cmNlVG9GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgTm9kZSogZnJhbWUpOwogCisgICAgU3RyaW5nIHNl
dHRpbmcoY29uc3QgU3RyaW5nJiBrZXkpOworICAgIHZvaWQgc2V0U2V0dGluZyhjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
RnJvbnRlbmRIb3N0KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIElu
c3BlY3RvckNsaWVudCogY2xpZW50KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5pZGwKaW5kZXggOWE3NTgxZC4uZmFkODNlOCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCkBAIC01MSw4ICs1MSw5IEBAIG1vZHVsZSBj
b3JlIHsKICAgICAgICAgdm9pZCBhZGRSZXNvdXJjZVNvdXJjZVRvRnJhbWUoaW4gbG9uZyBpZGVu
dGlmaWVyLCBpbiBOb2RlIGZyYW1lKTsKICAgICAgICAgYm9vbGVhbiBhZGRTb3VyY2VUb0ZyYW1l
KGluIERPTVN0cmluZyBtaW1lVHlwZSwgaW4gRE9NU3RyaW5nIHNvdXJjZVZhbHVlLCBpbiBOb2Rl
IGZyYW1lKTsKIAorICAgICAgICBET01TdHJpbmcgc2V0dGluZyhpbiBET01TdHJpbmcga2V5KTsK
KyAgICAgICAgdm9pZCBzZXRTZXR0aW5nKGluIERPTVN0cmluZyBrZXksIGluIERPTVN0cmluZyB2
YWx1ZSk7CisKICAgICAgICAgW0N1c3RvbV0gdm9pZCBzZWFyY2goaW4gTm9kZSBub2RlLCBpbiBE
T01TdHJpbmcgcXVlcnkpOwotICAgICAgICBbQ3VzdG9tXSBET01PYmplY3Qgc2V0dGluZyhpbiBE
T01TdHJpbmcga2V5KTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBzZXRTZXR0aW5nKGluIERPTVN0
cmluZyBrZXksIGluIERPTU9iamVjdCAgdmFsdWUpOwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCmluZGV4IGRhNTI5ZTMuLmI1MTlhNWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC00Nzks
OSArNDc5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJikgeyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYsIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OlNldHRpbmcmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0
aW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcmKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2V0dGluZyhjb25zdCBTdHJpbmcmKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYsIFN0cmluZyopIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yV2luZG93T2JqZWN0Q2xlYXJl
ZCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9XZWJLaXQvY2Yv
Q2hhbmdlTG9nCmluZGV4IDI3Y2FmMWMuLjEzMzM3M2UgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jZi9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDA5
LTEyLTAyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZGhjcC0xNzItMjgtMTc0LTIyMC5zcGIu
Y29ycC5nb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNpbXBsaWZ5IHRoZSBzZXR0aW5ncyBzdXBwb3J0IGlu
IGluc3BlY3RvciBjb250cm9sbGVyLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMjA3NgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50Ojpwb3B1bGF0
ZVNldHRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpzdG9yZVNldHRpbmcpOgor
CiAyMDA5LTA0LTIwICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgU2VwYXJhdGUgSmF2YVNjcmlwdENvcmUuZGxsIGZyb20gV2ViS2l0LmRsbC4KZGlmZiAt
LWdpdCBhL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAg
Yi9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4
IDYwMGQ1OGQuLmNiNDcyMDUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKKysrIGIvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudENGLmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgaW5saW5lIENG
U3RyaW5nUmVmIGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYga2V5KQogICAg
IHJldHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIldlYktpdCBXZWIg
SW5zcGVjdG9yIFNldHRpbmcgLSAlQCIpLCBrZXlDRlN0cmluZy5nZXQoKSk7CiB9CiAKLXZvaWQg
V2ViSW5zcGVjdG9yQ2xpZW50Ojpwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIElu
c3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcmIHNldHRpbmcpCit2b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6cG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcqIHNldHRpbmcp
CiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleShBZG9wdENGLCBj
cmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpKTsKICAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxp
c3RSZWY+IHZhbHVlKEFkb3B0Q0YsIENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUocHJlZmVyZW5j
ZXNLZXkuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKSk7CkBAIC03NCw4
OCArNzQsMTkgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnBvcHVsYXRlU2V0dGluZyhjb25z
dCBTdHJpbmcmIGtleSwgSW5zcGVjdG9yQ29udHJvbGxlcjoKIAogICAgIENGVHlwZUlEIHR5cGUg
PSBDRkdldFR5cGVJRCh2YWx1ZS5nZXQoKSk7CiAgICAgaWYgKHR5cGUgPT0gQ0ZTdHJpbmdHZXRU
eXBlSUQoKSkKLSAgICAgICAgc2V0dGluZy5zZXQoc3RhdGljX2Nhc3Q8U3RyaW5nPihzdGF0aWNf
Y2FzdDxDRlN0cmluZ1JlZj4odmFsdWUuZ2V0KCkpKSk7CisgICAgICAgICpzZXR0aW5nID0gc3Rh
dGljX2Nhc3Q8U3RyaW5nPihzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4odmFsdWUuZ2V0KCkpKTsK
ICAgICBlbHNlIGlmICh0eXBlID09IENGQm9vbGVhbkdldFR5cGVJRCgpKQotICAgICAgICBzZXR0
aW5nLnNldChzdGF0aWNfY2FzdDxib29sPihDRkJvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxD
RkJvb2xlYW5SZWY+KHZhbHVlLmdldCgpKSkpKTsKLSAgICBlbHNlIGlmICh0eXBlID09IENGTnVt
YmVyR2V0VHlwZUlEKCkpIHsKLSAgICAgICAgQ0ZOdW1iZXJSZWYgbnVtYmVyID0gc3RhdGljX2Nh
c3Q8Q0ZOdW1iZXJSZWY+KHZhbHVlLmdldCgpKTsKLSAgICAgICAgaWYgKENGTnVtYmVySXNGbG9h
dFR5cGUobnVtYmVyKSkgewotICAgICAgICAgICAgZG91YmxlIGRvdWJsZU51bWJlciA9IDAuMDsK
LSAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KHZh
bHVlLmdldCgpKSwga0NGTnVtYmVyRG91YmxlVHlwZSwgJmRvdWJsZU51bWJlcik7Ci0gICAgICAg
ICAgICBzZXR0aW5nLnNldChkb3VibGVOdW1iZXIpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgbG9uZyBsb25nTnVtYmVyID0gMDsKLSAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUo
c3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KHZhbHVlLmdldCgpKSwga0NGTnVtYmVyTG9uZ1R5cGUs
ICZsb25nTnVtYmVyKTsKLSAgICAgICAgICAgIHNldHRpbmcuc2V0KGxvbmdOdW1iZXIpOwotICAg
ICAgICB9Ci0gICAgfSBlbHNlIGlmICh0eXBlID09IENGQXJyYXlHZXRUeXBlSUQoKSkgewotICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBzdHJpbmdzOwotCi0gICAgICAgIENGQXJyYXlSZWYgYXJyYXkg
PSBzdGF0aWNfY2FzdDxDRkFycmF5UmVmPih2YWx1ZS5nZXQoKSk7Ci0gICAgICAgIHVuc2lnbmVk
IGxlbmd0aCA9IENGQXJyYXlHZXRDb3VudChhcnJheSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgc3RyaW5n
ID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYXJyYXks
IGkpKTsKLSAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRChzdHJpbmcpID09IENGU3RyaW5nR2V0
VHlwZUlEKCkpCi0gICAgICAgICAgICAgICAgc3RyaW5ncy5hcHBlbmQoc3RhdGljX2Nhc3Q8U3Ry
aW5nPihzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oc3RyaW5nKSkpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgc2V0dGluZy5zZXQoc3RyaW5ncyk7Ci0gICAgfSBlbHNlCi0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAqc2V0dGluZyA9IHN0YXRpY19jYXN0PGJvb2w+KENGQm9v
bGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PENGQm9vbGVhblJlZj4odmFsdWUuZ2V0KCkpKSkgPyAi
dHJ1ZSIgOiAiZmFsc2UiOworICAgIGVsc2UKKyAgICAgICAgKnNldHRpbmcgPSAiIjsKIH0KIAot
dm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYgc2V0dGluZykKK3ZvaWQgV2ViSW5z
cGVjdG9yQ2xpZW50OjpzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgc2V0dGluZykKIHsKICAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IG9iamVjdFRv
U3RvcmU7Ci0KLSAgICBzd2l0Y2ggKHNldHRpbmcudHlwZSgpKSB7Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6Tm9UeXBlOgotICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpTdHJpbmdUeXBlOgotICAgICAg
ICAgICAgb2JqZWN0VG9TdG9yZS5hZG9wdENGKHNldHRpbmcuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9s
bGVyOjpTZXR0aW5nOjpCb29sZWFuVHlwZToKLSAgICAgICAgICAgIG9iamVjdFRvU3RvcmUgPSAo
c2V0dGluZy5ib29sZWFuVmFsdWUoKSA/IGtDRkJvb2xlYW5UcnVlIDoga0NGQm9vbGVhbkZhbHNl
KTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxl
cjo6U2V0dGluZzo6RG91YmxlVHlwZTogewotICAgICAgICAgICAgZG91YmxlIHZhbHVlID0gc2V0
dGluZy5kb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgb2JqZWN0VG9TdG9yZS5hZG9wdENGKENG
TnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckRvdWJsZVR5cGUsICZ2YWx1ZSkpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6
OlNldHRpbmc6OkludGVnZXJUeXBlOiB7Ci0gICAgICAgICAgICBsb25nIHZhbHVlID0gc2V0dGlu
Zy5pbnRlZ2VyVmFsdWUoKTsKLSAgICAgICAgICAgIG9iamVjdFRvU3RvcmUuYWRvcHRDRihDRk51
bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJMb25nVHlwZSwgJnZhbHVlKSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0
dGluZzo6U3RyaW5nVmVjdG9yVHlwZTogewotICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHN0cmluZ3MgPSBzZXR0aW5nLnN0cmluZ1ZlY3RvcigpOwotICAgICAgICAgICAgY29uc3Qg
dW5zaWduZWQgbGVuZ3RoID0gc3RyaW5ncy5zaXplKCk7Ci0KLSAgICAgICAgICAgIFJldGFpblB0
cjxDRk11dGFibGVBcnJheVJlZj4gYXJyYXkoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUo
MCwgbGVuZ3RoLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0KLSAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nKEFkb3B0Q0YsIHN0cmluZ3NbaV0uY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgICAgICAgICAgICAgQ0ZBcnJheVNldFZhbHVlQXRJbmRleChhcnJheS5nZXQo
KSwgaSwgc3RyaW5nLmdldCgpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgb2JqZWN0
VG9TdG9yZSA9IGFycmF5OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0K
KyAgICBvYmplY3RUb1N0b3JlLmFkb3B0Q0Yoc2V0dGluZy5jcmVhdGVDRlN0cmluZygpKTsKICAg
ICBBU1NFUlQob2JqZWN0VG9TdG9yZSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBy
ZWZlcmVuY2VzS2V5KEFkb3B0Q0YsIGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGtleSkpOwogICAg
IENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShwcmVmZXJlbmNlc0tleS5nZXQoKSwgb2JqZWN0VG9T
dG9yZS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwogfQotCi12b2lk
IFdlYkluc3BlY3RvckNsaWVudDo6cmVtb3ZlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSkKLXsK
LSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHByZWZlcmVuY2VzS2V5KEFkb3B0Q0YsIGNyZWF0
ZUtleUZvclByZWZlcmVuY2VzKGtleSkpOwotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShw
cmVmZXJlbmNlc0tleS5nZXQoKSwgMCwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24p
OwotfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggNDg3YjYwMS4uMGFmOTQ0YiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMDktMTItMDIgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBkaGNwLTE3
Mi0yOC0xNzQtMjIwLnNwYi5jb3JwLmdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2ltcGxpZnkgdGhlIHNl
dHRpbmdzIHN1cHBvcnQgaW4gaW5zcGVjdG9yIGNvbnRyb2xsZXIuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMDc2CisKKyAgICAgICAgKiBzcmMv
SW5zcGVjdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVu
dEltcGw6OmhpZGRlblBhbmVscyk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudElt
cGw6OnBvcHVsYXRlU2V0dGluZyk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudElt
cGw6OnN0b3JlU2V0dGluZyk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudEltcGw6
OmxvYWRTZXR0aW5ncyk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudEltcGw6OnNh
dmVTZXR0aW5ncyk6CisgICAgICAgICogc3JjL0luc3BlY3RvckNsaWVudEltcGwuaDoKKwogMjAw
OS0xMi0wMiAgQW50b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lu
c3BlY3RvckNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGll
bnRJbXBsLmNwcAppbmRleCBlZDQzMjlhLi44NDA5ZTlkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKQEAgLTE0MywyOCArMTQzLDIxIEBAIFN0cmluZyBJ
bnNwZWN0b3JDbGllbnRJbXBsOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkKIAogU3RyaW5nIEluc3Bl
Y3RvckNsaWVudEltcGw6OmhpZGRlblBhbmVscygpCiB7Ci0gICAgLy8gRW51bWVyYXRlIHRhYnMg
dGhhdCBhcmUgY3VycmVudGx5IGRpc2FibGVkLgotICAgIHJldHVybiAic2NyaXB0cyxwcm9maWxl
cyxkYXRhYmFzZXMiOworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuICIiOwogfQog
Ci12b2lkIEluc3BlY3RvckNsaWVudEltcGw6OnBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcm
IGtleSwgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYgc2V0dGluZykKK3ZvaWQgSW5zcGVj
dG9yQ2xpZW50SW1wbDo6cG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcq
IHZhbHVlKQogewogICAgIGxvYWRTZXR0aW5ncygpOwogICAgIGlmIChtX3NldHRpbmdzLT5jb250
YWlucyhrZXkpKQotICAgICAgICBzZXR0aW5nID0gbV9zZXR0aW5ncy0+Z2V0KGtleSk7Ci19Ci0K
LXZvaWQgSW5zcGVjdG9yQ2xpZW50SW1wbDo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJiBzZXR0aW5nKQotewotICAgIGxv
YWRTZXR0aW5ncygpOwotICAgIG1fc2V0dGluZ3MtPnNldChrZXksIHNldHRpbmcpOwotICAgIHNh
dmVTZXR0aW5ncygpOworICAgICAgICAqdmFsdWUgPSBtX3NldHRpbmdzLT5nZXQoa2V5KTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JDbGllbnRJbXBsOjpyZW1vdmVTZXR0aW5nKGNvbnN0IFN0cmluZyYg
a2V5KQordm9pZCBJbnNwZWN0b3JDbGllbnRJbXBsOjpzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgbG9hZFNldHRpbmdzKCk7Ci0gICAg
bV9zZXR0aW5ncy0+cmVtb3ZlKGtleSk7CisgICAgbV9zZXR0aW5ncy0+c2V0KGtleSwgdmFsdWUp
OwogICAgIHNhdmVTZXR0aW5ncygpOwogfQogCkBAIC0xOTMsMjEgKzE4NiwxNSBAQCB2b2lkIElu
c3BlY3RvckNsaWVudEltcGw6OmxvYWRTZXR0aW5ncygpCiAKICAgICAgICAgU3RyaW5nIG5hbWUg
PSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModG9rZW5zWzBdKTsKICAgICAgICAgU3RyaW5nIHR5
cGUgPSB0b2tlbnNbMV07Ci0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcgc2V0
dGluZzsKLSAgICAgICAgYm9vbCBvayA9IHRydWU7CisgICAgICAgIFN0cmluZyBzZXR0aW5nOwog
ICAgICAgICBpZiAodHlwZSA9PSAic3RyaW5nIikKLSAgICAgICAgICAgIHNldHRpbmcuc2V0KGRl
Y29kZVVSTEVzY2FwZVNlcXVlbmNlcyh0b2tlbnNbMl0pKTsKLSAgICAgICAgZWxzZSBpZiAodHlw
ZSA9PSAiZG91YmxlIikKLSAgICAgICAgICAgIHNldHRpbmcuc2V0KHRva2Vuc1syXS50b0RvdWJs
ZSgmb2spKTsKLSAgICAgICAgZWxzZSBpZiAodHlwZSA9PSAiaW50ZWdlciIpCi0gICAgICAgICAg
ICBzZXR0aW5nLnNldChzdGF0aWNfY2FzdDxsb25nPih0b2tlbnNbMl0udG9JbnQoJm9rKSkpOwor
ICAgICAgICAgICAgc2V0dGluZyA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh0b2tlbnNbMl0p
OwogICAgICAgICBlbHNlIGlmICh0eXBlID09ICJib29sZWFuIikKLSAgICAgICAgICAgIHNldHRp
bmcuc2V0KHRva2Vuc1syXSA9PSAidHJ1ZSIpOworICAgICAgICAgICAgc2V0dGluZyA9IHRva2Vu
c1syXTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYg
KG9rKQotICAgICAgICAgICAgbV9zZXR0aW5ncy0+c2V0KG5hbWUsIHNldHRpbmcpOworICAgICAg
ICBtX3NldHRpbmdzLT5zZXQobmFtZSwgc2V0dGluZyk7CiAgICAgfQogfQogCkBAIC0yMTUsNDAg
KzIwMiwxMiBAQCB2b2lkIEluc3BlY3RvckNsaWVudEltcGw6OnNhdmVTZXR0aW5ncygpCiB7CiAg
ICAgU3RyaW5nIGRhdGE7CiAgICAgZm9yIChTZXR0aW5nc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Nl
dHRpbmdzLT5iZWdpbigpOyBpdCAhPSBtX3NldHRpbmdzLT5lbmQoKTsgKytpdCkgewotICAgICAg
ICBTdHJpbmcgZW50cnk7Ci0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcgdmFs
dWUgPSBpdC0+c2Vjb25kOwogICAgICAgICBTdHJpbmcgbmFtZSA9IGVuY29kZVdpdGhVUkxFc2Nh
cGVTZXF1ZW5jZXMoaXQtPmZpcnN0KTsKLSAgICAgICAgc3dpdGNoICh2YWx1ZS50eXBlKCkpIHsK
LSAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpTdHJpbmdUeXBlOgot
ICAgICAgICAgICAgZW50cnkgPSBTdHJpbmc6OmZvcm1hdCgKLSAgICAgICAgICAgICAgICAiJXM6
c3RyaW5nOiVzIiwKLSAgICAgICAgICAgICAgICBuYW1lLnV0ZjgoKS5kYXRhKCksCi0gICAgICAg
ICAgICAgICAgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyh2YWx1ZS5zdHJpbmcoKSkudXRm
OCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnNwZWN0b3JD
b250cm9sbGVyOjpTZXR0aW5nOjpEb3VibGVUeXBlOgotICAgICAgICAgICAgZW50cnkgPSBTdHJp
bmc6OmZvcm1hdCgKLSAgICAgICAgICAgICAgICAiJXM6ZG91YmxlOiVmIiwKLSAgICAgICAgICAg
ICAgICBuYW1lLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgICAgICAgICAgdmFsdWUuZG91YmxlVmFs
dWUoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9s
bGVyOjpTZXR0aW5nOjpJbnRlZ2VyVHlwZToKLSAgICAgICAgICAgIGVudHJ5ID0gU3RyaW5nOjpm
b3JtYXQoCi0gICAgICAgICAgICAgICAgIiVzOmludGVnZXI6JWxkIiwKLSAgICAgICAgICAgICAg
ICBuYW1lLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgICAgICAgICAgdmFsdWUuaW50ZWdlclZhbHVl
KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxl
cjo6U2V0dGluZzo6Qm9vbGVhblR5cGU6Ci0gICAgICAgICAgICBlbnRyeSA9IFN0cmluZzo6Zm9y
bWF0KCIlczpib29sZWFuOiVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmFtZS51dGY4KCkuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YWx1ZS5ib29sZWFuVmFsdWUoKSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6U3RyaW5nVmVj
dG9yVHlwZToKLSAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgU3RyaW5nIHZhbHVlID0gaXQt
PnNlY29uZDsKKyAgICAgICAgU3RyaW5nIGVudHJ5ID0gU3RyaW5nOjpmb3JtYXQoCisgICAgICAg
ICAgICAiJXM6c3RyaW5nOiVzIiwKKyAgICAgICAgICAgIG5hbWUudXRmOCgpLmRhdGEoKSwKKyAg
ICAgICAgICAgIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXModmFsdWUuc3RyaW5nKCkpLnV0
ZjgoKS5kYXRhKCkpOwogICAgICAgICBkYXRhLmFwcGVuZChlbnRyeSk7CiAgICAgICAgIGRhdGEu
YXBwZW5kKCJcbiIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5z
cGVjdG9yQ2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJ
bXBsLmgKaW5kZXggNjIyMTZiMi4uNmY3ZjhiMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNw
ZWN0b3JDbGllbnRJbXBsLmgKQEAgLTU5LDExICs1OSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBuZXdVUkwp
OwogICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmcoCiAgICAgICAgIGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYga2V5LAotICAgICAgICBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpT
ZXR0aW5nJik7CisgICAgICAgIFdlYkNvcmU6OlN0cmluZyogdmFsdWUpOwogICAgIHZpcnR1YWwg
dm9pZCBzdG9yZVNldHRpbmcoCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LAot
ICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlbW92ZVNldHRpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXkp
OworICAgICAgICBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZv
aWQgaW5zcGVjdG9yV2luZG93T2JqZWN0Q2xlYXJlZCgpOwogCiBwcml2YXRlOgpAQCAtNzMsNyAr
NzIsNyBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBXZWJWaWV3SW1wbCBvZiB0aGUgcGFnZSBiZWlu
ZyBpbnNwZWN0ZWQ7IGdldHMgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3RvcgogICAgIFdlYlZpZXdJ
bXBsKiBtX2luc3BlY3RlZFdlYlZpZXc7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6
U3RyaW5nLCBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nPiBTZXR0aW5nc01h
cDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6U3RyaW5nLCBXZWJDb3JlOjpTdHJpbmc+
IFNldHRpbmdzTWFwOwogICAgIE93blB0cjxTZXR0aW5nc01hcD4gbV9zZXR0aW5nczsKIH07CiAK
ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggZjU4OTgxMy4uYWM3MzViNiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0xMi0wMiAg
UGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGRoY3AtMTcyLTI4LTE3NC0yMjAuc3BiLmNvcnAuZ29v
Z2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBTaW1wbGlmeSB0aGUgc2V0dGluZ3Mgc3VwcG9ydCBpbiBpbnNwZWN0
b3IgY29udHJvbGxlci4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzIwNzYKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudDo6cG9wdWxhdGVTZXR0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjpzdG9yZVNldHRpbmcpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oOgorCiAyMDA5LTEy
LTAxICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAppbmRleCA3OGY1NTQzLi5jMmI2MDExIDEwMDY0NAot
LS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKKysr
IGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCkBAIC0y
MDUsMTIgKzIwNSwxMiBAQCB2b2lkIEluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yV2luZG93T2Jq
ZWN0Q2xlYXJlZCgpCiB9CiAKIAotdm9pZCBJbnNwZWN0b3JDbGllbnQ6OnBvcHVsYXRlU2V0dGlu
Zyhjb25zdCBTdHJpbmcmIGtleSwgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYgc2V0dGlu
ZykKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50Ojpwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBr
ZXksIFN0cmluZyYgdmFsdWUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JDbGllbnQ6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgSW5z
cGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYgc2V0dGluZykKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50
OjpzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudEd0ay5oCmluZGV4IGVkOWZlMDguLjI5N2ZkOGYgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKKysrIGIvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaApAQCAtNjYsOSArNjYs
OCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGln
aHQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nJiBuZXdVUkwpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNl
dHRpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksIFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OlNldHRpbmcmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25z
dCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgY29uc3QgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6U2V0dGluZyYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2V0dGluZyhjb25zdCBX
ZWJDb3JlOjpTdHJpbmcmIGtleSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRp
bmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksIFdlYkNvcmU6OlN0cmluZyogdmFsdWUpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
a2V5LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHZhbHVlKTsKIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgaW5zcGVjdG9yV2luZG93T2JqZWN0Q2xlYXJlZCgpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQv
aGFpa3UvQ2hhbmdlTG9nIGIvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwppbmRleCA1N2RhOTFlLi5h
MWJhMGU3IDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9o
YWlrdS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0xMi0wMiAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGRoY3AtMTcyLTI4LTE3NC0yMjAuc3BiLmNvcnAuZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBTaW1wbGlmeSB0aGUgc2V0dGluZ3Mgc3VwcG9ydCBpbiBpbnNwZWN0b3IgY29udHJvbGxl
ci4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIw
NzYKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEhhaWt1Ojpwb3B1bGF0ZVNldHRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50SGFpa3U6OnN0b3JlU2V0dGluZyk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuaDoKKwogMjAw
OS0xMS0xMyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRl
IGZvciBjaGFuZ2VzIHRvIEZyYW1lTG9hZGVyQ2xpZW50CmRpZmYgLS1naXQgYS9XZWJLaXQvaGFp
a3UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuY3BwIGIvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmNwcAppbmRleCA0MDY0YzUxLi5i
ZmVkMmUyIDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50SGFpa3UuY3BwCisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRIYWlrdS5jcHAKQEAgLTEwNSwxNyArMTA1LDEyIEBAIHZvaWQgSW5zcGVjdG9yQ2xp
ZW50SGFpa3U6Omluc3BlY3RvcldpbmRvd09iamVjdENsZWFyZWQoKQogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ2xpZW50SGFpa3U6OnBvcHVsYXRlU2V0dGluZyhj
b25zdCBTdHJpbmcmIGtleSwgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYpCit2b2lkIElu
c3BlY3RvckNsaWVudEhhaWt1Ojpwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0
cmluZyYgdmFsdWUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JDbGllbnRIYWlrdTo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIEluc3BlY3RvckNsaWVudEhhaWt1OjpyZW1vdmVTZXR0aW5nKGNvbnN0IFN0cmluZyYg
a2V5KQordm9pZCBJbnNwZWN0b3JDbGllbnRIYWlrdTo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
SGFpa3UuaCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlr
dS5oCmluZGV4IDc5MmVmNDAuLjg3ODhhNWYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5oCisrKyBiL1dlYktpdC9oYWlrdS9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5oCkBAIC02MSw5ICs2MSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdl
ZChjb25zdCBTdHJpbmcmIG5ld1VSTCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRl
U2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYp
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJik7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5KTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHBvcHVsYXRlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgV2ViQ29yZTo6U3Ry
aW5nKiB2YWx1ZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nJiBrZXksIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdmFsdWUpOwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JXaW5kb3dPYmplY3RDbGVhcmVkKCk7CiAgICAgfTsK
ZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggN2JjY2IzNi4uYmU3NjMxYiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAwOS0xMi0wMiAg
UGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGRoY3AtMTcyLTI4LTE3NC0yMjAuc3BiLmNvcnAuZ29v
Z2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBTaW1wbGlmeSB0aGUgc2V0dGluZ3Mgc3VwcG9ydCBpbiBpbnNwZWN0
b3IgY29udHJvbGxlci4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzIwNzYKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToK
KyAgICAgICAgKC1bV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciBzaG93V2luZG93Ol0pOgor
ICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIGF0dGFjaF0pOgorICAgICAg
ICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIGRldGFjaF0pOgorCiAyMDA5LTEyLTAx
ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oCmluZGV4IDc0ODc3MjguLjY0NjIxZjggMTAwNjQ0Ci0tLSBhL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNjIsOSArNjIsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG5ld1VSTCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYga2V5LCBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJik7Ci0gICAgdmly
dHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgY29uc3Qg
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYpOwotICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5KTsKKyAgICB2aXJ0dWFs
IHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBXZWJDb3Jl
OjpTdHJpbmcqIHZhbHVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYga2V5LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHZhbHVlKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JXaW5kb3dPYmplY3RDbGVhcmVkKCk7CiAKZGlmZiAtLWdp
dCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggNmE0ZjY3
ZC4uMDE1MTViMSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQubW0KQEAgLTMyNyw4ICszMjcsOCBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6
aW5zcGVjdG9yV2luZG93T2JqZWN0Q2xlYXJlZCgpCiAgICAgX3Zpc2libGUgPSBZRVM7CiAgICAg
CiAgICAgLy8gSWYgbm8gcHJlZmVyZW5jZSBpcyBzZXQgLSBkZWZhdWx0IHRvIGFuIGF0dGFjaGVk
IHdpbmRvdy4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIGluc3BlY3RvciBMYXlvdXRUZXN0cy4KLSAg
ICBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nIHNob3VsZEF0dGFjaCA9IFtfaW5zcGVjdGVk
V2ViVmlldyBwYWdlXS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXR0aW5nKGluc3BlY3RvclN0
YXJ0c0F0dGFjaGVkTmFtZSk7Ci0gICAgX3Nob3VsZEF0dGFjaCA9IChzaG91bGRBdHRhY2gudHlw
ZSgpID09IEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OkJvb2xlYW5UeXBlKSA/IHNob3Vs
ZEF0dGFjaC5ib29sZWFuVmFsdWUoKSA6IHRydWU7CisgICAgU3RyaW5nIHNob3VsZEF0dGFjaCA9
IFtfaW5zcGVjdGVkV2ViVmlldyBwYWdlXS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXR0aW5n
KGluc3BlY3RvclN0YXJ0c0F0dGFjaGVkTmFtZSk7CisgICAgX3Nob3VsZEF0dGFjaCA9IHNob3Vs
ZEF0dGFjaCAhPSAiZmFsc2UiOwogCiAgICAgaWYgKF9zaG91bGRBdHRhY2gpIHsKICAgICAgICAg
V2ViRnJhbWVWaWV3ICpmcmFtZVZpZXcgPSBbW19pbnNwZWN0ZWRXZWJWaWV3IG1haW5GcmFtZV0g
ZnJhbWVWaWV3XTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6
aW5zcGVjdG9yV2luZG93T2JqZWN0Q2xlYXJlZCgpCiAgICAgaWYgKF9hdHRhY2hlZFRvSW5zcGVj
dGVkV2ViVmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgW19pbnNwZWN0ZWRXZWJWaWV3IHBh
Z2VdLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldFNldHRpbmcoaW5zcGVjdG9yU3RhcnRzQXR0
YWNoZWROYW1lLCBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nKHRydWUpKTsKKyAgICBbX2lu
c3BlY3RlZFdlYlZpZXcgcGFnZV0tPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0U2V0dGluZyhp
bnNwZWN0b3JTdGFydHNBdHRhY2hlZE5hbWUsICJ0cnVlIik7CiAgICAgX21vdmluZ1dpbmRvd3Mg
PSBZRVM7CiAKICAgICBbc2VsZiBjbG9zZV07CkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvcldpbmRvd09iamVjdENsZWFyZWQoKQogICAgIGlmICgh
X2F0dGFjaGVkVG9JbnNwZWN0ZWRXZWJWaWV3KQogICAgICAgICByZXR1cm47CiAKLSAgICBbX2lu
c3BlY3RlZFdlYlZpZXcgcGFnZV0tPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0U2V0dGluZyhp
bnNwZWN0b3JTdGFydHNBdHRhY2hlZE5hbWUsIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmco
ZmFsc2UpKTsKKyAgICBbX2luc3BlY3RlZFdlYlZpZXcgcGFnZV0tPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+c2V0U2V0dGluZyhpbnNwZWN0b3JTdGFydHNBdHRhY2hlZE5hbWUsICJmYWxzZSIpOwog
ICAgIF9tb3ZpbmdXaW5kb3dzID0gWUVTOwogCiAgICAgW3NlbGYgY2xvc2VdOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZjAyMTQw
Yi4uOTg0NzUwMyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMTItMDIgIFBhdmVsIEZlbGRtYW4g
IDxwZmVsZG1hbkBkaGNwLTE3Mi0yOC0xNzQtMjIwLnNwYi5jb3JwLmdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogU2ltcGxpZnkgdGhlIHNldHRpbmdzIHN1cHBvcnQgaW4gaW5zcGVjdG9yIGNvbnRyb2xsZXIu
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMDc2
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6cG9wdWxhdGVTZXR0aW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpzdG9yZVNldHRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6dmFyaWFudFRvU2V0dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpzZXR0aW5nVG9W
YXJpYW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oOgor
CiAyMDA5LTEyLTAxICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgog
CiAgICAgICAgIE5vdCByZXZpZXdlZC4gVHJ5IHRvIGZpeCBRdCBidWlsZC4KZGlmZiAtLWdpdCBh
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAgYi9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwCmluZGV4IDdhMWJmZDUuLmJh
ZmRiODQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0
LmNwcApAQCAtNTAsOCArNTAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3Qg
UUxhdGluMVN0cmluZyBzZXR0aW5nU3RvcmFnZVByZWZpeCgiUXQvUXRXZWJLaXQvUVdlYkluc3Bl
Y3Rvci8iKTsKIHN0YXRpYyBjb25zdCBRTGF0aW4xU3RyaW5nIHNldHRpbmdTdG9yYWdlVHlwZVN1
ZmZpeCgiLnR5cGUiKTsKIAotc3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcgdmFy
aWFudFRvU2V0dGluZyhjb25zdCBRVmFyaWFudCYgcXZhcmlhbnQpOwotc3RhdGljIFFWYXJpYW50
IHNldHRpbmdUb1ZhcmlhbnQoY29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYgaWNT
ZXR0aW5nKTsKK3N0YXRpYyBTdHJpbmcgdmFyaWFudFRvU2V0dGluZyhjb25zdCBRVmFyaWFudCYg
cXZhcmlhbnQpOworc3RhdGljIFFWYXJpYW50IHNldHRpbmdUb1ZhcmlhbnQoY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CiAKIGNsYXNzIEluc3BlY3RvckNsaWVudFdlYlBhZ2UgOiBwdWJsaWMgUVdlYlBh
Z2UgewogICAgIFFfT0JKRUNUCkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBJbnNwZWN0b3JDbGll
bnRRdDo6dXBkYXRlV2luZG93VGl0bGUoKQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDbGll
bnRRdDo6cG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBJbnNwZWN0b3JDb250cm9s
bGVyOjpTZXR0aW5nJiBzZXR0aW5nKQordm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6cG9wdWxhdGVT
ZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcqIHNldHRpbmcpCiB7CiAgICAgUVNldHRp
bmdzIHFzZXR0aW5nczsKICAgICBpZiAocXNldHRpbmdzLnN0YXR1cygpID09IFFTZXR0aW5nczo6
QWNjZXNzRXJyb3IpIHsKQEAgLTE4MywxMCArMTgzLDEwIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50
UXQ6OnBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgSW5zcGVjdG9yQ29udHJvbGxl
cjo6CiAgICAgUVN0cmluZyBzdG9yZWRWYWx1ZVR5cGUgPSBxc2V0dGluZ3MudmFsdWUoc2V0dGlu
Z0tleSArIHNldHRpbmdTdG9yYWdlVHlwZVN1ZmZpeCkudG9TdHJpbmcoKTsKICAgICBRVmFyaWFu
dCBzdG9yZWRWYWx1ZSA9IHFzZXR0aW5ncy52YWx1ZShzZXR0aW5nS2V5KTsKICAgICBzdG9yZWRW
YWx1ZS5jb252ZXJ0KFFWYXJpYW50OjpuYW1lVG9UeXBlKHN0b3JlZFZhbHVlVHlwZS50b0FzY2lp
KCkuZGF0YSgpKSk7Ci0gICAgc2V0dGluZyA9IHZhcmlhbnRUb1NldHRpbmcoc3RvcmVkVmFsdWUp
OworICAgICpzZXR0aW5nID0gdmFyaWFudFRvU2V0dGluZyhzdG9yZWRWYWx1ZSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yQ2xpZW50UXQ6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYgc2V0dGluZykKK3ZvaWQgSW5zcGVjdG9y
Q2xpZW50UXQ6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBz
ZXR0aW5nKQogewogICAgIFFTZXR0aW5ncyBxc2V0dGluZ3M7CiAgICAgaWYgKHFzZXR0aW5ncy5z
dGF0dXMoKSA9PSBRU2V0dGluZ3M6OkFjY2Vzc0Vycm9yKSB7CkBAIC0yMDEsNzAgKzIwMSwyNCBA
QCB2b2lkIEluc3BlY3RvckNsaWVudFF0OjpzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IEluc3BlY3RvckNvbnRyb2xsZQogICAgIHFzZXR0aW5ncy5zZXRWYWx1ZShzZXR0aW5n
S2V5ICsgc2V0dGluZ1N0b3JhZ2VUeXBlU3VmZml4LCBRVmFyaWFudDo6dHlwZVRvTmFtZSh2YWx1
ZVRvU3RvcmUudHlwZSgpKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6OnJlbW92ZVNl
dHRpbmcoY29uc3QgU3RyaW5nJikKK3N0YXRpYyBTdHJpbmcgdmFyaWFudFRvU2V0dGluZyhjb25z
dCBRVmFyaWFudCYgcXZhcmlhbnQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotc3Rh
dGljIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcgdmFyaWFudFRvU2V0dGluZyhjb25zdCBR
VmFyaWFudCYgcXZhcmlhbnQpCi17Ci0gICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyBy
ZXRWYWw7CisgICAgU3RyaW5nIHJldFZhbDsKIAogICAgIHN3aXRjaCAocXZhcmlhbnQudHlwZSgp
KSB7CiAgICAgY2FzZSBRVmFyaWFudDo6Qm9vbDoKLSAgICAgICAgcmV0VmFsLnNldChxdmFyaWFu
dC50b0Jvb2woKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUVZhcmlhbnQ6OkRvdWJsZToK
LSAgICAgICAgcmV0VmFsLnNldChxdmFyaWFudC50b0RvdWJsZSgpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBRVmFyaWFudDo6SW50OgotICAgICAgICByZXRWYWwuc2V0KChsb25nKXF2YXJp
YW50LnRvSW50KCkpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0VmFsID0gcXZhcmlhbnQu
dG9Cb29sKCkgPyAidHJ1ZSIgOiAiZmFsc2UiOwogICAgIGNhc2UgUVZhcmlhbnQ6OlN0cmluZzoK
LSAgICAgICAgcmV0VmFsLnNldChxdmFyaWFudC50b1N0cmluZygpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBRVmFyaWFudDo6U3RyaW5nTGlzdDogewotICAgICAgICBRU3RyaW5nTGlzdCBx
c0xpc3QgPSBxdmFyaWFudC50b1N0cmluZ0xpc3QoKTsKLSAgICAgICAgaW50IGxpc3RDb3VudCA9
IHFzTGlzdC5jb3VudCgpOwotICAgICAgICBWZWN0b3I8U3RyaW5nPiB2ZWN0b3IobGlzdENvdW50
KTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0Q291bnQ7ICsraSkKLSAgICAgICAg
ICAgIHZlY3RvcltpXSA9IHFzTGlzdFtpXTsKLSAgICAgICAgcmV0VmFsLnNldCh2ZWN0b3IpOwot
ICAgICAgICBicmVhazsKLSAgICB9CisgICAgICAgIHJldFZhbCA9IHF2YXJpYW50LnRvU3RyaW5n
KCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJldFZhbDsKIH0KIAotc3RhdGljIFFWYXJpYW50IHNl
dHRpbmdUb1ZhcmlhbnQoY29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYgaWNTZXR0
aW5nKQorc3RhdGljIFFWYXJpYW50IHNldHRpbmdUb1ZhcmlhbnQoY29uc3QgU3RyaW5nJiBzZXR0
aW5nKQogewogICAgIFFWYXJpYW50IHJldFZhbDsKLQotICAgIHN3aXRjaCAoaWNTZXR0aW5nLnR5
cGUoKSkgewotICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6U3RyaW5nVHlw
ZToKLSAgICAgICAgcmV0VmFsLnNldFZhbHVlKHN0YXRpY19jYXN0PFFTdHJpbmc+KGljU2V0dGlu
Zy5zdHJpbmcoKSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xs
ZXI6OlNldHRpbmc6OlN0cmluZ1ZlY3RvclR5cGU6IHsKLSAgICAgICAgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHZlY3RvciA9IGljU2V0dGluZy5zdHJpbmdWZWN0b3IoKTsKLSAgICAgICAgVmVjdG9y
PFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ZXI7Ci0gICAgICAgIFFTdHJpbmdMaXN0IHFzTGlz
dDsKLSAgICAgICAgZm9yIChpdGVyID0gdmVjdG9yLmJlZ2luKCk7IGl0ZXIgIT0gdmVjdG9yLmVu
ZCgpOyArK2l0ZXIpCi0gICAgICAgICAgICBxc0xpc3QgPDwgKml0ZXI7Ci0gICAgICAgIHJldFZh
bC5zZXRWYWx1ZShxc0xpc3QpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBJbnNw
ZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpEb3VibGVUeXBlOgotICAgICAgICByZXRWYWwuc2V0
VmFsdWUoaWNTZXR0aW5nLmRvdWJsZVZhbHVlKCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OkludGVnZXJUeXBlOgotICAgICAgICByZXRW
YWwuc2V0VmFsdWUoKGludClpY1NldHRpbmcuaW50ZWdlclZhbHVlKCkpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OkJvb2xlYW5UeXBlOgot
ICAgICAgICByZXRWYWwuc2V0VmFsdWUoaWNTZXR0aW5nLmJvb2xlYW5WYWx1ZSgpKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCisgICAgcmV0VmFsLnNldFZhbHVlKHN0YXRpY19jYXN0PFFTdHJp
bmc+KHNldHRpbmcpKTsKICAgICByZXR1cm4gcmV0VmFsOwogfQogCmRpZmYgLS1naXQgYS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaCBiL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCmluZGV4IGNjZjhiNjkuLjkyM2JhYjQgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCisr
KyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCkBAIC02Niw5
ICs2Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGhpZGVI
aWdobGlnaHQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29u
c3QgU3RyaW5nJiBuZXdVUkwpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRp
bmcoY29uc3QgU3RyaW5nJiBrZXksIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcmKTsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
SW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3B1
bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyogdmFsdWUpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IHZhbHVlKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yV2luZG93T2JqZWN0Q2xl
YXJlZCgpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4v
Q2hhbmdlTG9nCmluZGV4IGNkOWQzYTcuLmRiNWZjNDQgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4v
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MDktMTItMDIgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBkaGNwLTE3Mi0yOC0xNzQtMjIwLnNw
Yi5jb3JwLmdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2ltcGxpZnkgdGhlIHNldHRpbmdzIHN1cHBvcnQg
aW4gaW5zcGVjdG9yIGNvbnRyb2xsZXIuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMyMDc2CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaDoKKwogMjAwOS0xMi0wMSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnpp
bW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuIFRyeSB0byBmaXggd2lu
ZG93cyBidWlsZC4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmggYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oCmluZGV4IDg5NjVlODcuLjNmNjViMGEgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNjYsOSArNjYsOCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpTdHJp
bmcmIG5ld1VSTCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYga2V5LCBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5n
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcm
IGtleSwgY29uc3QgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYpOwotICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5KTsK
KyAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
a2V5LCBXZWJDb3JlOjpTdHJpbmcqIHZhbHVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0
aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHZh
bHVlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JXaW5kb3dPYmplY3RDbGVhcmVkKCk7
CiAKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9XZWJLaXQvd3gvQ2hhbmdlTG9n
CmluZGV4IDM5YTFiOTQuLmFmN2VlMzggMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDA5LTEyLTAyICBQ
YXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZGhjcC0xNzItMjgtMTc0LTIyMC5zcGIuY29ycC5nb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFNpbXBsaWZ5IHRoZSBzZXR0aW5ncyBzdXBwb3J0IGluIGluc3BlY3Rv
ciBjb250cm9sbGVyLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMjA3NgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRX
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRXeDo6cG9wdWxhdGVTZXR0
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFd4OjpzdG9yZVNldHRpbmcp
OgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guaDoKKwogMjAwOS0x
MS0yMyAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHAgYi9XZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHAKaW5kZXggZDU1YWQwNC4uZmYyMWFl
MCAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3gu
Y3BwCisrKyBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcApA
QCAtMTA1LDE3ICsxMDUsMTIgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRXeDo6aW5zcGVjdGVkVVJM
Q2hhbmdlZChjb25zdCBTdHJpbmcmIG5ld1VSTCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci12b2lkIEluc3BlY3RvckNsaWVudFd4Ojpwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBr
ZXksIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcmIHNldHRpbmcpCit2b2lkIEluc3BlY3Rv
ckNsaWVudFd4Ojpwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyogc2V0
dGluZykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEluc3BlY3RvckNsaWVu
dFd4OjpzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IEluc3BlY3RvckNvbnRy
b2xsZXI6OlNldHRpbmcmIHNldHRpbmcpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
dm9pZCBJbnNwZWN0b3JDbGllbnRXeDo6cmVtb3ZlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSkK
K3ZvaWQgSW5zcGVjdG9yQ2xpZW50V3g6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJiBzZXR0aW5nKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYg
LS1naXQgYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5oIGIvV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guaAppbmRleCAxODJkZjFiLi5m
OTA1ODE3IDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRXeC5oCisrKyBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmgK
QEAgLTYwLDEwICs2MCw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRV
UkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgbmV3VVJMKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwb3B1
bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRp
bmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIHJl
bW92ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXkpOwotICAgIAorICAgIHZpcnR1YWwgdm9pZCBw
b3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyogdmFsdWUpOworICAgIHZp
cnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
dmFsdWUpOworCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvcldpbmRvd09iamVjdENsZWFyZWQo
KTsKIH07CiAK
</data>
<flag name="review"
          id="25970"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="25980"
          type_id="3"
          status="-"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>