<?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>188554</bug_id>
          
          <creation_ts>2018-08-14 07:56:22 -0700</creation_ts>
          <short_desc>Use OptionSet for ActivityState::Flags</short_desc>
          <delta_ts>2018-08-16 05:51:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1449932</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-14 07:56:22 -0700</bug_when>
    <thetext>Make it safer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449950</commentid>
    <comment_count>1</comment_count>
      <attachid>347081</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-14 09:15:43 -0700</bug_when>
    <thetext>Created attachment 347081
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449953</commentid>
    <comment_count>2</comment_count>
      <attachid>347081</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-08-14 09:30:51 -0700</bug_when>
    <thetext>Comment on attachment 347081
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=347081&amp;action=review

Looks good! r=me

&gt; Source/WebCore/page/ActivityState.cpp:54
&gt; +    appendIf(ActivityState::IsCapturingMedia, &quot;capturing media&quot;);

Nice cleanup!

&gt; Source/WebCore/page/FocusController.cpp:356
&gt; +    m_page.setActivityState(focused ? m_activityState | ActivityState::IsFocused : m_activityState - ActivityState::IsFocused);

It&apos;s too bad we still have to use all of this bitwise math for an OptionSet. It would be much clearer to say something like &quot;m_activityState.remove(ActivityState::IsFocused)

&gt; Source/WebCore/page/Page.cpp:1652
&gt; +        state -= { ActivityState::IsVisible, ActivityState::IsVisibleOrOccluded };

Again, these bitwise operators are hard to reason about when reading the code. Seems like extending OptionSet with helpful methods would make these kinds of statements easier to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449959</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-14 09:43:15 -0700</bug_when>
    <thetext>&gt; Again, these bitwise operators are hard to reason about when reading the
&gt; code. Seems like extending OptionSet with helpful methods would make these
&gt; kinds of statements easier to understand.

Yeah, at least add/remove would be good for readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450257</commentid>
    <comment_count>4</comment_count>
      <attachid>347153</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-15 03:05:20 -0700</bug_when>
    <thetext>Created attachment 347153
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450266</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-15 03:57:47 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450268</commentid>
    <comment_count>6</comment_count>
      <attachid>347157</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-15 04:29:58 -0700</bug_when>
    <thetext>Created attachment 347157
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450293</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-08-15 08:02:05 -0700</bug_when>
    <thetext>/Volumes/Data/EWS/WebKit/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:2316:59: error: no member named &apos;AllFlags&apos; in &apos;WebCore::ActivityState&apos;
    _page-&gt;activityStateDidChange(WebCore::ActivityState::AllFlags);
                                  ~~~~~~~~~~~~~~~~~~~~~~~~^
1 error generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450434</commentid>
    <comment_count>8</comment_count>
      <attachid>347204</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-15 13:36:35 -0700</bug_when>
    <thetext>Created attachment 347204
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450650</commentid>
    <comment_count>9</comment_count>
      <attachid>347204</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-16 05:49:08 -0700</bug_when>
    <thetext>Comment on attachment 347204
patch

Clearing flags on attachment: 347204

Committed r234920: &lt;https://trac.webkit.org/changeset/234920&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450651</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-16 05:49:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450652</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-16 05:51:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/43378163&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347081</attachid>
            <date>2018-08-14 09:15:43 -0700</date>
            <delta_ts>2018-08-15 03:05:20 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-activitystate-2.patch</filename>
            <type>text/plain</type>
            <size>55108</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE4LTA4LTE0ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0IGZvciBBY3Rpdml0eVN0YXRl
OjpGbGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg4NTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvT3B0aW9uU2V0Lmg6CisgICAgICAgIChXVEY6Ok9wdGlvblNldDo6b3BlcmF0b3JeKToK
KworICAgICAgICBBZGQgeG9yIG9wZXJhdG9yLCB1c2VmdWwgZm9yIGZpbmRpbmcgY2hhbmdlcyBi
ZXR3ZWVuIHNldHMuCisKIDIwMTgtMDgtMTMgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBz
b255LmNvbT4KIAogICAgICAgICBNZWFuaW5nIG9mIE9wdGlvblNldDo6Y29udGFpbnMgaXMgdW5j
bGVhciB3aGVuIHVzZWQgd2l0aCBPcHRpb25TZXQgYXJndW1lbnQKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL09wdGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL09wdGlvblNldC5o
CShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ4LDYgKzE0OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmcm9t
UmF3KGxocy5tX3N0b3JhZ2UgJiB+cmhzLm1fc3RvcmFnZSk7CiAgICAgfQogCisgICAgY29uc3Rl
eHByIGZyaWVuZCBPcHRpb25TZXQgb3BlcmF0b3JeKE9wdGlvblNldCBsaHMsIE9wdGlvblNldCBy
aHMpCisgICAgeworICAgICAgICByZXR1cm4gZnJvbVJhdyhsaHMubV9zdG9yYWdlIF4gcmhzLm1f
c3RvcmFnZSk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGVudW0gSW5pdGlhbGl6YXRpb25UYWcg
eyBGcm9tUmF3VmFsdWUgfTsKICAgICBjb25zdGV4cHIgT3B0aW9uU2V0KFQgdCwgSW5pdGlhbGl6
YXRpb25UYWcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MiBAQAorMjAxOC0wOC0x
NCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIE9wdGlv
blNldCBmb3IgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1vcmUgdHlwZXNhZmUgZmxhZ3MuCisKKyAgICAgICAgKiBN
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UpOgor
ICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Lmg6CisgICAgICAgICogcGFnZS9BY3Rpdml0eVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViQ29yZTo6YWN0aXZpdHlTdGF0ZUZsYWdzVG9TdHJp
bmcpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvQWN0aXZpdHlTdGF0ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6YWxsRmxhZ3MpOgorICAgICAgICAqIHBhZ2UvQWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpGb2N1c0NvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZpdHlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2ZSk6CisgICAgICAgICogcGFnZS9G
b2N1c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6aXNB
Y3RpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjppc0ZvY3Vz
ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpjb250ZW50SXNW
aXNpYmxlIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0SXNJbldpbmRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjp1cGRhdGVUaW1lclRocm90dGxpbmdTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omlz
VmlzaWJsZUFuZEFjdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc1dpbmRv
d0FjdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRJc1Zpc2libGUpOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWN0aXZpdHlT
dGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc1Zpc2libGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNJbldpbmRvdyBjb25zdCk6CisgICAgICAgICogcGFn
ZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWN0aXZpdHlTdGF0
ZUZvckNQVVNhbXBsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlTW9uaXRvcjo6
YWN0aXZpdHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VNb25pdG9y
Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9jb2NvYTogQWRkZWQuCisKIDIwMTgtMDgtMTQg
IFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBGZXRjaDogY29udGVudC1s
ZW5ndGggaGVhZGVyIGlzIGJlaW5nIGFkZGVkIHRvIHRoZSBzYWZlLWxpc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTI4LDEwICsxMjgsMTAgQEAgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9u
PiBHZW9sbwogICAgIHJldHVybiBtX2NsaWVudC5sYXN0UG9zaXRpb24oKTsKIH0KIAotdm9pZCBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0
ZTo6RmxhZ3Mgb2xkQWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbmV3QWN0aXZp
dHlTdGF0ZSkKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBvbGRBY3Rpdml0eVN0YXRlLCBPcHRp
b25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbmV3QWN0aXZpdHlTdGF0ZSkKIHsKICAgICAvLyBU
b2dnbGUgR1BTIGJhc2VkIG9uIHBhZ2UgdmlzaWJpbGl0eSB0byBzYXZlIGJhdHRlcnkuCi0gICAg
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG9sZEFjdGl2aXR5U3RhdGUgXiBuZXdBY3Rp
dml0eVN0YXRlOworICAgIGF1dG8gY2hhbmdlZCA9IG9sZEFjdGl2aXR5U3RhdGUgXiBuZXdBY3Rp
dml0eVN0YXRlOwogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlICYm
ICFtX29ic2VydmVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG5ld0FjdGl2aXR5U3RhdGUg
JiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCiAgICAgICAgICAgICBtX2NsaWVudC5zdGFydFVw
ZGF0aW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgJKHJldmlzaW9uIDIzNDg0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBQYWdlJiBt
X3BhZ2U7CiAgICAgR2VvbG9jYXRpb25DbGllbnQmIG1fY2xpZW50OwogCi0gICAgdm9pZCBhY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIG9sZEFjdGl2aXR5U3RhdGUs
IEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5U3RhdGUpIG92ZXJyaWRlOworICAgIHZv
aWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4g
b2xkQWN0aXZpdHlTdGF0ZSwgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG5ld0FjdGl2
aXR5U3RhdGUpIG92ZXJyaWRlOwogCiAgICAgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0
aW9uPiBtX2xhc3RQb3NpdGlvbjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDIz
NDg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzcxLDE0ICs2MzcxLDE0IEBAIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZW5hYmxlU3UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFj
dGl2aXR5U3RhdGU6OkZsYWdzIG9sZEFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdz
IG5ld0FjdGl2aXR5U3RhdGUpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG9sZEFjdGl2
aXR5U3RhdGUsIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBuZXdBY3Rpdml0eVN0YXRl
KQogewogICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICBBY3Rpdml0
eVN0YXRlOjpGbGFncyBjaGFuZ2VkID0gb2xkQWN0aXZpdHlTdGF0ZSBeIG5ld0FjdGl2aXR5U3Rh
dGU7CisgICAgYXV0byBjaGFuZ2VkID0gb2xkQWN0aXZpdHlTdGF0ZSBeIG5ld0FjdGl2aXR5U3Rh
dGU7CiAgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCi0gICAgICAg
IG1fY29udGV4dC0+c2V0Q29udGV4dFZpc2liaWxpdHkobmV3QWN0aXZpdHlTdGF0ZSAmIEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZSk7CisgICAgICAgIG1fY29udGV4dC0+c2V0Q29udGV4dFZpc2li
aWxpdHkobmV3QWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUp
KTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXRGYWlsTmV4dEdQVVN0
YXR1c0NoZWNrKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODM4LDcgKzgzOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWdpc3Rlcldp
dGhXZWJHTFN0YXRlVHJhY2tlcigpOwogICAgIHZvaWQgY2hlY2tGb3JDb250ZXh0TG9zc0hhbmRs
aW5nKCk7CiAKLSAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6
RmxhZ3Mgb2xkQWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbmV3QWN0aXZpdHlT
dGF0ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNl
dDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBvbGRBY3Rpdml0eVN0YXRlLCBPcHRpb25TZXQ8QWN0aXZp
dHlTdGF0ZTo6RmxhZz4gbmV3QWN0aXZpdHlTdGF0ZSkgb3ZlcnJpZGU7CiAKICAgICBXZWJHTFN0
YXRlVHJhY2tlcjo6VG9rZW4gbV90cmFja2VyVG9rZW47CiAgICAgVGltZXIgbV9jaGVja0ZvckNv
bnRleHRMb3NzSGFuZGxpbmdUaW1lcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZp
dHlTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0
YXRlLmNwcAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0
eVN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNjUgKzI2LDM0IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQWN0aXZpdHlTdGF0ZS5oIgogCi0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHJpbmcgYWN0aXZpdHlTdGF0ZUZsYWdzVG9TdHJpbmco
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3MpCitXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiB0cywgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGZsYWdz
KQogewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAKLSAgICBhdXRvIGFwcGVuZENv
bW1hSWZOZWNlc3NhcnkgPSBbJl0oKSB7Ci0gICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKKyAgICBib29sIGRpZEFwcGVuZCA9
IGZhbHNlOworCisgICAgYXV0byBhcHBlbmRJZiA9IFsmXShhdXRvIGZsYWcsIGF1dG8gbWVzc2Fn
ZSkgeworICAgICAgICBpZiAoIWZsYWdzLmNvbnRhaW5zKGZsYWcpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBpZiAoZGlkQXBwZW5kKQorICAgICAgICAgICAgdHMgPDwgIiwgIjsKKyAg
ICAgICAgdHMgPDwgbWVzc2FnZTsKKyAgICAgICAgZGlkQXBwZW5kID0gdHJ1ZTsKICAgICB9Owog
ICAgIAotICAgIGlmIChmbGFncyAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0
aXZlKSB7Ci0gICAgICAgIGFwcGVuZENvbW1hSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoImFjdGl2ZSB3aW5kb3ciKTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MgJiBXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpIHsKLSAgICAgICAgYXBwZW5kQ29tbWFJZk5l
Y2Vzc2FyeSgpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiZm9jdXNlZCIpOwotICAgIH0KLQot
ICAgIGlmIChmbGFncyAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgewotICAg
ICAgICBhcHBlbmRDb21tYUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ2
aXNpYmxlIik7Ci0gICAgfQotCi0gICAgaWYgKGZsYWdzICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCkgewotICAgICAgICBhcHBlbmRDb21tYUlmTmVjZXNzYXJ5
KCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ2aXNpYmxlIG9yIG9jY2x1ZGVkIik7Ci0gICAg
fQotCi0gICAgaWYgKGZsYWdzICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdykg
ewotICAgICAgICBhcHBlbmRDb21tYUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCJpbi13aW5kb3ciKTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MgJiBXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSkgewotICAgICAgICBhcHBlbmRDb21tYUlmTmVjZXNz
YXJ5KCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ2aXN1YWxseSBpZGxlIik7Ci0gICAgfQot
Ci0gICAgaWYgKGZsYWdzICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlKSB7Ci0g
ICAgICAgIGFwcGVuZENvbW1hSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQo
ImF1ZGlibGUiKTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MgJiBXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpJc0xvYWRpbmcpIHsKLSAgICAgICAgYXBwZW5kQ29tbWFJZk5lY2Vzc2FyeSgpOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZCgibG9hZGluZyIpOwotICAgIH0KLQotICAgIGlmIChmbGFncyAm
IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEpIHsKLSAgICAgICAgYXBw
ZW5kQ29tbWFJZk5lY2Vzc2FyeSgpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiY2FwdHVyaW5n
IG1lZGlhIik7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cisg
ICAgYXBwZW5kSWYoQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUsICJhY3RpdmUgd2luZG93
Iik7CisgICAgYXBwZW5kSWYoQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCAiZm9jdXNlZCIpOwor
ICAgIGFwcGVuZElmKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgInZpc2libGUiKTsKKyAgICBh
cHBlbmRJZihBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkLCAidmlzaWJsZSBvciBv
Y2NsdWRlZCIpOworICAgIGFwcGVuZElmKEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3csICJpbi13
aW5kb3ciKTsKKyAgICBhcHBlbmRJZihBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSwgInZp
c3VhbGx5IGlkbGUiKTsKKyAgICBhcHBlbmRJZihBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUsICJh
dWRpYmxlIik7CisgICAgYXBwZW5kSWYoQWN0aXZpdHlTdGF0ZTo6SXNMb2FkaW5nLCAibG9hZGlu
ZyIpOworICAgIGFwcGVuZElmKEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEsICJjYXB0
dXJpbmcgbWVkaWEiKTsKKworICAgIHJldHVybiB0czsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmgJKHJldmlzaW9uIDIzNDg0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSwxNCArMjUsMTYgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvT3B0
aW9uU2V0Lmg+CisKIG5hbWVzcGFjZSBXVEYgewotY2xhc3MgU3RyaW5nOworY2xhc3MgVGV4dFN0
cmVhbTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQWN0aXZpdHlTdGF0ZSB7
Ci0gICAgZW51bSB7CisgICAgZW51bSBGbGFnIHsKICAgICAgICAgV2luZG93SXNBY3RpdmUgPSAx
IDw8IDAsCiAgICAgICAgIElzRm9jdXNlZCA9IDEgPDwgMSwKICAgICAgICAgSXNWaXNpYmxlID0g
MSA8PCAyLApAQCAtNDQsMTAgKzQ2LDcgQEAgc3RydWN0IEFjdGl2aXR5U3RhdGUgewogICAgICAg
ICBJc0NhcHR1cmluZ01lZGlhID0gMSA8PCA4LAogICAgIH07CiAKLSAgICB0eXBlZGVmIHVuc2ln
bmVkIEZsYWdzOwotCi0gICAgc3RhdGljIGNvbnN0IEZsYWdzIE5vRmxhZ3MgPSAwOwotICAgIHN0
YXRpYyBjb25zdCBGbGFncyBBbGxGbGFncyA9IFdpbmRvd0lzQWN0aXZlIHwgSXNGb2N1c2VkIHwg
SXNWaXNpYmxlIHwgSXNWaXNpYmxlT3JPY2NsdWRlZCB8IElzSW5XaW5kb3cgfCBJc1Zpc3VhbGx5
SWRsZSB8IElzQXVkaWJsZSB8IElzTG9hZGluZyB8IElzQ2FwdHVyaW5nTWVkaWE7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBPcHRpb25TZXQ8RmxhZz4gYWxsRmxhZ3MoKSB7IHJldHVybiB7IFdpbmRv
d0lzQWN0aXZlLCBJc0ZvY3VzZWQsIElzVmlzaWJsZSwgSXNWaXNpYmxlT3JPY2NsdWRlZCwgSXNJ
bldpbmRvdywgSXNWaXN1YWxseUlkbGUsIElzQXVkaWJsZSwgSXNMb2FkaW5nLCBJc0NhcHR1cmlu
Z01lZGlhIH07IH0KIH07CiAKIGVudW0gY2xhc3MgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5n
IHsKQEAgLTU2LDcgKzU1LDYgQEAgZW51bSBjbGFzcyBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxp
bmcgewogICAgIFZpc2libGVBbmRBY3RpdmUKIH07CiAKLS8vIElkZWFsbHkgdGhpcyB3b3VsZCBi
ZSBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEFjdGl2aXR5U3RhdGU6OkZsYWdzKSBidXQg
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbmVlZHMgdG8gYmUgc3Ryb25nbHkgdHlwZWQgdG8gYXZvaWQg
YW1iaWd1b3VzIG92ZXJsb2Fkcy4KLVdFQkNPUkVfRVhQT1JUIFdURjo6U3RyaW5nIGFjdGl2aXR5
U3RhdGVGbGFnc1RvU3RyaW5nKEFjdGl2aXR5U3RhdGU6OkZsYWdzKTsKK1dFQkNPUkVfRVhQT1JU
IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBPcHRpb25TZXQ8
QWN0aXZpdHlTdGF0ZTo6RmxhZz4pOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgJ
KHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgb2xkQWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZTo6
RmxhZ3MgbmV3QWN0aXZpdHlTdGF0ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBvbGRBY3Rpdml0eVN0
YXRlLCBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbmV3QWN0aXZpdHlTdGF0ZSkgPSAw
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNyArMzA3LDcg
QEAgc3RhdGljIGlubGluZSBpbnQgc2hhZG93QWRqdXN0ZWRUYWJJbmRleAogICAgIHJldHVybiBl
bGVtZW50LnRhYkluZGV4KCk7CiB9CiAKLUZvY3VzQ29udHJvbGxlcjo6Rm9jdXNDb250cm9sbGVy
KFBhZ2UmIHBhZ2UsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUpCitGb2N1c0Nv
bnRyb2xsZXI6OkZvY3VzQ29udHJvbGxlcihQYWdlJiBwYWdlLCBPcHRpb25TZXQ8QWN0aXZpdHlT
dGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZSkKICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9p
c0NoYW5naW5nRm9jdXNlZEZyYW1lKGZhbHNlKQogICAgICwgbV9hY3Rpdml0eVN0YXRlKGFjdGl2
aXR5U3RhdGUpCkBAIC0zNTMsNyArMzUzLDcgQEAgRnJhbWUmIEZvY3VzQ29udHJvbGxlcjo6Zm9j
dXNlZE9yTWFpbkZyYQogCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZChib29sIGZv
Y3VzZWQpCiB7Ci0gICAgbV9wYWdlLnNldEFjdGl2aXR5U3RhdGUoZm9jdXNlZCA/IG1fYWN0aXZp
dHlTdGF0ZSB8IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCA6IG1fYWN0aXZpdHlTdGF0ZSAmIH5B
Y3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpOworICAgIG1fcGFnZS5zZXRBY3Rpdml0eVN0YXRlKGZv
Y3VzZWQgPyBtX2FjdGl2aXR5U3RhdGUgfCBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQgOiBtX2Fj
dGl2aXR5U3RhdGUgLSBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpOwogfQogCiB2b2lkIEZvY3Vz
Q29udHJvbGxlcjo6c2V0Rm9jdXNlZEludGVybmFsKGJvb2wgZm9jdXNlZCkKQEAgLTg0MSwyMyAr
ODQxLDIzIEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRWxlbWVudCgKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2aXR5U3RhdGUo
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSkKK3ZvaWQgRm9jdXNDb250cm9sbGVy
OjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0
eVN0YXRlKQogewotICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX2FjdGl2aXR5
U3RhdGUgXiBhY3Rpdml0eVN0YXRlOworICAgIGF1dG8gY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0
ZSBeIGFjdGl2aXR5U3RhdGU7CiAgICAgbV9hY3Rpdml0eVN0YXRlID0gYWN0aXZpdHlTdGF0ZTsK
IAogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKQotICAgICAgICBz
ZXRGb2N1c2VkSW50ZXJuYWwoYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzRm9jdXNl
ZCk7CisgICAgICAgIHNldEZvY3VzZWRJbnRlcm5hbChhY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFj
dGl2aXR5U3RhdGU6OklzRm9jdXNlZCkpOwogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0
ZTo6V2luZG93SXNBY3RpdmUpIHsKLSAgICAgICAgc2V0QWN0aXZlSW50ZXJuYWwoYWN0aXZpdHlT
dGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICAgICAgc2V0QWN0aXZl
SW50ZXJuYWwoYWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0Fj
dGl2ZSkpOwogICAgICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkK
LSAgICAgICAgICAgIHNldElzVmlzaWJsZUFuZEFjdGl2ZUludGVybmFsKGFjdGl2aXR5U3RhdGUg
JiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CisgICAgICAgICAgICBzZXRJc1Zpc2li
bGVBbmRBY3RpdmVJbnRlcm5hbChhY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6
OldpbmRvd0lzQWN0aXZlKSk7CiAgICAgfQogfQogCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0
QWN0aXZlKGJvb2wgYWN0aXZlKQogewotICAgIG1fcGFnZS5zZXRBY3Rpdml0eVN0YXRlKGFjdGl2
ZSA/IG1fYWN0aXZpdHlTdGF0ZSB8IEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIDogbV9h
Y3Rpdml0eVN0YXRlICYgfkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICBtX3Bh
Z2Uuc2V0QWN0aXZpdHlTdGF0ZShhY3RpdmUgPyBtX2FjdGl2aXR5U3RhdGUgfCBBY3Rpdml0eVN0
YXRlOjpXaW5kb3dJc0FjdGl2ZSA6IG1fYWN0aXZpdHlTdGF0ZSAtIEFjdGl2aXR5U3RhdGU6Oldp
bmRvd0lzQWN0aXZlKTsKIH0KIAogdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2ZUludGVy
bmFsKGJvb2wgYWN0aXZlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5o
CShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBGb2N1c0NhbmRpZGF0
ZTsKIGNsYXNzIEZvY3VzQ29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRm9jdXNDb250cm9sbGVyKFBhZ2UmLCBBY3Rpdml0eVN0
YXRlOjpGbGFncyk7CisgICAgZXhwbGljaXQgRm9jdXNDb250cm9sbGVyKFBhZ2UmLCBPcHRpb25T
ZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRG
b2N1c2VkRnJhbWUoRnJhbWUqKTsKICAgICBGcmFtZSogZm9jdXNlZEZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9mb2N1c2VkRnJhbWUuZ2V0KCk7IH0KQEAgLTYyLDE1ICs2MiwxNSBAQCBwdWJsaWM6
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqLCBG
cmFtZSYsIEZvY3VzRGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rpb25Ob25lKTsKIAotICAgIHZvaWQg
c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyk7CisgICAgdm9pZCBzZXRBY3Rp
dml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPik7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEFjdGl2ZShib29sKTsKLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7
IH0KKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNv
bnRhaW5zKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsgfQogCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRGb2N1c2VkKGJvb2wpOwotICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkOyB9Cisg
ICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUuY29udGFp
bnMoQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKTsgfQogCi0gICAgYm9vbCBjb250ZW50SXNWaXNp
YmxlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNW
aXNpYmxlOyB9CisgICAgYm9vbCBjb250ZW50SXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9h
Y3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7IH0KIAogICAg
IC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgaW4gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5t
bS4KICAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBuZXh0Rm9jdXNhYmxlRWxlbWVudChOb2Rl
Jik7CkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAg
UmVmUHRyPEZyYW1lPiBtX2ZvY3VzZWRGcmFtZTsKICAgICBib29sIG1faXNDaGFuZ2luZ0ZvY3Vz
ZWRGcmFtZTsKLSAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBtX2FjdGl2aXR5U3RhdGU7CisgICAg
T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG1fYWN0aXZpdHlTdGF0ZTsKIAogICAgIFRp
bWVyIG1fZm9jdXNSZXBhaW50VGltZXI7CiAgICAgTW9ub3RvbmljVGltZSBtX2ZvY3VzU2V0VGlt
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDcgKzE5MiwxMCBAQCBz
dGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPCiAgICAgfQogfQogCi1zdGF0
aWMgY29uc3QgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgUGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlID0g
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlIHwgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKK3N0
YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IHBhZ2VJbml0aWFs
QWN0aXZpdHlTdGF0ZSgpCit7CisgICAgcmV0dXJuIHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
LCBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93IH07Cit9CiAKIFBhZ2U6OlBhZ2UoUGFnZUNvbmZp
Z3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICA6IG1fY2hyb21lKHN0ZDo6bWFrZV91
bmlxdWU8Q2hyb21lPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCkpCkBA
IC0yMDAsNyArMjAzLDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25m
aQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgLCBtX2RyYWdDb250cm9sbGVyKHN0ZDo6
bWFrZV91bmlxdWU8RHJhZ0NvbnRyb2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uZHJh
Z0NsaWVudCkpCiAjZW5kaWYKLSAgICAsIG1fZm9jdXNDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlx
dWU8Rm9jdXNDb250cm9sbGVyPigqdGhpcywgUGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKSkKKyAg
ICAsIG1fZm9jdXNDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9jdXNDb250cm9sbGVyPigq
dGhpcywgcGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKCkpKQogI2lmIEVOQUJMRShDT05URVhUX01F
TlVTKQogICAgICwgbV9jb250ZXh0TWVudUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxDb250
ZXh0TWVudUNvbnRyb2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVD
bGllbnQpKQogI2VuZGlmCkBAIC0yMjQsNyArMjI3LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmln
dXJhdGlvbiYmIHBhZ2VDb25maQogICAgICwgbV9ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eShT
Y3JvbGxFbGFzdGljaXR5QWxsb3dlZCkKICAgICAsIG1fZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZh
bChET01UaW1lcjo6ZGVmYXVsdEFsaWdubWVudEludGVydmFsKCkpCiAgICAgLCBtX2RvbVRpbWVy
QWxpZ25tZW50SW50ZXJ2YWxJbmNyZWFzZVRpbWVyKCp0aGlzLCAmUGFnZTo6ZG9tVGltZXJBbGln
bm1lbnRJbnRlcnZhbEluY3JlYXNlVGltZXJGaXJlZCkKLSAgICAsIG1fYWN0aXZpdHlTdGF0ZShQ
YWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUpCisgICAgLCBtX2FjdGl2aXR5U3RhdGUocGFnZUluaXRp
YWxBY3Rpdml0eVN0YXRlKCkpCiAgICAgLCBtX2FsdGVybmF0aXZlVGV4dENsaWVudChwYWdlQ29u
ZmlndXJhdGlvbi5hbHRlcm5hdGl2ZVRleHRDbGllbnQpCiAgICAgLCBtX2NvbnNvbGVDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQogI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQpAQCAtMTA4OSw3ICsxMDkyLDcgQEAgdW5zaWduZWQgUGFnZTo6cGFn
ZUNvdW50KCkgY29uc3QKIAogdm9pZCBQYWdlOjpzZXRJc0luV2luZG93KGJvb2wgaXNJbldpbmRv
dykKIHsKLSAgICBzZXRBY3Rpdml0eVN0YXRlKGlzSW5XaW5kb3cgPyBtX2FjdGl2aXR5U3RhdGUg
fCBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93IDogbV9hY3Rpdml0eVN0YXRlICYgfkFjdGl2aXR5
U3RhdGU6OklzSW5XaW5kb3cpOworICAgIHNldEFjdGl2aXR5U3RhdGUoaXNJbldpbmRvdyA/IG1f
YWN0aXZpdHlTdGF0ZSB8IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgOiBtX2FjdGl2aXR5U3Rh
dGUgLSBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKIH0KIAogdm9pZCBQYWdlOjpzZXRJc0lu
V2luZG93SW50ZXJuYWwoYm9vbCBpc0luV2luZG93KQpAQCAtMTM1Niw3ICsxMzU5LDcgQEAgdm9p
ZCBQYWdlOjp1cGRhdGVUaW1lclRocm90dGxpbmdTdGF0ZSgpCiAgICAgLy8gSWYgdGhlIHBhZ2Ug
aXMgdmlzaWJsZSAoYnV0IGlkbGUpLCB0aGVyZSBpcyBhbnkgYWN0aXZpdHkgKGxvYWRpbmcsIG1l
ZGlhIHBsYXlpbmcsIGV0YyksIG9yIHBlciBzZXR0aW5nLAogICAgIC8vIHdlIGFsbG93IHRpbWVy
IHRocm90dGxpbmcsIGJ1dCBub3QgaW5jcmVhc2luZyB0aW1lciB0aHJvdHRsaW5nLgogICAgIGlm
ICghbV9zZXR0aW5ncy0+aGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXMo
KQotICAgICAgICB8fCBtX2FjdGl2aXR5U3RhdGUgJiAoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
IHwgQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlIHwgQWN0aXZpdHlTdGF0ZTo6SXNMb2FkaW5nIHwg
QWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSkpIHsKKyAgICAgICAgfHwgbV9hY3Rpdml0
eVN0YXRlLmNvbnRhaW5zQW55KHtBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIEFjdGl2aXR5U3Rh
dGU6OklzQXVkaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXNMb2FkaW5nLCBBY3Rpdml0eVN0YXRlOjpJ
c0NhcHR1cmluZ01lZGlhIH0pKSB7CiAgICAgICAgIHNldFRpbWVyVGhyb3R0bGluZ1N0YXRlKFRp
bWVyVGhyb3R0bGluZ1N0YXRlOjpFbmFibGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTE1OTAsMTMgKzE1OTMsMTMgQEAgdm9pZCBQYWdlOjpyZXN1bWVBbmltYXRpbmdJbWFnZXMoKQog
ICAgICAgICB2aWV3LT5yZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJh
bWVzKCk7CiB9CiAKLXZvaWQgUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpG
bGFncyBhY3Rpdml0eVN0YXRlKQordm9pZCBQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNl
dDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlKQogewotICAgIEFjdGl2aXR5U3Rh
dGU6OkZsYWdzIGNoYW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOworICAg
IGF1dG8gY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIGFjdGl2aXR5U3RhdGU7CiAgICAgaWYg
KCFjaGFuZ2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBv
bGRBY3Rpdml0eVN0YXRlID0gbV9hY3Rpdml0eVN0YXRlOworICAgIGF1dG8gb2xkQWN0aXZpdHlT
dGF0ZSA9IG1fYWN0aXZpdHlTdGF0ZTsKIAogICAgIGJvb2wgd2FzVmlzaWJsZUFuZEFjdGl2ZSA9
IGlzVmlzaWJsZUFuZEFjdGl2ZSgpOwogICAgIG1fYWN0aXZpdHlTdGF0ZSA9IGFjdGl2aXR5U3Rh
dGU7CkBAIC0xNjA0LDE3ICsxNjA3LDE3IEBAIHZvaWQgUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShB
Y3Rpdml0eVN0YXQKICAgICBtX2ZvY3VzQ29udHJvbGxlci0+c2V0QWN0aXZpdHlTdGF0ZShhY3Rp
dml0eVN0YXRlKTsKIAogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
KQotICAgICAgICBzZXRJc1Zpc2libGVJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlKTsKKyAgICAgICAgc2V0SXNWaXNpYmxlSW50ZXJuYWwoYWN0aXZpdHlT
dGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpKTsKICAgICBpZiAoY2hhbmdl
ZCAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpCi0gICAgICAgIHNldElzSW5XaW5kb3dJbnRl
cm5hbChhY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CisgICAgICAg
IHNldElzSW5XaW5kb3dJbnRlcm5hbChhY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3Rh
dGU6OklzSW5XaW5kb3cpKTsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlz
dWFsbHlJZGxlKQotICAgICAgICBzZXRJc1Zpc3VhbGx5SWRsZUludGVybmFsKGFjdGl2aXR5U3Rh
dGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CisgICAgICAgIHNldElzVmlzdWFs
bHlJZGxlSW50ZXJuYWwoYWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc1Zp
c3VhbGx5SWRsZSkpOwogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNB
Y3RpdmUpIHsKICAgICAgICAgaWYgKGF1dG8qIHZpZXcgPSBtX21haW5GcmFtZS0+dmlldygpKQog
ICAgICAgICAgICAgdmlldy0+dXBkYXRlVGlsZWRCYWNraW5nQWRhcHRpdmVTaXppbmcoKTsKICAg
ICB9CiAKLSAgICBpZiAoY2hhbmdlZCAmIChBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBBY3Rp
dml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSB8IEFjdGl2aXR5U3RhdGU6OklzQXVkaWJsZSB8IEFj
dGl2aXR5U3RhdGU6OklzTG9hZGluZyB8IEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEp
KQorICAgIGlmIChjaGFuZ2VkLmNvbnRhaW5zQW55KHtBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUs
IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlLCBBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUs
IEFjdGl2aXR5U3RhdGU6OklzTG9hZGluZywgQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRp
YSB9KSkKICAgICAgICAgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUoKTsKIAogICAgIGZvciAo
YXV0byogb2JzZXJ2ZXIgOiBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcnMpCkBAIC0xNjI5
LDIwICsxNjMyLDI2IEBAIHZvaWQgUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXQK
IAogYm9vbCBQYWdlOjppc1Zpc2libGVBbmRBY3RpdmUoKSBjb25zdAogewotICAgIHJldHVybiAo
bV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSAmJiAobV9hY3Rpdml0
eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgIHJldHVybiBtX2Fj
dGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSAmJiBtX2FjdGl2
aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOwogfQogCiBi
b29sIFBhZ2U6OmlzV2luZG93QWN0aXZlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9hY3Rpdml0
eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgcmV0dXJuIG1fYWN0
aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiB9CiAK
IHZvaWQgUGFnZTo6c2V0SXNWaXNpYmxlKGJvb2wgaXNWaXNpYmxlKQogewotICAgIGlmIChpc1Zp
c2libGUpCi0gICAgICAgIHNldEFjdGl2aXR5U3RhdGUoKG1fYWN0aXZpdHlTdGF0ZSAmIH5BY3Rp
dml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSkgfCBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkKTsKLSAgICBlbHNlCi0gICAgICAgIHNl
dEFjdGl2aXR5U3RhdGUoKG1fYWN0aXZpdHlTdGF0ZSAmIH4oQWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlIHwgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCkpIHwgQWN0aXZpdHlTdGF0
ZTo6SXNWaXN1YWxseUlkbGUpOworICAgIGF1dG8gc3RhdGUgPSBtX2FjdGl2aXR5U3RhdGU7CisK
KyAgICBpZiAoaXNWaXNpYmxlKSB7CisgICAgICAgIHN0YXRlIC09IEFjdGl2aXR5U3RhdGU6Oklz
VmlzdWFsbHlJZGxlOworICAgICAgICBzdGF0ZSB8PSB7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJs
ZSwgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB9OworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlOworICAgICAgICBz
dGF0ZSAtPSB7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlT3JPY2NsdWRlZCB9OworICAgIH0KKyAgICBzZXRBY3Rpdml0eVN0YXRlKHN0YXRlKTsKIH0K
IAogZW51bSBjbGFzcyBTVkdBbmltYXRpb25zU3RhdGUgeyBQYXVzZWQsIFJlc3VtZWQgfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDE1LDE4ICs0MTUsMTggQEAgcHVibGljOgogI2Vu
ZGlmCiAKICAgICAvLyBOb3RpZmljYXRpb25zIHdoZW4gdGhlIFBhZ2Ugc3RhcnRzIGFuZCBzdG9w
cyBiZWluZyBwcmVzZW50ZWQgdmlhIGEgbmF0aXZlIHdpbmRvdy4KLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MpOwotICAgIEFjdGl2
aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5
U3RhdGU7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFjdGl2aXR5U3RhdGUoT3B0aW9u
U2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+KTsKKyAgICBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6
RmxhZz4gYWN0aXZpdHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZTsgfQog
CiAgICAgYm9vbCBpc1dpbmRvd0FjdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNWaXNpYmxlQW5k
QWN0aXZlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc1Zpc2libGUoYm9v
bCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc1ByZXJlbmRlcigpOwotICAgIGJvb2wg
aXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlOyB9CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2Fj
dGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsgfQogCiAgICAg
Ly8gTm90aWZpY2F0aW9uIHRoYXQgdGhpcyBQYWdlIHdhcyBtb3ZlZCBpbnRvIG9yIG91dCBvZiBh
IG5hdGl2ZSB3aW5kb3cuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc0luV2luZG93KGJv
b2wpOwotICAgIGJvb2wgaXNJbldpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0
ZSAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7IH0KKyAgICBib29sIGlzSW5XaW5kb3coKSBj
b25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNJ
bldpbmRvdyk7IH0KIAogICAgIHZvaWQgc2V0SXNDbG9zaW5nKCkgeyBtX2lzQ2xvc2luZyA9IHRy
dWU7IH0KICAgICBib29sIGlzQ2xvc2luZygpIGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zaW5nOyB9
CkBAIC04MTEsNyArODExLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9pc0VkaXRhYmxlIHsg
ZmFsc2UgfTsKICAgICBib29sIG1faXNQcmVyZW5kZXIgeyBmYWxzZSB9OwotICAgIEFjdGl2aXR5
U3RhdGU6OkZsYWdzIG1fYWN0aXZpdHlTdGF0ZTsKKyAgICBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0
ZTo6RmxhZz4gbV9hY3Rpdml0eVN0YXRlOwogCiAgICAgTGF5b3V0TWlsZXN0b25lcyBtX3JlcXVl
c3RlZExheW91dE1pbGVzdG9uZXMgeyAwIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2VNb25pdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlTW9uaXRvci5jcHAJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyAr
NTUsNyBAQCBzdGF0aWMgY29uc3QgZG91YmxlIHBvc3RQYWdlTG9hZENQVVVzYWdlCiBzdGF0aWMg
Y29uc3QgdWludDY0X3QgcG9zdFBhZ2VMb2FkTWVtb3J5VXNhZ2VEb21haW5SZXBvcnRpbmdUaHJl
c2hvbGQgeyAyMDQ4ICogTUIgfTsKICNlbmRpZgogCi1zdGF0aWMgaW5saW5lIEFjdGl2aXR5U3Rh
dGVGb3JDUFVTYW1wbGluZyBhY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcoQWN0aXZpdHlTdGF0
ZTo6RmxhZ3Mgc3RhdGUpCitzdGF0aWMgaW5saW5lIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGlu
ZyBhY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZs
YWc+IHN0YXRlKQogewogICAgIGlmICghKHN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
KSkKICAgICAgICAgcmV0dXJuIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6Tm9uVmlzaWJs
ZTsKQEAgLTEwMSwxMCArMTAxLDEwIEBAIHZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjpkaWRGaW5p
c2hMb2FkKCkKICAgICAgICAgbV9wb3N0UGFnZUxvYWRNZW1vcnlVc2FnZVRpbWVyLnN0YXJ0T25l
U2hvdChtZW1vcnlVc2FnZU1lYXN1cmVtZW50RGVsYXkpOwogfQogCi12b2lkIFBlcmZvcm1hbmNl
TW9uaXRvcjo6YWN0aXZpdHlTdGF0ZUNoYW5nZWQoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgb2xkU3Rh
dGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld1N0YXRlKQordm9pZCBQZXJmb3JtYW5jZU1vbml0
b3I6OmFjdGl2aXR5U3RhdGVDaGFuZ2VkKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBv
bGRTdGF0ZSwgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG5ld1N0YXRlKQogewotICAg
IEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBvbGRTdGF0ZSBeIG5ld1N0YXRlOwotICAg
IGJvb2wgdmlzaWJpbGl0eUNoYW5nZWQgPSBjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlOworICAgIGF1dG8gY2hhbmdlZCA9IG9sZFN0YXRlIF4gbmV3U3RhdGU7CisgICAgYm9vbCB2
aXNpYmlsaXR5Q2hhbmdlZCA9IGNoYW5nZWQuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlKTsKIAogICAgIC8vIE1lYXN1cmUgQ1BVIHVzYWdlIG9mIHBhZ2VzIHdoZW4gdGhleSBhcmUg
bm8gbG9uZ2VyIHZpc2libGUuCiAgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6aXNQ
b3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkgJiYgdmlzaWJpbGl0
eUNoYW5nZWQpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3Iu
aAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1v
bml0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7
Ci0gICAgdm9pZCBhY3Rpdml0eVN0YXRlQ2hhbmdlZChBY3Rpdml0eVN0YXRlOjpGbGFncyBvbGRT
dGF0ZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbmV3U3RhdGUpOworICAgIHZvaWQgYWN0aXZpdHlT
dGF0ZUNoYW5nZWQoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG9sZFN0YXRlLCBPcHRp
b25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbmV3U3RhdGUpOwogCiBwcml2YXRlOgogICAgIHZv
aWQgbWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMzMSw3ICs0MzMxLDcgQEAgdm9pZCBJ
bnRlcm5hbHM6OnNldFBhZ2VWaXNpYmlsaXR5KGJvb2wgaQogICAgIGF1dG8gc3RhdGUgPSBwYWdl
LmFjdGl2aXR5U3RhdGUoKTsKIAogICAgIGlmICghaXNWaXNpYmxlKQotICAgICAgICBzdGF0ZSAm
PSB+QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworICAgICAgICBzdGF0ZSAtPSBBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGU7CiAgICAgZWxzZQogICAgICAgICBzdGF0ZSB8PSBBY3Rpdml0eVN0YXRl
OjpJc1Zpc2libGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ4NDgpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE4LTA4
LTE0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0
aW9uU2V0IGZvciBBY3Rpdml0eVN0YXRlOjpGbGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OndpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OndpbmRvd0RpZE9yZGVyT25TY3JlZW4pOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6dmlld0RpZE1vdmVUb1dpbmRvdyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
dXBkYXRlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWN0
aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlz
cGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRNdXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNQbGF5aW5nTWVk
aWFEaWRDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc0luV2luZG93IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojppc1ZpZXdWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojppc1ZpZXdGb2N1c2VkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojppc1ZpZXdXaW5kb3dBY3RpdmUgY29uc3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmll
dzo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
aDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp1cGRhdGVUaHJvdHRsZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6dXBkYXRlSXNJbldpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnZpc2liaWxp
dHlEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjppc1Zpc2libGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojppc1Zpc2libGVPck9jY2x1ZGVkIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdl
YktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKwogMjAxOC0wOC0xMyAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBbbWFjT1NdIEltcGxlbWVudCBh
IG1lY2hhbmlzbSB0byB0ZXN0IGRyYWcgYW5kIGRyb3AKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIzNDg0MSkK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyB7CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplOwogCi0gICAgV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZTsKKyAgICBPcHRpb25TZXQ8V2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZTsKICAgICAKICAgICBXZWJQcmVm
ZXJlbmNlc1N0b3JlIHN0b3JlOwogICAgIERyYXdpbmdBcmVhVHlwZSBkcmF3aW5nQXJlYVR5cGU7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9u
IDIzNDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0OTIsOSArMTQ5Miw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRT
dXBwcmVzc1Zpc2liaWxpdHkKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVB
Y3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUpCit2b2lkIFdl
YlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6
RmxhZz4gZmxhZ3NUb1VwZGF0ZSkKIHsKLSAgICBtX2FjdGl2aXR5U3RhdGUgJj0gfmZsYWdzVG9V
cGRhdGU7CisgICAgbV9hY3Rpdml0eVN0YXRlID0gbV9hY3Rpdml0eVN0YXRlIC0gZmxhZ3NUb1Vw
ZGF0ZTsKICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCAm
JiBtX3BhZ2VDbGllbnQuaXNWaWV3Rm9jdXNlZCgpKQogICAgICAgICBtX2FjdGl2aXR5U3RhdGUg
fD0gQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0
aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgJiYgbV9wYWdlQ2xpZW50LmlzVmlld1dpbmRvd0Fj
dGl2ZSgpKQpAQCAtMTUxNSw5ICsxNTE1LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUFj
dGl2aXR5U3RhdGUoQQogICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6
SXNDYXB0dXJpbmdNZWRpYTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbWF5SGF2ZUNoYW5nZWQsIGJvb2wgd2FudHNT
eW5jaHJvbm91c1JlcGx5LCBBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlIGRpc3BhdGNo
TW9kZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNl
dDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBtYXlIYXZlQ2hhbmdlZCwgYm9vbCB3YW50c1N5bmNocm9u
b3VzUmVwbHksIEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgZGlzcGF0Y2hNb2RlKQog
ewotICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2VQ
cm94eSAiIDw8IHBhZ2VJRCgpIDw8ICIgYWN0aXZpdHlTdGF0ZURpZENoYW5nZSAtIG1heUhhdmVD
aGFuZ2VkICIgPDwgIGFjdGl2aXR5U3RhdGVGbGFnc1RvU3RyaW5nKG1heUhhdmVDaGFuZ2VkKSk7
CisgICAgTE9HX1dJVEhfU1RSRUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8PCAiV2ViUGFnZVBy
b3h5ICIgPDwgcGFnZUlEKCkgPDwgIiBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlIC0gbWF5SGF2ZUNo
YW5nZWQgIiA8PCBtYXlIYXZlQ2hhbmdlZCk7CiAKICAgICBtX3BvdGVudGlhbGx5Q2hhbmdlZEFj
dGl2aXR5U3RhdGVGbGFncyB8PSBtYXlIYXZlQ2hhbmdlZDsKICAgICBtX2FjdGl2aXR5U3RhdGVD
aGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPSBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5
bmNocm9ub3VzUmVwbHkgfHwgd2FudHNTeW5jaHJvbm91c1JlcGx5OwpAQCAtMTU2NiwyMCArMTU2
NiwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlCiAgICAgaWYg
KCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPR19XSVRIX1NUUkVBTShBY3Rp
dml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2VQcm94eSAiIDw8IHBhZ2VJRCgpIDw8ICIgZGlz
cGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlIC0gcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0
ZUZsYWdzICIgPDwgYWN0aXZpdHlTdGF0ZUZsYWdzVG9TdHJpbmcobV9wb3RlbnRpYWxseUNoYW5n
ZWRBY3Rpdml0eVN0YXRlRmxhZ3MpKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0
ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBwYWdlSUQoKSA8PCAiIGRpc3BhdGNoQWN0
aXZpdHlTdGF0ZUNoYW5nZSAtIHBvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyAi
IDw8IG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzKTsKIAogICAgIC8vIElm
IHRoZSB2aXNpYmlsaXR5IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4gc28gbWF5IHRoZSB2
aXN1YWxseSBpZGxlICYgb2NjbHVkZWQgYWdub3N0aWMgc3RhdGUuCiAgICAgaWYgKG1fcG90ZW50
aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
KQotICAgICAgICBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyB8PSBBY3Rp
dml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkIHwgQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxs
eUlkbGU7CisgICAgICAgIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzIHw9
IHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCwgQWN0aXZpdHlTdGF0ZTo6SXNW
aXN1YWxseUlkbGUgfTsKIAogICAgIC8vIFJlY29yZCB0aGUgcHJpb3IgdmlldyBzdGF0ZSwgdXBk
YXRlIHRoZSBmbGFncyB0aGF0IG1heSBoYXZlIGNoYW5nZWQsCiAgICAgLy8gYW5kIGNoZWNrIHdo
aWNoIGZsYWdzIGhhdmUgYWN0dWFsbHkgY2hhbmdlZC4KLSAgICBBY3Rpdml0eVN0YXRlOjpGbGFn
cyBwcmV2aW91c0FjdGl2aXR5U3RhdGUgPSBtX2FjdGl2aXR5U3RhdGU7CisgICAgYXV0byBwcmV2
aW91c0FjdGl2aXR5U3RhdGUgPSBtX2FjdGl2aXR5U3RhdGU7CiAgICAgdXBkYXRlQWN0aXZpdHlT
dGF0ZShtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyk7Ci0gICAgQWN0aXZp
dHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIHByZXZpb3VzQWN0aXZp
dHlTdGF0ZTsKKyAgICBhdXRvIGNoYW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBwcmV2aW91c0Fj
dGl2aXR5U3RhdGU7CiAKICAgICBpZiAoY2hhbmdlZCkKLSAgICAgICAgTE9HX1dJVEhfU1RSRUFN
KEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8PCAiV2ViUGFnZVByb3h5ICIgPDwgcGFnZUlEKCkgPDwg
IiBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2U6IHN0YXRlIGNoYW5nZWQgZnJvbSAiIDw8IGFj
dGl2aXR5U3RhdGVGbGFnc1RvU3RyaW5nKHByZXZpb3VzQWN0aXZpdHlTdGF0ZSkgPDwgIiB0byAi
IDw8IGFjdGl2aXR5U3RhdGVGbGFnc1RvU3RyaW5nKG1fYWN0aXZpdHlTdGF0ZSkpOworICAgICAg
ICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkg
IiA8PCBwYWdlSUQoKSA8PCAiIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZTogc3RhdGUgY2hh
bmdlZCBmcm9tICIgPDwgcHJldmlvdXNBY3Rpdml0eVN0YXRlIDw8ICIgdG8gIiA8PCBtX2FjdGl2
aXR5U3RhdGUpOwogCiAgICAgaWYgKChtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVG
bGFncyAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgJiYgaXNWaWV3VmlzaWJsZSgpKQogICAg
ICAgICB2aWV3SXNCZWNvbWluZ1Zpc2libGUoKTsKQEAgLTE2MzcsNyArMTYzNyw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGUKICAgICBpZiAoYWN0aXZpdHlTdGF0
ZUNoYW5nZUlEICE9IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMpCiAgICAgICAgIHdh
aXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCk7CiAKLSAg
ICBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyA9IEFjdGl2aXR5U3RhdGU6
Ok5vRmxhZ3M7CisgICAgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgPSB7
IH07CiAgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gZmFs
c2U7CiAgICAgbV92aWV3V2FzRXZlckluV2luZG93IHw9IGlzTm93SW5XaW5kb3c7CiB9CkBAIC00
NzEyLDcgKzQ3MTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TXV0ZWQoV2ViQ29yZTo6TWVk
CiAjZW5kaWYKIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TXV0
ZWQoc3RhdGUpLCBtX3BhZ2VJRCk7Ci0gICAgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0
eVN0YXRlOjpJc0F1ZGlibGUgfCBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhKTsKKyAg
ICBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlLCBBY3Rp
dml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhIH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0TWVkaWFDYXB0dXJlRW5hYmxlZChib29sIGVuYWJsZWQpCkBAIC03MjY5LDcgKzcyNjksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6aXNQbGF5aW5nTWVkaWFEaWRDaGFuCiAgICAgfQogI2VuZGlm
CiAKLSAgICBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OklzQXVkaWJsZSB8
IEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEpOworICAgIGFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoeyBBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUsIEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVy
aW5nTWVkaWEgfSk7CiAKICAgICBwbGF5aW5nTWVkaWFNYXNrIHw9IFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6Ok1lZGlhQ2FwdHVyZU1hc2s7CiAgICAgaWYgKChvbGRTdGF0ZSAmIHBsYXlpbmdNZWRp
YU1hc2spICE9IChtX21lZGlhU3RhdGUgJiBwbGF5aW5nTWVkaWFNYXNrKSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTE1
LDE3ICs1MTUsMTcgQEAgcHVibGljOgogICAgIGJvb2wgZGVsZWdhdGVzU2Nyb2xsaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9kZWxlZ2F0ZXNTY3JvbGxpbmc7IH0KIAogICAgIGVudW0gY2xhc3MgQWN0
aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZSB7IERlZmVycmFibGUsIEltbWVkaWF0ZSB9Owot
ICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFncyBtYXlIYXZlQ2hhbmdlZCwgYm9vbCB3YW50c1N5bmNocm9ub3VzUmVwbHkgPSBmYWxzZSwg
QWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZSA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNw
YXRjaE1vZGU6OkRlZmVycmFibGUpOwotICAgIGJvb2wgaXNJbldpbmRvdygpIGNvbnN0IHsgcmV0
dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7
IH0KKyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OkZsYWc+IG1heUhhdmVDaGFuZ2VkLCBib29sIHdhbnRzU3luY2hyb25vdXNS
ZXBseSA9IGZhbHNlLCBBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlID0gQWN0aXZpdHlT
dGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6RGVmZXJyYWJsZSk7CisgICAgYm9vbCBpc0luV2luZG93
KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OklzSW5XaW5kb3cpOyB9CiAgICAgdm9pZCB3YWl0Rm9yRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZShBY3Rpdml0eVN0YXRlQ2hhbmdlSUQpOwogICAgIHZvaWQgZGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZSgpIHsgbV93YWl0aW5nRm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSA9IGZhbHNlOyB9
CiAKICAgICB2b2lkIGxheWVySG9zdGluZ01vZGVEaWRDaGFuZ2UoKTsKIAogICAgIFdlYkNvcmU6
OkludFNpemUgdmlld1NpemUoKSBjb25zdDsKLSAgICBib29sIGlzVmlld1Zpc2libGUoKSBjb25z
dCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zp
c2libGU7IH0KLSAgICBib29sIGlzVmlld0ZvY3VzZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2
aXR5U3RhdGUgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQ7IH0KLSAgICBib29s
IGlzVmlld1dpbmRvd0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlOyB9CisgICAgYm9vbCBpc1ZpZXdW
aXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7IH0KKyAgICBib29sIGlzVmlld0ZvY3VzZWQoKSBj
b25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6SXNGb2N1c2VkKTsgfQorICAgIGJvb2wgaXNWaWV3V2luZG93QWN0aXZlKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OldpbmRvd0lzQWN0aXZlKTsgfQogCiAgICAgdm9pZCBhZGRNSU1FVHlwZVdpdGhDdXN0b21Db250
ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKQEAgLTEzNTgsNyArMTM1OCw3
IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBnb1RvQmFja0Zvcndh
cmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlKTsK
IAotICAgIHZvaWQgdXBkYXRlQWN0aXZpdHlTdGF0ZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFncyBmbGFnc1RvVXBkYXRlID0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6QWxsRmxhZ3MpOwor
ICAgIHZvaWQgdXBkYXRlQWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6RmxhZz4gZmxhZ3NUb1VwZGF0ZSA9IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OmFsbEZs
YWdzKCkpOwogICAgIHZvaWQgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogICAgIHZvaWQgdXBkYXRl
SGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzKCk7CiAKQEAgLTE5MzksNyArMTkzOSw3
IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5PiBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKICNl
bmRpZgogCi0gICAgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbV9hY3Rpdml0eVN0YXRl
IHsgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6Tm9GbGFncyB9OworICAgIE9wdGlvblNldDxXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBtX2FjdGl2aXR5U3RhdGU7CiAgICAgYm9vbCBtX3Zp
ZXdXYXNFdmVySW5XaW5kb3cgeyBmYWxzZSB9OwogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29s
IG1fYWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrIHsgZmFsc2UgfTsKQEAgLTIxNzYs
NyArMjE3Niw3IEBAIHByaXZhdGU6CiAgICAgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIG1fY3VycmVu
dEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCB7IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMg
fTsKIAogICAgIFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFwIG1fY29uZmlndXJhdGlvblBy
ZWZlcmVuY2VWYWx1ZXM7Ci0gICAgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbV9wb3Rl
bnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpOb0ZsYWdzIH07CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+
IG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzOwogICAgIGJvb2wgbV9hY3Rp
dml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5IHsgZmFsc2UgfTsKICAgICBWZWN0
b3I8Q2FsbGJhY2tJRD4gbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrczsKIApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHJldmlz
aW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODkyLDEzICsxODkyLDEzIEBAIGZsb2F0IFdlYlZpZXdJ
bXBsOjppbnRyaW5zaWNEZXZpY2VTY2FsZUYKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZE9y
ZGVyT2ZmU2NyZWVuKCkKIHsKICAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVw
IChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdl
SUQoKSk7Ci0gICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZSB8IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0
aXZlKTsKKyAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoeyBXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0
aXZlIH0pOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRPcmRlck9uU2NyZWVuKCkK
IHsKICAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdp
bmRvd0RpZE9yZGVyT25TY3JlZW4iLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBtX3Bh
Z2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlIHwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgIG1fcGFn
ZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZSh7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfSk7CiB9CiAKIHZv
aWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZEJlY29tZUtleShOU1dpbmRvdyAqa2V5V2luZG93KQpA
QCAtMjA2NCw3ICsyMDY0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZE1vdmVUb1dpbmRv
dygpCiAgICAgaWYgKHdpbmRvdykgewogICAgICAgICB3aW5kb3dEaWRDaGFuZ2VTY3JlZW4oKTsK
IAotICAgICAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlQ2hh
bmdlcyA9IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIHwgV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworICAgICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZUNoYW5nZXMgeyBXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
IH07CiAgICAgICAgIGlmIChtX3Nob3VsZERlZmVyVmlld0luV2luZG93Q2hhbmdlcykKICAgICAg
ICAgICAgIG1fdmlld0luV2luZG93Q2hhbmdlV2FzRGVmZXJyZWQgPSB0cnVlOwogICAgICAgICBl
bHNlCkBAIC0yMDkwLDcgKzIwOTAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3RGlkTW92ZVRv
V2luZG93KCkKICAgICAgICAgaWYgKG1faW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIg
JiYgIVtbbV92aWV3IGdlc3R1cmVSZWNvZ25pemVyc10gY29udGFpbnNPYmplY3Q6bV9pbW1lZGlh
dGVBY3Rpb25HZXN0dXJlUmVjb2duaXplci5nZXQoKV0gJiYgIW1faWdub3Jlc05vbldoZWVsRXZl
bnRzICYmIG1fYWxsb3dzTGlua1ByZXZpZXcpCiAgICAgICAgICAgICBbbV92aWV3IGFkZEdlc3R1
cmVSZWNvZ25pemVyOm1faW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2
aXR5U3RhdGVDaGFuZ2VzID0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUg
fCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisgICAgICAgIE9wdGlvblNldDxX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlcyB7IFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpJc1Zpc2libGUgfTsKICAgICAgICAgaWYgKG1fc2hvdWxkRGVmZXJWaWV3SW5XaW5kb3dDaGFu
Z2VzKQogICAgICAgICAgICAgbV92aWV3SW5XaW5kb3dDaGFuZ2VXYXNEZWZlcnJlZCA9IHRydWU7
CiAgICAgICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3Myw3ICsxMzczLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzOjp1cGRhdGVDUFVNb25pdG9yU3RhdGUoQwogCiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNz
OjpwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZSh1aW50NjRfdCwgV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6RmxhZ3MgY2hhbmdlZCkKK3ZvaWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UodWludDY0X3QsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFn
PiBjaGFuZ2VkKQogewogICAgIGlmIChjaGFuZ2VkICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
SXNWaXNpYmxlKQogICAgICAgICB1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0
ZVJlYXNvbjo6VmlzaWJpbGl0eUhhc0NoYW5nZWQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNyArMTk0LDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICB2b2lkIHVwZGF0ZUFjdGl2ZVBhZ2VzKCk7Ci0gICAgdm9pZCBw
YWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZSh1aW50NjRfdCBwYWdlSUQsIFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQpOworICAgIHZvaWQgcGFnZUFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UodWludDY0X3QgcGFnZUlELCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
RmxhZz4gY2hhbmdlZCk7CiAKICAgICB2b2lkIHNldEhpZGRlblBhZ2VET01UaW1lclRocm90dGxp
bmdJbmNyZWFzZUxpbWl0KGludCBtaWxsaXNlY29uZHMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gMjM0ODQx
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUxNSw3ICs1MTUsNyBAQCB2b2lkIFBsdWdpblZpZXc6OndlYlBhZ2VE
ZXN0cm95ZWQoKQogICAgIG1fd2ViUGFnZSA9IDA7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6YWN0
aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkKQordm9pZCBQ
bHVnaW5WaWV3OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKQogewogICAgIGlmICghbV9wbHVnaW4gfHwgIW1faXNJ
bml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCSh3b3JraW5nIGNvcHkpCkBA
IC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hbnVhbExvYWREaWRGaW5pc2hMb2Fk
aW5nKCk7CiAgICAgdm9pZCBtYW51YWxMb2FkRGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CiAKLSAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCk7CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKTsKICAg
ICB2b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSk7CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuaAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRh
dGVkU2Nyb2xsUG9zaXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZs
YWdzLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBW
ZWN0b3I8Q2FsbGJhY2tJRD4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJIb3N0aW5n
TW9kZShMYXllckhvc3RpbmdNb2RlKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBtYXJrTGF5ZXJz
Vm9sYXRpbGVJbW1lZGlhdGVseUlmUG9zc2libGUoKSB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24g
MjM0ODQxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY2MywxMyArNjYzLDkgQEAgdm9pZCBXZWJQYWdlOjpyZWluaXRp
YWxpemVXZWJQYWdlKFdlYlBhZwogCiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVRocm90dGxlU3RhdGUo
KQogewotICAgIC8vIFdlIHNob3VsZCBzdXBwcmVzcyBpZiB0aGUgcGFnZSBpcyBub3QgYWN0aXZl
LCBpcyB2aXN1YWxseSBpZGxlLCBhbmQgc3VwcmVzc2lvbiBpcyBlbmFibGVkLgotICAgIGJvb2wg
aXNMb2FkaW5nID0gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNMb2FkaW5nOwot
ICAgIGJvb2wgaXNQbGF5aW5nQXVkaW8gPSBtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRl
OjpJc0F1ZGlibGU7Ci0gICAgYm9vbCBpc0NhcHR1cmluZ01lZGlhID0gbV9hY3Rpdml0eVN0YXRl
ICYgQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYTsKLSAgICBib29sIGlzVmlzdWFsbHlJ
ZGxlID0gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlkbGU7Ci0g
ICAgYm9vbCB3aW5kb3dJc0FjdGl2ZSA9IG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6
OldpbmRvd0lzQWN0aXZlOwotICAgIGJvb2wgcGFnZVN1cHByZXNzZWQgPSAhd2luZG93SXNBY3Rp
dmUgJiYgIWlzTG9hZGluZyAmJiAhaXNQbGF5aW5nQXVkaW8gJiYgIWlzQ2FwdHVyaW5nTWVkaWEg
JiYgbV9wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkICYmIGlzVmlzdWFsbHlJZGxlOworICAgIGJv
b2wgaXNBY3RpdmUgPSBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnNBbnkoeyBBY3Rpdml0eVN0YXRl
OjpJc0xvYWRpbmcsIEFjdGl2aXR5U3RhdGU6OklzQXVkaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXND
YXB0dXJpbmdNZWRpYSwgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfSk7CisgICAgYm9v
bCBpc1Zpc3VhbGx5SWRsZSA9IG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRl
OjpJc1Zpc3VhbGx5SWRsZSk7CisgICAgYm9vbCBwYWdlU3VwcHJlc3NlZCA9IG1fcHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZCAmJiAhaXNBY3RpdmUgJiYgaXNWaXN1YWxseUlkbGU7CiAKICNpZiBQ
TEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykK
ICAgICBpZiAoIXBhZ2VTdXBwcmVzc2VkKSB7CkBAIC0yNzYwLDcgKzI3NTYsNyBAQCB2b2lkIFdl
YlBhZ2U6OnNldENhblN0YXJ0TWVkaWFUaW1lckZpcmVkCiAKIHZvaWQgV2ViUGFnZTo6dXBkYXRl
SXNJbldpbmRvdyhib29sIGlzSW5pdGlhbFN0YXRlKQogewotICAgIGJvb2wgaXNJbldpbmRvdyA9
IG1fYWN0aXZpdHlTdGF0ZSAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7Cisg
ICAgYm9vbCBpc0luV2luZG93ID0gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpOwogCiAgICAgaWYgKCFpc0luV2luZG93KSB7CiAgICAg
ICAgIG1fc2V0Q2FuU3RhcnRNZWRpYVRpbWVyLnN0b3AoKTsKQEAgLTI3ODUsNyArMjc4MSw3IEBA
IHZvaWQgV2ViUGFnZTo6dXBkYXRlSXNJbldpbmRvdyhib29sIGlzSW4KIAogdm9pZCBXZWJQYWdl
Ojp2aXNpYmlsaXR5RGlkQ2hhbmdlKCkKIHsKLSAgICBib29sIGlzVmlzaWJsZSA9IG1fYWN0aXZp
dHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsKKyAgICBib29sIGlzVmlzaWJsZSA9
IG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogICAg
IGlmICghaXNWaXNpYmxlKSB7CiAgICAgICAgIC8vIFdlIHNhdmUgdGhlIGRvY3VtZW50IC8gc2Ny
b2xsIHN0YXRlIHdoZW4gYmFja2dyb3VuZGluZyBhIHRhYiBzbyB0aGF0IHdlIGFyZSBhYmxlIHRv
IHJlc3RvcmUgaXQKICAgICAgICAgLy8gaWYgaXQgZ2V0cyB0ZXJtaW5hdGVkIHdoaWxlIGluIHRo
ZSBiYWNrZ3JvdW5kLgpAQCAtMjc5NCwxMSArMjc5MCwxMSBAQCB2b2lkIFdlYlBhZ2U6OnZpc2li
aWxpdHlEaWRDaGFuZ2UoKQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0
YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFu
Z2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2Fs
bGJhY2tJRHMpCit2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2
aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rp
dml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMp
CiB7Ci0gICAgTE9HX1dJVEhfU1RSRUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8PCAiV2ViUGFn
ZSAiIDw8IHBhZ2VJRCgpIDw8ICIgc2V0QWN0aXZpdHlTdGF0ZSB0byAiIDw8IGFjdGl2aXR5U3Rh
dGVGbGFnc1RvU3RyaW5nKGFjdGl2aXR5U3RhdGUpKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oQWN0
aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgcGFnZUlEKCkgPDwgIiBzZXRBY3Rp
dml0eVN0YXRlIHRvICIgPDwgYWN0aXZpdHlTdGF0ZSk7CiAKLSAgICBBY3Rpdml0eVN0YXRlOjpG
bGFncyBjaGFuZ2VkID0gbV9hY3Rpdml0eVN0YXRlIF4gYWN0aXZpdHlTdGF0ZTsKKyAgICBhdXRv
IGNoYW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOwogICAgIG1fYWN0aXZp
dHlTdGF0ZSA9IGFjdGl2aXR5U3RhdGU7CiAKICAgICBpZiAoY2hhbmdlZCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIzNDg0MSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNDk4LDggKzQ5OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFBsdWdpblZpZXco
UGx1Z2luVmlldyopOwogICAgIHZvaWQgcmVtb3ZlUGx1Z2luVmlldyhQbHVnaW5WaWV3Kik7CiAK
LSAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsgfQotICAgIGJvb2wgaXNWaXNpYmxlT3JP
Y2NsdWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQ7IH0KKyAgICBib29sIGlzVmlzaWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUpOyB9CisgICAgYm9vbCBpc1Zpc2libGVPck9jY2x1ZGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZU9yT2NjbHVkZWQpOyB9CiAKICAgICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9z
dGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX2xheWVySG9zdGluZ01vZGU7IH0KICAgICB2b2lk
IHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSk7CkBAIC0xMTcxLDcgKzExNzEs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9v
bCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYsIENhbGxiYWNr
SUQpOwogICAgIHZvaWQgdXBkYXRlSXNJbldpbmRvdyhib29sIGlzSW5pdGlhbFN0YXRlID0gZmFs
c2UpOwogICAgIHZvaWQgdmlzaWJpbGl0eURpZENoYW5nZSgpOwotICAgIHZvaWQgc2V0QWN0aXZp
dHlTdGF0ZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncywgQWN0aXZpdHlTdGF0ZUNoYW5n
ZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKTsKKyAgICB2b2lkIHNl
dEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+LCBB
Y3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJ
RHMpOwogICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQp
OwogICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgc2V0RWRpdGFibGUoYm9vbCk7CkBAIC0xNjg5LDcgKzE2ODksNyBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBtX3VzZUFzeW5jU2Nyb2xsaW5nIHsgZmFsc2UgfTsKIAotICAg
IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIG1fYWN0aXZpdHlTdGF0ZTsKKyAgICBPcHRp
b25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbV9hY3Rpdml0eVN0YXRlOwogCiAg
ICAgYm9vbCBtX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQ7CiAgICAgVXNlckFjdGl2aXR5IG1f
dXNlckFjdGl2aXR5OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0yMiw3ICsyMiw3IEBACiAKIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2
ZW50VmFsaWQsIFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCBldmVudCwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCi0gICAgU2V0QWN0aXZpdHlTdGF0ZSh1bnNpZ25lZCBhY3Rpdml0eVN0
YXRlLCBXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQs
IFZlY3RvcjxXZWJLaXQ6OkNhbGxiYWNrSUQ+IGNhbGxiYWNrSURzKQorICAgIFNldEFjdGl2aXR5
U3RhdGUoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3Rh
dGUsIFdlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwg
VmVjdG9yPFdlYktpdDo6Q2FsbGJhY2tJRD4gY2FsbGJhY2tJRHMpCiAgICAgU2V0TGF5ZXJIb3N0
aW5nTW9kZShlbnVtIFdlYktpdDo6TGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKQog
CiAgICAgU2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgJKHJl
dmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWFpbkZyYW1lQ29udGVudFNp
emVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQg
YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFu
Z2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2Fs
bGJhY2tJRHMpIG92ZXJyaWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRp
b25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCwgQWN0aXZpdHlTdGF0
ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKSBvdmVycmlk
ZTsKIAogICAgIGJvb2wgYWRqdXN0TGF5ZXJGbHVzaFRocm90dGxpbmcoV2ViQ29yZTo6TGF5ZXJG
bHVzaFRocm90dGxlU3RhdGU6OkZsYWdzKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQkocmV2aXNpb24g
MjM0ODQxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00ODgs
NyArNDg4LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6QmFja2luZwogICAg
IG1fY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV1RGTW92ZShtX2NvbW1pdEVuY29kZXIpLCB7IH0p
OwogfQogCi12b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZp
dHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKQordm9pZCBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4sIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0
eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpCiB7CiAgICAgLy8gRklY
TUU6IFNob3VsZCB3ZSBzdXNwZW5kIHBhaW50aW5nIHdoaWxlIG5vdCB2aXNpYmxlLCBsaWtlIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPyBQcm9iYWJseS4KIApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAKICAgICBi
b29sIHNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1lVmlldyhjb25zdCBXZWJDb3JlOjpGcmFt
ZVZpZXcmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQs
IGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpIG92ZXJyaWRlOworICAgIHZvaWQgYWN0aXZpdHlT
dGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hh
bmdlZCwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lckZpcmVkKCk7CiAK
ICAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSos
IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0JKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDY4LDcgKzQ2OCw3IEBAIGJvb2wgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OmZsdXMKICAgICB9CiB9CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6Rmxh
Z3MgY2hhbmdlZCwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwg
Y29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBuZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNr
SURzKQordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCwg
QWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9y
PENhbGxiYWNrSUQ+JiBuZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQogewogICAg
IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5hcHBlbmRWZWN0b3IobmV4dEFj
dGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcyk7CiAgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdl
SUQgPSBzdGQ6Om1heChtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgYWN0aXZpdHlTdGF0ZUNoYW5n
ZUlEKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIzNDg0OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE4LTA4LTE0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0IGZvciBBY3Rpdml0eVN0YXRlOjpGbGFncwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTU0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisKIDIwMTgtMDgtMTQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTEZDXVtGbG9hdGluZ10gQWRqdXN0IHZlcnRpY2FsIHBvc2l0aW9uIHdpdGggbm9u
LWNvbGxhcHNpbmcgcHJldmlvdXMgc2libGluZyBtYXJnaW4uCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5jcHAJKHJldmlzaW9uIDIzNDg0MSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3OSw2ICszNzksMzEgQEAgVEVTVChXVEZfT3B0aW9uU2V0LCBPcGVyYXRvckFuZCkKICAg
ICB9CiB9CiAKK1RFU1QoV1RGX09wdGlvblNldCwgT3BlcmF0b3JYb3IpCit7CisgICAgT3B0aW9u
U2V0PEV4YW1wbGVGbGFncz4gYSB7IEV4YW1wbGVGbGFnczo6QSB9OworICAgIE9wdGlvblNldDxF
eGFtcGxlRmxhZ3M+IGFjIHsgRXhhbXBsZUZsYWdzOjpBLCBFeGFtcGxlRmxhZ3M6OkMgfTsKKyAg
ICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPiBiYyB7IEV4YW1wbGVGbGFnczo6QiwgRXhhbXBsZUZs
YWdzOjpDIH07CisgICAgeworICAgICAgICBhdXRvIHNldCA9IGEgXiBhYzsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkEpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkIpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QykpOworICAgIH0KKyAgICB7CisgICAgICAg
IGF1dG8gc2V0ID0gYSBeIGJjOworICAgICAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMoRXhh
bXBsZUZsYWdzOjpBKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhFeGFtcGxl
RmxhZ3M6OkIpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFn
czo6QykpOworICAgIH0KKyAgICB7CisgICAgICAgIGF1dG8gc2V0ID0gYWMgXiBiYzsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QSkpOworICAgICAgICBF
WFBFQ1RfVFJVRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpCKSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpDKSk7CisgICAgfQorfQorCiBURVNU
KFdURl9PcHRpb25TZXQsIENvbnRhaW5zQW55KQogewogICAgIE9wdGlvblNldDxFeGFtcGxlRmxh
Z3M+IHNldCB7IEV4YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZsYWdzOjpCIH07Cg==
</data>
<flag name="review"
          id="364888"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347153</attachid>
            <date>2018-08-15 03:05:20 -0700</date>
            <delta_ts>2018-08-15 04:29:58 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-activitystate-3.patch</filename>
            <type>text/plain</type>
            <size>66249</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE4LTA4LTE0ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0IGZvciBBY3Rpdml0eVN0YXRl
OjpGbGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg4NTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvT3B0aW9uU2V0Lmg6CisgICAgICAgIChXVEY6Ok9wdGlvblNldDo6b3BlcmF0b3JeKToK
KworICAgICAgICBBZGQgeG9yIG9wZXJhdG9yLCB1c2VmdWwgZm9yIGZpbmRpbmcgY2hhbmdlcyBi
ZXR3ZWVuIHNldHMuCisKIDIwMTgtMDgtMTMgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBz
b255LmNvbT4KIAogICAgICAgICBNZWFuaW5nIG9mIE9wdGlvblNldDo6Y29udGFpbnMgaXMgdW5j
bGVhciB3aGVuIHVzZWQgd2l0aCBPcHRpb25TZXQgYXJndW1lbnQKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL09wdGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL09wdGlvblNldC5o
CShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ4LDYgKzE0OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmcm9t
UmF3KGxocy5tX3N0b3JhZ2UgJiB+cmhzLm1fc3RvcmFnZSk7CiAgICAgfQogCisgICAgY29uc3Rl
eHByIGZyaWVuZCBPcHRpb25TZXQgb3BlcmF0b3JeKE9wdGlvblNldCBsaHMsIE9wdGlvblNldCBy
aHMpCisgICAgeworICAgICAgICByZXR1cm4gZnJvbVJhdyhsaHMubV9zdG9yYWdlIF4gcmhzLm1f
c3RvcmFnZSk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGVudW0gSW5pdGlhbGl6YXRpb25UYWcg
eyBGcm9tUmF3VmFsdWUgfTsKICAgICBjb25zdGV4cHIgT3B0aW9uU2V0KFQgdCwgSW5pdGlhbGl6
YXRpb25UYWcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MiBAQAorMjAxOC0wOC0x
NCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIE9wdGlv
blNldCBmb3IgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1vcmUgdHlwZXNhZmUgZmxhZ3MuCisKKyAgICAgICAgKiBN
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UpOgor
ICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Lmg6CisgICAgICAgICogcGFnZS9BY3Rpdml0eVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViQ29yZTo6YWN0aXZpdHlTdGF0ZUZsYWdzVG9TdHJp
bmcpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvQWN0aXZpdHlTdGF0ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6YWxsRmxhZ3MpOgorICAgICAgICAqIHBhZ2UvQWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpGb2N1c0NvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZpdHlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2ZSk6CisgICAgICAgICogcGFnZS9G
b2N1c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6aXNB
Y3RpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjppc0ZvY3Vz
ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpjb250ZW50SXNW
aXNpYmxlIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0SXNJbldpbmRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjp1cGRhdGVUaW1lclRocm90dGxpbmdTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omlz
VmlzaWJsZUFuZEFjdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc1dpbmRv
d0FjdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRJc1Zpc2libGUpOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWN0aXZpdHlT
dGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc1Zpc2libGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNJbldpbmRvdyBjb25zdCk6CisgICAgICAgICogcGFn
ZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWN0aXZpdHlTdGF0
ZUZvckNQVVNhbXBsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlTW9uaXRvcjo6
YWN0aXZpdHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VNb25pdG9y
Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9jb2NvYTogQWRkZWQuCisKIDIwMTgtMDgtMTQg
IFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBGZXRjaDogY29udGVudC1s
ZW5ndGggaGVhZGVyIGlzIGJlaW5nIGFkZGVkIHRvIHRoZSBzYWZlLWxpc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTI4LDEwICsxMjgsMTAgQEAgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9u
PiBHZW9sbwogICAgIHJldHVybiBtX2NsaWVudC5sYXN0UG9zaXRpb24oKTsKIH0KIAotdm9pZCBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0
ZTo6RmxhZ3Mgb2xkQWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbmV3QWN0aXZp
dHlTdGF0ZSkKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBvbGRBY3Rpdml0eVN0YXRlLCBPcHRp
b25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbmV3QWN0aXZpdHlTdGF0ZSkKIHsKICAgICAvLyBU
b2dnbGUgR1BTIGJhc2VkIG9uIHBhZ2UgdmlzaWJpbGl0eSB0byBzYXZlIGJhdHRlcnkuCi0gICAg
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG9sZEFjdGl2aXR5U3RhdGUgXiBuZXdBY3Rp
dml0eVN0YXRlOworICAgIGF1dG8gY2hhbmdlZCA9IG9sZEFjdGl2aXR5U3RhdGUgXiBuZXdBY3Rp
dml0eVN0YXRlOwogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlICYm
ICFtX29ic2VydmVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG5ld0FjdGl2aXR5U3RhdGUg
JiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCiAgICAgICAgICAgICBtX2NsaWVudC5zdGFydFVw
ZGF0aW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgJKHJldmlzaW9uIDIzNDg0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBQYWdlJiBt
X3BhZ2U7CiAgICAgR2VvbG9jYXRpb25DbGllbnQmIG1fY2xpZW50OwogCi0gICAgdm9pZCBhY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIG9sZEFjdGl2aXR5U3RhdGUs
IEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5U3RhdGUpIG92ZXJyaWRlOworICAgIHZv
aWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4g
b2xkQWN0aXZpdHlTdGF0ZSwgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG5ld0FjdGl2
aXR5U3RhdGUpIG92ZXJyaWRlOwogCiAgICAgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0
aW9uPiBtX2xhc3RQb3NpdGlvbjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDIz
NDg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzcxLDE0ICs2MzcxLDE0IEBAIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZW5hYmxlU3UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFj
dGl2aXR5U3RhdGU6OkZsYWdzIG9sZEFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdz
IG5ld0FjdGl2aXR5U3RhdGUpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG9sZEFjdGl2
aXR5U3RhdGUsIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBuZXdBY3Rpdml0eVN0YXRl
KQogewogICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICBBY3Rpdml0
eVN0YXRlOjpGbGFncyBjaGFuZ2VkID0gb2xkQWN0aXZpdHlTdGF0ZSBeIG5ld0FjdGl2aXR5U3Rh
dGU7CisgICAgYXV0byBjaGFuZ2VkID0gb2xkQWN0aXZpdHlTdGF0ZSBeIG5ld0FjdGl2aXR5U3Rh
dGU7CiAgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCi0gICAgICAg
IG1fY29udGV4dC0+c2V0Q29udGV4dFZpc2liaWxpdHkobmV3QWN0aXZpdHlTdGF0ZSAmIEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZSk7CisgICAgICAgIG1fY29udGV4dC0+c2V0Q29udGV4dFZpc2li
aWxpdHkobmV3QWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUp
KTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXRGYWlsTmV4dEdQVVN0
YXR1c0NoZWNrKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODM4LDcgKzgzOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWdpc3Rlcldp
dGhXZWJHTFN0YXRlVHJhY2tlcigpOwogICAgIHZvaWQgY2hlY2tGb3JDb250ZXh0TG9zc0hhbmRs
aW5nKCk7CiAKLSAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6
RmxhZ3Mgb2xkQWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbmV3QWN0aXZpdHlT
dGF0ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNl
dDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBvbGRBY3Rpdml0eVN0YXRlLCBPcHRpb25TZXQ8QWN0aXZp
dHlTdGF0ZTo6RmxhZz4gbmV3QWN0aXZpdHlTdGF0ZSkgb3ZlcnJpZGU7CiAKICAgICBXZWJHTFN0
YXRlVHJhY2tlcjo6VG9rZW4gbV90cmFja2VyVG9rZW47CiAgICAgVGltZXIgbV9jaGVja0ZvckNv
bnRleHRMb3NzSGFuZGxpbmdUaW1lcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZp
dHlTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0
YXRlLmNwcAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0
eVN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNjUgKzI2LDM0IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQWN0aXZpdHlTdGF0ZS5oIgogCi0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHJpbmcgYWN0aXZpdHlTdGF0ZUZsYWdzVG9TdHJpbmco
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3MpCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gZmxhZ3MpCiB7Ci0gICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIAotICAgIGF1dG8gYXBwZW5kQ29tbWFJZk5lY2Vz
c2FyeSA9IFsmXSgpIHsKLSAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOworICAgIGJvb2wgZGlkQXBwZW5kID0gZmFsc2U7CisK
KyAgICBhdXRvIGFwcGVuZElmID0gWyZdKGF1dG8gZmxhZywgYXV0byBtZXNzYWdlKSB7CisgICAg
ICAgIGlmICghZmxhZ3MuY29udGFpbnMoZmxhZykpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGlmIChkaWRBcHBlbmQpCisgICAgICAgICAgICB0cyA8PCAiLCAiOworICAgICAgICB0cyA8
PCBtZXNzYWdlOworICAgICAgICBkaWRBcHBlbmQgPSB0cnVlOwogICAgIH07CiAgICAgCi0gICAg
aWYgKGZsYWdzICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpIHsKLSAg
ICAgICAgYXBwZW5kQ29tbWFJZk5lY2Vzc2FyeSgpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgi
YWN0aXZlIHdpbmRvdyIpOwotICAgIH0KLQotICAgIGlmIChmbGFncyAmIFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OklzRm9jdXNlZCkgewotICAgICAgICBhcHBlbmRDb21tYUlmTmVjZXNzYXJ5KCk7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJmb2N1c2VkIik7Ci0gICAgfQotCi0gICAgaWYgKGZs
YWdzICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSB7Ci0gICAgICAgIGFwcGVu
ZENvbW1hSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoInZpc2libGUiKTsK
LSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGVPck9jY2x1ZGVkKSB7Ci0gICAgICAgIGFwcGVuZENvbW1hSWZOZWNlc3NhcnkoKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoInZpc2libGUgb3Igb2NjbHVkZWQiKTsKLSAgICB9Ci0KLSAgICBp
ZiAoZmxhZ3MgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KSB7Ci0gICAgICAg
IGFwcGVuZENvbW1hSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoImluLXdp
bmRvdyIpOwotICAgIH0KLQotICAgIGlmIChmbGFncyAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OklzVmlzdWFsbHlJZGxlKSB7Ci0gICAgICAgIGFwcGVuZENvbW1hSWZOZWNlc3NhcnkoKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQoInZpc3VhbGx5IGlkbGUiKTsKLSAgICB9Ci0KLSAgICBpZiAo
ZmxhZ3MgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUpIHsKLSAgICAgICAgYXBw
ZW5kQ29tbWFJZk5lY2Vzc2FyeSgpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiYXVkaWJsZSIp
OwotICAgIH0KLQotICAgIGlmIChmbGFncyAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzTG9h
ZGluZykgewotICAgICAgICBhcHBlbmRDb21tYUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCJsb2FkaW5nIik7Ci0gICAgfQotCi0gICAgaWYgKGZsYWdzICYgV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSkgewotICAgICAgICBhcHBlbmRDb21tYUlm
TmVjZXNzYXJ5KCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJjYXB0dXJpbmcgbWVkaWEiKTsK
LSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBhcHBlbmRJ
ZihBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSwgImFjdGl2ZSB3aW5kb3ciKTsKKyAgICBh
cHBlbmRJZihBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQsICJmb2N1c2VkIik7CisgICAgYXBwZW5k
SWYoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCAidmlzaWJsZSIpOworICAgIGFwcGVuZElmKEFj
dGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQsICJ2aXNpYmxlIG9yIG9jY2x1ZGVkIik7
CisgICAgYXBwZW5kSWYoQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdywgImluLXdpbmRvdyIpOwor
ICAgIGFwcGVuZElmKEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlLCAidmlzdWFsbHkgaWRs
ZSIpOworICAgIGFwcGVuZElmKEFjdGl2aXR5U3RhdGU6OklzQXVkaWJsZSwgImF1ZGlibGUiKTsK
KyAgICBhcHBlbmRJZihBY3Rpdml0eVN0YXRlOjpJc0xvYWRpbmcsICJsb2FkaW5nIik7CisgICAg
YXBwZW5kSWYoQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSwgImNhcHR1cmluZyBtZWRp
YSIpOworCisgICAgcmV0dXJuIHRzOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGUuaAkocmV2aXNpb24gMjM0ODQxKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE0
ICsyNSwxNiBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4K
KwogbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBTdHJpbmc7CitjbGFzcyBUZXh0U3RyZWFtOwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBBY3Rpdml0eVN0YXRlIHsKLSAgICBlbnVt
IHsKKyAgICBlbnVtIEZsYWcgewogICAgICAgICBXaW5kb3dJc0FjdGl2ZSA9IDEgPDwgMCwKICAg
ICAgICAgSXNGb2N1c2VkID0gMSA8PCAxLAogICAgICAgICBJc1Zpc2libGUgPSAxIDw8IDIsCkBA
IC00NCwxMCArNDYsNyBAQCBzdHJ1Y3QgQWN0aXZpdHlTdGF0ZSB7CiAgICAgICAgIElzQ2FwdHVy
aW5nTWVkaWEgPSAxIDw8IDgsCiAgICAgfTsKIAotICAgIHR5cGVkZWYgdW5zaWduZWQgRmxhZ3M7
Ci0KLSAgICBzdGF0aWMgY29uc3QgRmxhZ3MgTm9GbGFncyA9IDA7Ci0gICAgc3RhdGljIGNvbnN0
IEZsYWdzIEFsbEZsYWdzID0gV2luZG93SXNBY3RpdmUgfCBJc0ZvY3VzZWQgfCBJc1Zpc2libGUg
fCBJc1Zpc2libGVPck9jY2x1ZGVkIHwgSXNJbldpbmRvdyB8IElzVmlzdWFsbHlJZGxlIHwgSXNB
dWRpYmxlIHwgSXNMb2FkaW5nIHwgSXNDYXB0dXJpbmdNZWRpYTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIE9wdGlvblNldDxGbGFnPiBhbGxGbGFncygpIHsgcmV0dXJuIHsgV2luZG93SXNBY3RpdmUs
IElzRm9jdXNlZCwgSXNWaXNpYmxlLCBJc1Zpc2libGVPck9jY2x1ZGVkLCBJc0luV2luZG93LCBJ
c1Zpc3VhbGx5SWRsZSwgSXNBdWRpYmxlLCBJc0xvYWRpbmcsIElzQ2FwdHVyaW5nTWVkaWEgfTsg
fQogfTsKIAogZW51bSBjbGFzcyBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcgewpAQCAtNTYs
NyArNTUsNiBAQCBlbnVtIGNsYXNzIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyB7CiAgICAg
VmlzaWJsZUFuZEFjdGl2ZQogfTsKIAotLy8gSWRlYWxseSB0aGlzIHdvdWxkIGJlIG9wZXJhdG9y
PDwoV1RGOjpUZXh0U3RyZWFtJiwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MpIGJ1dCBBY3Rpdml0eVN0
YXRlOjpGbGFncyBuZWVkcyB0byBiZSBzdHJvbmdseSB0eXBlZCB0byBhdm9pZCBhbWJpZ3VvdXMg
b3ZlcmxvYWRzLgotV0VCQ09SRV9FWFBPUlQgV1RGOjpTdHJpbmcgYWN0aXZpdHlTdGF0ZUZsYWdz
VG9TdHJpbmcoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MpOworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIE9wdGlvblNldDxBY3Rpdml0eVN0
YXRlOjpGbGFnPik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaAkocmV2aXNpb24g
MjM0ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0
eVN0YXRlOjpGbGFncyBvbGRBY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlOjpGbGFncyBuZXdB
Y3Rpdml0eVN0YXRlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG9sZEFjdGl2aXR5U3RhdGUsIE9wdGlv
blNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBuZXdBY3Rpdml0eVN0YXRlKSA9IDA7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw3ICszMDcsNyBAQCBzdGF0aWMg
aW5saW5lIGludCBzaGFkb3dBZGp1c3RlZFRhYkluZGV4CiAgICAgcmV0dXJuIGVsZW1lbnQudGFi
SW5kZXgoKTsKIH0KIAotRm9jdXNDb250cm9sbGVyOjpGb2N1c0NvbnRyb2xsZXIoUGFnZSYgcGFn
ZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSkKK0ZvY3VzQ29udHJvbGxlcjo6
Rm9jdXNDb250cm9sbGVyKFBhZ2UmIHBhZ2UsIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFn
PiBhY3Rpdml0eVN0YXRlKQogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2lzQ2hhbmdpbmdG
b2N1c2VkRnJhbWUoZmFsc2UpCiAgICAgLCBtX2FjdGl2aXR5U3RhdGUoYWN0aXZpdHlTdGF0ZSkK
QEAgLTM1Myw3ICszNTMsNyBAQCBGcmFtZSYgRm9jdXNDb250cm9sbGVyOjpmb2N1c2VkT3JNYWlu
RnJhCiAKIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkKIHsK
LSAgICBtX3BhZ2Uuc2V0QWN0aXZpdHlTdGF0ZShmb2N1c2VkID8gbV9hY3Rpdml0eVN0YXRlIHwg
QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkIDogbV9hY3Rpdml0eVN0YXRlICYgfkFjdGl2aXR5U3Rh
dGU6OklzRm9jdXNlZCk7CisgICAgbV9wYWdlLnNldEFjdGl2aXR5U3RhdGUoZm9jdXNlZCA/IG1f
YWN0aXZpdHlTdGF0ZSB8IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCA6IG1fYWN0aXZpdHlTdGF0
ZSAtIEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCk7CiB9CiAKIHZvaWQgRm9jdXNDb250cm9sbGVy
OjpzZXRGb2N1c2VkSW50ZXJuYWwoYm9vbCBmb2N1c2VkKQpAQCAtODQxLDIzICs4NDEsMjMgQEAg
Ym9vbCBGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWRFbGVtZW50KAogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0
YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlKQordm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2
aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUpCiB7
Ci0gICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIGFj
dGl2aXR5U3RhdGU7CisgICAgYXV0byBjaGFuZ2VkID0gbV9hY3Rpdml0eVN0YXRlIF4gYWN0aXZp
dHlTdGF0ZTsKICAgICBtX2FjdGl2aXR5U3RhdGUgPSBhY3Rpdml0eVN0YXRlOwogCiAgICAgaWYg
KGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpCi0gICAgICAgIHNldEZvY3VzZWRJ
bnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKTsKKyAgICAg
ICAgc2V0Rm9jdXNlZEludGVybmFsKGFjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0
ZTo6SXNGb2N1c2VkKSk7CiAgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSkgewotICAgICAgICBzZXRBY3RpdmVJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0
aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgICAgICBzZXRBY3RpdmVJbnRlcm5hbChh
Y3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKSk7CiAg
ICAgICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQotICAgICAgICAg
ICAgc2V0SXNWaXNpYmxlQW5kQWN0aXZlSW50ZXJuYWwoYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5
U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICAgICAgICAgIHNldElzVmlzaWJsZUFuZEFjdGl2
ZUludGVybmFsKGFjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNB
Y3RpdmUpKTsKICAgICB9CiB9CiAKIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRBY3RpdmUoYm9v
bCBhY3RpdmUpCiB7Ci0gICAgbV9wYWdlLnNldEFjdGl2aXR5U3RhdGUoYWN0aXZlID8gbV9hY3Rp
dml0eVN0YXRlIHwgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgOiBtX2FjdGl2aXR5U3Rh
dGUgJiB+QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgIG1fcGFnZS5zZXRBY3Rp
dml0eVN0YXRlKGFjdGl2ZSA/IG1fYWN0aXZpdHlTdGF0ZSB8IEFjdGl2aXR5U3RhdGU6OldpbmRv
d0lzQWN0aXZlIDogbV9hY3Rpdml0eVN0YXRlIC0gQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3Rp
dmUpOwogfQogCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZlSW50ZXJuYWwoYm9vbCBh
Y3RpdmUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgJKHJldmlzaW9u
IDIzNDg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgc3RydWN0IEZvY3VzQ2FuZGlkYXRlOwogY2xhc3Mg
Rm9jdXNDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBGb2N1c0NvbnRyb2xsZXIoUGFnZSYsIEFjdGl2aXR5U3RhdGU6OkZsYWdz
KTsKKyAgICBleHBsaWNpdCBGb2N1c0NvbnRyb2xsZXIoUGFnZSYsIE9wdGlvblNldDxBY3Rpdml0
eVN0YXRlOjpGbGFnPik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZvY3VzZWRGcmFt
ZShGcmFtZSopOwogICAgIEZyYW1lKiBmb2N1c2VkRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2Zv
Y3VzZWRGcmFtZS5nZXQoKTsgfQpAQCAtNjIsMTUgKzYyLDE1IEBAIHB1YmxpYzoKIAogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgc2V0Rm9jdXNlZEVsZW1lbnQoRWxlbWVudCosIEZyYW1lJiwgRm9j
dXNEaXJlY3Rpb24gPSBGb2N1c0RpcmVjdGlvbk5vbmUpOwogCi0gICAgdm9pZCBzZXRBY3Rpdml0
eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzKTsKKyAgICB2b2lkIHNldEFjdGl2aXR5U3RhdGUo
T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0QWN0aXZlKGJvb2wpOwotICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBt
X2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZTsgfQorICAgIGJv
b2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0
aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEZvY3VzZWQoYm9vbCk7Ci0gICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCB7IHJldHVybiBt
X2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQ7IH0KKyAgICBib29sIGlz
Rm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0
eVN0YXRlOjpJc0ZvY3VzZWQpOyB9CiAKLSAgICBib29sIGNvbnRlbnRJc1Zpc2libGUoKSBjb25z
dCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7IH0K
KyAgICBib29sIGNvbnRlbnRJc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3Rh
dGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsgfQogCiAgICAgLy8gVGhlc2Ug
bWV0aG9kcyBhcmUgdXNlZCBpbiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tLgogICAgIFdF
QkNPUkVfRVhQT1JUIEVsZW1lbnQqIG5leHRGb2N1c2FibGVFbGVtZW50KE5vZGUmKTsKQEAgLTEx
OSw3ICsxMTksNyBAQCBwcml2YXRlOgogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBSZWZQdHI8RnJh
bWU+IG1fZm9jdXNlZEZyYW1lOwogICAgIGJvb2wgbV9pc0NoYW5naW5nRm9jdXNlZEZyYW1lOwot
ICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG1fYWN0aXZpdHlTdGF0ZTsKKyAgICBPcHRpb25TZXQ8
QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbV9hY3Rpdml0eVN0YXRlOwogCiAgICAgVGltZXIgbV9mb2N1
c1JlcGFpbnRUaW1lcjsKICAgICBNb25vdG9uaWNUaW1lIG1fZm9jdXNTZXRUaW1lOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNyArMTkyLDEwIEBAIHN0YXRpYyB2b2lk
IG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc08KICAgICB9CiB9CiAKLXN0YXRpYyBjb25zdCBB
Y3Rpdml0eVN0YXRlOjpGbGFncyBQYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUgPSBBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUgfCBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93Oworc3RhdGljIGNvbnN0
ZXhwciBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gcGFnZUluaXRpYWxBY3Rpdml0eVN0
YXRlKCkKK3sKKyAgICByZXR1cm4geyBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIEFjdGl2aXR5
U3RhdGU6OklzSW5XaW5kb3cgfTsKK30KIAogUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYm
IHBhZ2VDb25maWd1cmF0aW9uKQogICAgIDogbV9jaHJvbWUoc3RkOjptYWtlX3VuaXF1ZTxDaHJv
bWU+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50KSkKQEAgLTIwMCw3ICsy
MDMsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKICAgICAsIG1fZHJhZ0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1
ZTxEcmFnQ29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50KSkK
ICNlbmRpZgotICAgICwgbV9mb2N1c0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxGb2N1c0Nv
bnRyb2xsZXI+KCp0aGlzLCBQYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUpKQorICAgICwgbV9mb2N1
c0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxGb2N1c0NvbnRyb2xsZXI+KCp0aGlzLCBwYWdl
SW5pdGlhbEFjdGl2aXR5U3RhdGUoKSkpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAg
LCBtX2NvbnRleHRNZW51Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Q29u
dHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCkpCiAj
ZW5kaWYKQEAgLTIyNCw3ICsyMjcsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYg
cGFnZUNvbmZpCiAgICAgLCBtX2hvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0
aWNpdHlBbGxvd2VkKQogICAgICwgbV9kb21UaW1lckFsaWdubWVudEludGVydmFsKERPTVRpbWVy
OjpkZWZhdWx0QWxpZ25tZW50SW50ZXJ2YWwoKSkKICAgICAsIG1fZG9tVGltZXJBbGlnbm1lbnRJ
bnRlcnZhbEluY3JlYXNlVGltZXIoKnRoaXMsICZQYWdlOjpkb21UaW1lckFsaWdubWVudEludGVy
dmFsSW5jcmVhc2VUaW1lckZpcmVkKQotICAgICwgbV9hY3Rpdml0eVN0YXRlKFBhZ2VJbml0aWFs
QWN0aXZpdHlTdGF0ZSkKKyAgICAsIG1fYWN0aXZpdHlTdGF0ZShwYWdlSW5pdGlhbEFjdGl2aXR5
U3RhdGUoKSkKICAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KHBhZ2VDb25maWd1cmF0aW9u
LmFsdGVybmF0aXZlVGV4dENsaWVudCkKICAgICAsIG1fY29uc29sZUNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2VDb25zb2xlQ2xpZW50PigqdGhpcykpCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCkBAIC0xMDg5LDcgKzEwOTIsNyBAQCB1bnNpZ25lZCBQYWdlOjpwYWdlQ291bnQoKSBj
b25zdAogCiB2b2lkIFBhZ2U6OnNldElzSW5XaW5kb3coYm9vbCBpc0luV2luZG93KQogewotICAg
IHNldEFjdGl2aXR5U3RhdGUoaXNJbldpbmRvdyA/IG1fYWN0aXZpdHlTdGF0ZSB8IEFjdGl2aXR5
U3RhdGU6OklzSW5XaW5kb3cgOiBtX2FjdGl2aXR5U3RhdGUgJiB+QWN0aXZpdHlTdGF0ZTo6SXNJ
bldpbmRvdyk7CisgICAgc2V0QWN0aXZpdHlTdGF0ZShpc0luV2luZG93ID8gbV9hY3Rpdml0eVN0
YXRlIHwgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyA6IG1fYWN0aXZpdHlTdGF0ZSAtIEFjdGl2
aXR5U3RhdGU6OklzSW5XaW5kb3cpOwogfQogCiB2b2lkIFBhZ2U6OnNldElzSW5XaW5kb3dJbnRl
cm5hbChib29sIGlzSW5XaW5kb3cpCkBAIC0xMzU2LDcgKzEzNTksNyBAQCB2b2lkIFBhZ2U6OnVw
ZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCkKICAgICAvLyBJZiB0aGUgcGFnZSBpcyB2aXNpYmxl
IChidXQgaWRsZSksIHRoZXJlIGlzIGFueSBhY3Rpdml0eSAobG9hZGluZywgbWVkaWEgcGxheWlu
ZywgZXRjKSwgb3IgcGVyIHNldHRpbmcsCiAgICAgLy8gd2UgYWxsb3cgdGltZXIgdGhyb3R0bGlu
ZywgYnV0IG5vdCBpbmNyZWFzaW5nIHRpbWVyIHRocm90dGxpbmcuCiAgICAgaWYgKCFtX3NldHRp
bmdzLT5oaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nQXV0b0luY3JlYXNlcygpCi0gICAgICAg
IHx8IG1fYWN0aXZpdHlTdGF0ZSAmIChBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBBY3Rpdml0
eVN0YXRlOjpJc0F1ZGlibGUgfCBBY3Rpdml0eVN0YXRlOjpJc0xvYWRpbmcgfCBBY3Rpdml0eVN0
YXRlOjpJc0NhcHR1cmluZ01lZGlhKSkgeworICAgICAgICB8fCBtX2FjdGl2aXR5U3RhdGUuY29u
dGFpbnNBbnkoe0FjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXNBdWRp
YmxlLCBBY3Rpdml0eVN0YXRlOjpJc0xvYWRpbmcsIEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5n
TWVkaWEgfSkpIHsKICAgICAgICAgc2V0VGltZXJUaHJvdHRsaW5nU3RhdGUoVGltZXJUaHJvdHRs
aW5nU3RhdGU6OkVuYWJsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTU5MCwxMyAr
MTU5MywxMyBAQCB2b2lkIFBhZ2U6OnJlc3VtZUFuaW1hdGluZ0ltYWdlcygpCiAgICAgICAgIHZp
ZXctPnJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKTsKIH0K
IAotdm9pZCBQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2
aXR5U3RhdGUpCit2b2lkIFBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5
U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUpCiB7Ci0gICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mg
Y2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIGFjdGl2aXR5U3RhdGU7CisgICAgYXV0byBjaGFu
Z2VkID0gbV9hY3Rpdml0eVN0YXRlIF4gYWN0aXZpdHlTdGF0ZTsKICAgICBpZiAoIWNoYW5nZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG9sZEFjdGl2aXR5
U3RhdGUgPSBtX2FjdGl2aXR5U3RhdGU7CisgICAgYXV0byBvbGRBY3Rpdml0eVN0YXRlID0gbV9h
Y3Rpdml0eVN0YXRlOwogCiAgICAgYm9vbCB3YXNWaXNpYmxlQW5kQWN0aXZlID0gaXNWaXNpYmxl
QW5kQWN0aXZlKCk7CiAgICAgbV9hY3Rpdml0eVN0YXRlID0gYWN0aXZpdHlTdGF0ZTsKQEAgLTE2
MDQsMTcgKzE2MDcsMTcgQEAgdm9pZCBQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3Rh
dAogICAgIG1fZm9jdXNDb250cm9sbGVyLT5zZXRBY3Rpdml0eVN0YXRlKGFjdGl2aXR5U3RhdGUp
OwogCiAgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCi0gICAgICAg
IHNldElzVmlzaWJsZUludGVybmFsKGFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zp
c2libGUpOworICAgICAgICBzZXRJc1Zpc2libGVJbnRlcm5hbChhY3Rpdml0eVN0YXRlLmNvbnRh
aW5zKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkpOwogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZp
dHlTdGF0ZTo6SXNJbldpbmRvdykKLSAgICAgICAgc2V0SXNJbldpbmRvd0ludGVybmFsKGFjdGl2
aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKKyAgICAgICAgc2V0SXNJbldp
bmRvd0ludGVybmFsKGFjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNJbldp
bmRvdykpOwogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUp
Ci0gICAgICAgIHNldElzVmlzdWFsbHlJZGxlSW50ZXJuYWwoYWN0aXZpdHlTdGF0ZSAmIEFjdGl2
aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKKyAgICAgICAgc2V0SXNWaXN1YWxseUlkbGVJbnRl
cm5hbChhY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxl
KSk7CiAgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSkgewog
ICAgICAgICBpZiAoYXV0byogdmlldyA9IG1fbWFpbkZyYW1lLT52aWV3KCkpCiAgICAgICAgICAg
ICB2aWV3LT51cGRhdGVUaWxlZEJhY2tpbmdBZGFwdGl2ZVNpemluZygpOwogICAgIH0KIAotICAg
IGlmIChjaGFuZ2VkICYgKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSB8IEFjdGl2aXR5U3RhdGU6
OklzVmlzdWFsbHlJZGxlIHwgQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlIHwgQWN0aXZpdHlTdGF0
ZTo6SXNMb2FkaW5nIHwgQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSkpCisgICAgaWYg
KGNoYW5nZWQuY29udGFpbnNBbnkoe0FjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlT
dGF0ZTo6SXNWaXN1YWxseUlkbGUsIEFjdGl2aXR5U3RhdGU6OklzQXVkaWJsZSwgQWN0aXZpdHlT
dGF0ZTo6SXNMb2FkaW5nLCBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhIH0pKQogICAg
ICAgICB1cGRhdGVUaW1lclRocm90dGxpbmdTdGF0ZSgpOwogCiAgICAgZm9yIChhdXRvKiBvYnNl
cnZlciA6IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVycykKQEAgLTE2MjksMjAgKzE2MzIs
MjYgQEAgdm9pZCBQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdAogCiBib29sIFBh
Z2U6OmlzVmlzaWJsZUFuZEFjdGl2ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChtX2FjdGl2aXR5
U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpICYmIChtX2FjdGl2aXR5U3RhdGUgJiBB
Y3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CisgICAgcmV0dXJuIG1fYWN0aXZpdHlTdGF0
ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpICYmIG1fYWN0aXZpdHlTdGF0ZS5j
b250YWlucyhBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiB9CiAKIGJvb2wgUGFnZTo6
aXNXaW5kb3dBY3RpdmUoKSBjb25zdAogewotICAgIHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBB
Y3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKKyAgICByZXR1cm4gbV9hY3Rpdml0eVN0YXRl
LmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKIH0KIAogdm9pZCBQYWdl
OjpzZXRJc1Zpc2libGUoYm9vbCBpc1Zpc2libGUpCiB7Ci0gICAgaWYgKGlzVmlzaWJsZSkKLSAg
ICAgICAgc2V0QWN0aXZpdHlTdGF0ZSgobV9hY3Rpdml0eVN0YXRlICYgfkFjdGl2aXR5U3RhdGU6
OklzVmlzdWFsbHlJZGxlKSB8IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSB8IEFjdGl2aXR5U3Rh
dGU6OklzVmlzaWJsZU9yT2NjbHVkZWQpOwotICAgIGVsc2UKLSAgICAgICAgc2V0QWN0aXZpdHlT
dGF0ZSgobV9hY3Rpdml0eVN0YXRlICYgfihBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBBY3Rp
dml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkKSkgfCBBY3Rpdml0eVN0YXRlOjpJc1Zpc3Vh
bGx5SWRsZSk7CisgICAgYXV0byBzdGF0ZSA9IG1fYWN0aXZpdHlTdGF0ZTsKKworICAgIGlmIChp
c1Zpc2libGUpIHsKKyAgICAgICAgc3RhdGUgLT0gQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlk
bGU7CisgICAgICAgIHN0YXRlIHw9IHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkIH07CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3Rh
dGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlkbGU7CisgICAgICAgIHN0YXRlIC09IHsg
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1
ZGVkIH07CisgICAgfQorICAgIHNldEFjdGl2aXR5U3RhdGUoc3RhdGUpOwogfQogCiBlbnVtIGNs
YXNzIFNWR0FuaW1hdGlvbnNTdGF0ZSB7IFBhdXNlZCwgUmVzdW1lZCB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MTUsMTggKzQxNSwxOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAg
IC8vIE5vdGlmaWNhdGlvbnMgd2hlbiB0aGUgUGFnZSBzdGFydHMgYW5kIHN0b3BzIGJlaW5nIHBy
ZXNlbnRlZCB2aWEgYSBuYXRpdmUgd2luZG93LgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyk7Ci0gICAgQWN0aXZpdHlTdGF0ZTo6
RmxhZ3MgYWN0aXZpdHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZTsgfQor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZp
dHlTdGF0ZTo6RmxhZz4pOworICAgIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rp
dml0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlOyB9CiAKICAgICBib29s
IGlzV2luZG93QWN0aXZlKCkgY29uc3Q7CiAgICAgYm9vbCBpc1Zpc2libGVBbmRBY3RpdmUoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElzVmlzaWJsZShib29sKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldElzUHJlcmVuZGVyKCk7Ci0gICAgYm9vbCBpc1Zpc2libGUo
KSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGU7IH0KKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0
ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOyB9CiAKICAgICAvLyBOb3RpZmlj
YXRpb24gdGhhdCB0aGlzIFBhZ2Ugd2FzIG1vdmVkIGludG8gb3Igb3V0IG9mIGEgbmF0aXZlIHdp
bmRvdy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElzSW5XaW5kb3coYm9vbCk7Ci0gICAg
Ym9vbCBpc0luV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZp
dHlTdGF0ZTo6SXNJbldpbmRvdzsgfQorICAgIGJvb2wgaXNJbldpbmRvdygpIGNvbnN0IHsgcmV0
dXJuIG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsg
fQogCiAgICAgdm9pZCBzZXRJc0Nsb3NpbmcoKSB7IG1faXNDbG9zaW5nID0gdHJ1ZTsgfQogICAg
IGJvb2wgaXNDbG9zaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nsb3Npbmc7IH0KQEAgLTgxMSw3
ICs4MTEsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lzRWRpdGFibGUgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9pc1ByZXJlbmRlciB7IGZhbHNlIH07Ci0gICAgQWN0aXZpdHlTdGF0ZTo6Rmxh
Z3MgbV9hY3Rpdml0eVN0YXRlOworICAgIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBt
X2FjdGl2aXR5U3RhdGU7CiAKICAgICBMYXlvdXRNaWxlc3RvbmVzIG1fcmVxdWVzdGVkTGF5b3V0
TWlsZXN0b25lcyB7IDAgfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZU1vbml0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2VNb25pdG9yLmNwcAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZU1vbml0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHN0
YXRpYyBjb25zdCBkb3VibGUgcG9zdFBhZ2VMb2FkQ1BVVXNhZ2UKIHN0YXRpYyBjb25zdCB1aW50
NjRfdCBwb3N0UGFnZUxvYWRNZW1vcnlVc2FnZURvbWFpblJlcG9ydGluZ1RocmVzaG9sZCB7IDIw
NDggKiBNQiB9OwogI2VuZGlmCiAKLXN0YXRpYyBpbmxpbmUgQWN0aXZpdHlTdGF0ZUZvckNQVVNh
bXBsaW5nIGFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyhBY3Rpdml0eVN0YXRlOjpGbGFncyBz
dGF0ZSkKK3N0YXRpYyBpbmxpbmUgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nIGFjdGl2aXR5
U3RhdGVGb3JDUFVTYW1wbGluZyhPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gc3RhdGUp
CiB7CiAgICAgaWYgKCEoc3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpKQogICAgICAg
ICByZXR1cm4gQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nOjpOb25WaXNpYmxlOwpAQCAtMTAx
LDEwICsxMDEsMTAgQEAgdm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6OmRpZEZpbmlzaExvYWQoKQog
ICAgICAgICBtX3Bvc3RQYWdlTG9hZE1lbW9yeVVzYWdlVGltZXIuc3RhcnRPbmVTaG90KG1lbW9y
eVVzYWdlTWVhc3VyZW1lbnREZWxheSk7CiB9CiAKLXZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjph
Y3Rpdml0eVN0YXRlQ2hhbmdlZChBY3Rpdml0eVN0YXRlOjpGbGFncyBvbGRTdGF0ZSwgQWN0aXZp
dHlTdGF0ZTo6RmxhZ3MgbmV3U3RhdGUpCit2b2lkIFBlcmZvcm1hbmNlTW9uaXRvcjo6YWN0aXZp
dHlTdGF0ZUNoYW5nZWQoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG9sZFN0YXRlLCBP
cHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbmV3U3RhdGUpCiB7Ci0gICAgQWN0aXZpdHlT
dGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG9sZFN0YXRlIF4gbmV3U3RhdGU7Ci0gICAgYm9vbCB2aXNp
YmlsaXR5Q2hhbmdlZCA9IGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisgICAg
YXV0byBjaGFuZ2VkID0gb2xkU3RhdGUgXiBuZXdTdGF0ZTsKKyAgICBib29sIHZpc2liaWxpdHlD
aGFuZ2VkID0gY2hhbmdlZC5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogCiAg
ICAgLy8gTWVhc3VyZSBDUFUgdXNhZ2Ugb2YgcGFnZXMgd2hlbiB0aGV5IGFyZSBubyBsb25nZXIg
dmlzaWJsZS4KICAgICBpZiAoRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjppc1Bvc3RCYWNrZ3Jv
dW5kaW5nQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKSAmJiB2aXNpYmlsaXR5Q2hhbmdlZCkg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5oCShyZXZpc2lv
biAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkU3Rh
cnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoKTsKLSAgICB2b2lk
IGFjdGl2aXR5U3RhdGVDaGFuZ2VkKEFjdGl2aXR5U3RhdGU6OkZsYWdzIG9sZFN0YXRlLCBBY3Rp
dml0eVN0YXRlOjpGbGFncyBuZXdTdGF0ZSk7CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlQ2hhbmdl
ZChPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gb2xkU3RhdGUsIE9wdGlvblNldDxBY3Rp
dml0eVN0YXRlOjpGbGFnPiBuZXdTdGF0ZSk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBtZWFzdXJl
UG9zdExvYWRDUFVVc2FnZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzMxLDcgKzQzMzEsNyBAQCB2b2lkIEludGVybmFsczo6
c2V0UGFnZVZpc2liaWxpdHkoYm9vbCBpCiAgICAgYXV0byBzdGF0ZSA9IHBhZ2UuYWN0aXZpdHlT
dGF0ZSgpOwogCiAgICAgaWYgKCFpc1Zpc2libGUpCi0gICAgICAgIHN0YXRlICY9IH5BY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGU7CisgICAgICAgIHN0YXRlIC09IEFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZTsKICAgICBlbHNlCiAgICAgICAgIHN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJs
ZTsKIApJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDg0OCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTgtMDgtMTQgIEFudHRp
IEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBPcHRpb25TZXQgZm9y
IEFjdGl2aXR5U3RhdGU6OkZsYWdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODg1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6d2luZG93RGlkT3JkZXJPZmZTY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6d2luZG93RGlkT3JkZXJPblNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjp2aWV3RGlkTW92ZVRvV2luZG93KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBY3Rp
dml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2
aXR5U3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE11dGVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc1BsYXlpbmdNZWRpYURpZENoYW5n
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmlzSW5XaW5kb3cgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmlzVmlld1Zpc2libGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmlzVmlld0ZvY3VzZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmlzVmlld1dpbmRvd0FjdGl2ZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjphY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAgICAg
ICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnVwZGF0ZVRocm90dGxlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVJ
c0luV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dmlzaWJpbGl0eURpZENoYW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmlzVmlzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmlzVmlzaWJs
ZU9yT2NjbHVkZWQgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oOgorCiAyMDE4LTA4LTEzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIFttYWNPU10gSW1wbGVtZW50IGEgbWVjaGFuaXNt
IHRvIHRlc3QgZHJhZyBhbmQgZHJvcApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Nyw3ICs2Nyw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAog
ICAgIFdlYkNvcmU6OkludFNpemUgdmlld1NpemU7CiAKLSAgICBXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlOworICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlOwogICAgIAogICAgIFdlYlByZWZlcmVuY2VzU3Rv
cmUgc3RvcmU7CiAgICAgRHJhd2luZ0FyZWFUeXBlIGRyYXdpbmdBcmVhVHlwZTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM0ODQxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ5Miw5ICsxNDkyLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzVmlz
aWJpbGl0eQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUFjdGl2aXR5U3Rh
dGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSkKK3ZvaWQgV2ViUGFnZVByb3h5
Ojp1cGRhdGVBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBmbGFn
c1RvVXBkYXRlKQogewotICAgIG1fYWN0aXZpdHlTdGF0ZSAmPSB+ZmxhZ3NUb1VwZGF0ZTsKKyAg
ICBtX2FjdGl2aXR5U3RhdGUgPSBtX2FjdGl2aXR5U3RhdGUgLSBmbGFnc1RvVXBkYXRlOwogICAg
IGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkICYmIG1fcGFnZUNs
aWVudC5pc1ZpZXdGb2N1c2VkKCkpCiAgICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0
eVN0YXRlOjpJc0ZvY3VzZWQ7CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRl
OjpXaW5kb3dJc0FjdGl2ZSAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3V2luZG93QWN0aXZlKCkpCkBA
IC0xNTE1LDkgKzE1MTUsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0
ZShBCiAgICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmlu
Z01lZGlhOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShB
Y3Rpdml0eVN0YXRlOjpGbGFncyBtYXlIYXZlQ2hhbmdlZCwgYm9vbCB3YW50c1N5bmNocm9ub3Vz
UmVwbHksIEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgZGlzcGF0Y2hNb2RlKQordm9p
ZCBXZWJQYWdlUHJveHk6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5
U3RhdGU6OkZsYWc+IG1heUhhdmVDaGFuZ2VkLCBib29sIHdhbnRzU3luY2hyb25vdXNSZXBseSwg
QWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZSBkaXNwYXRjaE1vZGUpCiB7Ci0gICAgTE9H
X1dJVEhfU1RSRUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8PCAiV2ViUGFnZVByb3h5ICIgPDwg
cGFnZUlEKCkgPDwgIiBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlIC0gbWF5SGF2ZUNoYW5nZWQgIiA8
PCAgYWN0aXZpdHlTdGF0ZUZsYWdzVG9TdHJpbmcobWF5SGF2ZUNoYW5nZWQpKTsKKyAgICBMT0df
V0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBw
YWdlSUQoKSA8PCAiIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UgLSBtYXlIYXZlQ2hhbmdlZCAiIDw8
IG1heUhhdmVDaGFuZ2VkKTsKIAogICAgIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0
ZUZsYWdzIHw9IG1heUhhdmVDaGFuZ2VkOwogICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRz
U3luY2hyb25vdXNSZXBseSA9IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNS
ZXBseSB8fCB3YW50c1N5bmNocm9ub3VzUmVwbHk7CkBAIC0xNTY2LDIwICsxNTY2LDIwIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGUKICAgICBpZiAoIWlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKEFjdGl2aXR5U3RhdGUs
IHN0cmVhbSA8PCAiV2ViUGFnZVByb3h5ICIgPDwgcGFnZUlEKCkgPDwgIiBkaXNwYXRjaEFjdGl2
aXR5U3RhdGVDaGFuZ2UgLSBwb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgIiA8
PCBhY3Rpdml0eVN0YXRlRmxhZ3NUb1N0cmluZyhtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5
U3RhdGVGbGFncykpOworICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0g
PDwgIldlYlBhZ2VQcm94eSAiIDw8IHBhZ2VJRCgpIDw8ICIgZGlzcGF0Y2hBY3Rpdml0eVN0YXRl
Q2hhbmdlIC0gcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzICIgPDwgbV9wb3Rl
bnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MpOwogCiAgICAgLy8gSWYgdGhlIHZpc2li
aWxpdHkgc3RhdGUgbWF5IGhhdmUgY2hhbmdlZCwgdGhlbiBzbyBtYXkgdGhlIHZpc3VhbGx5IGlk
bGUgJiBvY2NsdWRlZCBhZ25vc3RpYyBzdGF0ZS4KICAgICBpZiAobV9wb3RlbnRpYWxseUNoYW5n
ZWRBY3Rpdml0eVN0YXRlRmxhZ3MgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCi0gICAgICAg
IG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzIHw9IEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZU9yT2NjbHVkZWQgfCBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZTsKKyAg
ICAgICAgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgfD0geyBBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkLCBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRs
ZSB9OwogCiAgICAgLy8gUmVjb3JkIHRoZSBwcmlvciB2aWV3IHN0YXRlLCB1cGRhdGUgdGhlIGZs
YWdzIHRoYXQgbWF5IGhhdmUgY2hhbmdlZCwKICAgICAvLyBhbmQgY2hlY2sgd2hpY2ggZmxhZ3Mg
aGF2ZSBhY3R1YWxseSBjaGFuZ2VkLgotICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIHByZXZpb3Vz
QWN0aXZpdHlTdGF0ZSA9IG1fYWN0aXZpdHlTdGF0ZTsKKyAgICBhdXRvIHByZXZpb3VzQWN0aXZp
dHlTdGF0ZSA9IG1fYWN0aXZpdHlTdGF0ZTsKICAgICB1cGRhdGVBY3Rpdml0eVN0YXRlKG1fcG90
ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzKTsKLSAgICBBY3Rpdml0eVN0YXRlOjpG
bGFncyBjaGFuZ2VkID0gbV9hY3Rpdml0eVN0YXRlIF4gcHJldmlvdXNBY3Rpdml0eVN0YXRlOwor
ICAgIGF1dG8gY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIHByZXZpb3VzQWN0aXZpdHlTdGF0
ZTsKIAogICAgIGlmIChjaGFuZ2VkKQotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlT
dGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBwYWdlSUQoKSA8PCAiIGRpc3BhdGNo
QWN0aXZpdHlTdGF0ZUNoYW5nZTogc3RhdGUgY2hhbmdlZCBmcm9tICIgPDwgYWN0aXZpdHlTdGF0
ZUZsYWdzVG9TdHJpbmcocHJldmlvdXNBY3Rpdml0eVN0YXRlKSA8PCAiIHRvICIgPDwgYWN0aXZp
dHlTdGF0ZUZsYWdzVG9TdHJpbmcobV9hY3Rpdml0eVN0YXRlKSk7CisgICAgICAgIExPR19XSVRI
X1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2VQcm94eSAiIDw8IHBhZ2VJ
RCgpIDw8ICIgZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlOiBzdGF0ZSBjaGFuZ2VkIGZyb20g
IiA8PCBwcmV2aW91c0FjdGl2aXR5U3RhdGUgPDwgIiB0byAiIDw8IG1fYWN0aXZpdHlTdGF0ZSk7
CiAKICAgICBpZiAoKG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzICYgQWN0
aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSAmJiBpc1ZpZXdWaXNpYmxlKCkpCiAgICAgICAgIHZpZXdJ
c0JlY29taW5nVmlzaWJsZSgpOwpAQCAtMTYzNyw3ICsxNjM3LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZQogICAgIGlmIChhY3Rpdml0eVN0YXRlQ2hhbmdlSUQg
IT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cykKICAgICAgICAgd2FpdEZvckRpZFVw
ZGF0ZUFjdGl2aXR5U3RhdGUoYWN0aXZpdHlTdGF0ZUNoYW5nZUlEKTsKIAotICAgIG1fcG90ZW50
aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzID0gQWN0aXZpdHlTdGF0ZTo6Tm9GbGFnczsK
KyAgICBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyA9IHsgfTsKICAgICBt
X2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPSBmYWxzZTsKICAgICBt
X3ZpZXdXYXNFdmVySW5XaW5kb3cgfD0gaXNOb3dJbldpbmRvdzsKIH0KQEAgLTE2NjMsOCArMTY2
Myw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKICAgICAgICAg
bV9wYWdlSXNVc2VyT2JzZXJ2YWJsZUNvdW50ID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnVz
ZXJPYnNlcnZhYmxlUGFnZUNvdW50KCk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgYm9vbCBp
c0NhcHR1cmluZ01lZGlhID0gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNDYXB0
dXJpbmdNZWRpYTsKLSAgICBib29sIGlzQXVkaWJsZSA9IG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2
aXR5U3RhdGU6OklzQXVkaWJsZTsKKyAgICBib29sIGlzQ2FwdHVyaW5nTWVkaWEgPSBtX2FjdGl2
aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSk7CisgICAg
Ym9vbCBpc0F1ZGlibGUgPSBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6
SXNBdWRpYmxlKTsKICAgICBpZiAoIWlzVmlld1Zpc2libGUoKSAmJiAhbV9hbHdheXNSdW5zQXRG
b3JlZ3JvdW5kUHJpb3JpdHkgJiYgIWlzQ2FwdHVyaW5nTWVkaWEgJiYgIWlzQXVkaWJsZSkgewog
ICAgICAgICBpZiAobV9hY3Rpdml0eVRva2VuKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBVSVByb2Nlc3MgaXMgcmVsZWFzaW5n
IGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgdmlldyBpcyBubyBsb25nZXIgdmlz
aWJsZSIsIHRoaXMpOwpAQCAtNDcxMiw3ICs0NzEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dE11dGVkKFdlYkNvcmU6Ok1lZAogI2VuZGlmCiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldE11dGVkKHN0YXRlKSwgbV9wYWdlSUQpOwotICAgIGFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlIHwgQWN0aXZpdHlTdGF0ZTo6SXND
YXB0dXJpbmdNZWRpYSk7CisgICAgYWN0aXZpdHlTdGF0ZURpZENoYW5nZSh7IEFjdGl2aXR5U3Rh
dGU6OklzQXVkaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSB9KTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldE1lZGlhQ2FwdHVyZUVuYWJsZWQoYm9vbCBlbmFibGVkKQpA
QCAtNzI2OSw3ICs3MjY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmlzUGxheWluZ01lZGlhRGlk
Q2hhbgogICAgIH0KICNlbmRpZgogCi0gICAgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0
eVN0YXRlOjpJc0F1ZGlibGUgfCBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhKTsKKyAg
ICBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlLCBBY3Rp
dml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhIH0pOwogCiAgICAgcGxheWluZ01lZGlhTWFzayB8
PSBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVNYXNrOwogICAgIGlmICgob2xk
U3RhdGUgJiBwbGF5aW5nTWVkaWFNYXNrKSAhPSAobV9tZWRpYVN0YXRlICYgcGxheWluZ01lZGlh
TWFzaykpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNp
b24gMjM0ODQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTUxNSwxNyArNTE1LDE3IEBAIHB1YmxpYzoKICAgICBib29sIGRlbGVn
YXRlc1Njcm9sbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZGVsZWdhdGVzU2Nyb2xsaW5nOyB9CiAK
ICAgICBlbnVtIGNsYXNzIEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgeyBEZWZlcnJh
YmxlLCBJbW1lZGlhdGUgfTsKLSAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbWF5SGF2ZUNoYW5nZWQsIGJvb2wgd2FudHNTeW5jaHJv
bm91c1JlcGx5ID0gZmFsc2UsIEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgPSBBY3Rp
dml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpEZWZlcnJhYmxlKTsKLSAgICBib29sIGlzSW5X
aW5kb3coKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpJc0luV2luZG93OyB9CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9w
dGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBtYXlIYXZlQ2hhbmdlZCwgYm9v
bCB3YW50c1N5bmNocm9ub3VzUmVwbHkgPSBmYWxzZSwgQWN0aXZpdHlTdGF0ZUNoYW5nZURpc3Bh
dGNoTW9kZSA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6OkRlZmVycmFibGUpOwor
ICAgIGJvb2wgaXNJbldpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5jb250
YWlucyhXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsgfQogICAgIHZvaWQgd2Fp
dEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUNoYW5nZUlEKTsKICAgICB2
b2lkIGRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSB7IG1fd2FpdGluZ0ZvckRpZFVwZGF0ZUFjdGl2
aXR5U3RhdGUgPSBmYWxzZTsgfQogCiAgICAgdm9pZCBsYXllckhvc3RpbmdNb2RlRGlkQ2hhbmdl
KCk7CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgY29uc3Q7Ci0gICAgYm9vbCBp
c1ZpZXdWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOyB9Ci0gICAgYm9vbCBpc1ZpZXdGb2N1c2VkKCkgY29u
c3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNG
b2N1c2VkOyB9Ci0gICAgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUoKSBjb25zdCB7IHJldHVybiBt
X2FjdGl2aXR5U3RhdGUgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZTsg
fQorICAgIGJvb2wgaXNWaWV3VmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0
ZS5jb250YWlucyhXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOyB9CisgICAgYm9v
bCBpc1ZpZXdGb2N1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5z
KFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCk7IH0KKyAgICBib29sIGlzVmlld1dp
bmRvd0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7IH0KIAogICAgIHZvaWQgYWRkTUlN
RVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwog
CkBAIC0xMzU4LDcgKzEzNTgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gZ29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgV2ViQ29y
ZTo6RnJhbWVMb2FkVHlwZSk7CiAKLSAgICB2b2lkIHVwZGF0ZUFjdGl2aXR5U3RhdGUoV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkFsbEZsYWdzKTsKKyAgICB2b2lkIHVwZGF0ZUFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0
PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGZsYWdzVG9VcGRhdGUgPSBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjphbGxGbGFncygpKTsKICAgICB2b2lkIHVwZGF0ZVRocm90dGxlU3RhdGUo
KTsKICAgICB2b2lkIHVwZGF0ZUhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlcygpOwog
CkBAIC0xOTM5LDcgKzE5MzksNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eT4gbV91c2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI7CiAjZW5kaWYKIAotICAgIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZs
YWdzIG1fYWN0aXZpdHlTdGF0ZSB7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Ok5vRmxhZ3MgfTsK
KyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbV9hY3Rpdml0eVN0
YXRlOwogICAgIGJvb2wgbV92aWV3V2FzRXZlckluV2luZG93IHsgZmFsc2UgfTsKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgYm9vbCBtX2FsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayB7
IGZhbHNlIH07CkBAIC0yMTc2LDcgKzIxNzYsNyBAQCBwcml2YXRlOgogICAgIEFjdGl2aXR5U3Rh
dGVDaGFuZ2VJRCBtX2N1cnJlbnRBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgeyBBY3Rpdml0eVN0YXRl
Q2hhbmdlQXN5bmNocm9ub3VzIH07CiAKICAgICBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1h
cCBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzOwotICAgIFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkZsYWdzIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzIHsgV2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6Tm9GbGFncyB9OworICAgIE9wdGlvblNldDxXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpGbGFnPiBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFn
czsKICAgICBib29sIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSB7
IGZhbHNlIH07CiAgICAgVmVjdG9yPENhbGxiYWNrSUQ+IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFu
Z2VDYWxsYmFja3M7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9X
S0FQSUNhc3RXUEUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy93cGUvV0tBUElDYXN0V1BFLmgJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL3dwZS9XS0FQSUNhc3RXUEUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgs
MTYgKzQ4LDE2IEBAIGlubGluZSBQcm94eWluZ1JlZlB0cjxXZWJHcmFtbWFyRGV0YWlsPiAKICAg
ICByZXR1cm4gUHJveHlpbmdSZWZQdHI8V2ViR3JhbW1hckRldGFpbD4oV2ViR3JhbW1hckRldGFp
bDo6Y3JlYXRlKGdyYW1tYXJEZXRhaWwpKTsKIH0KIAotaW5saW5lIFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkZsYWdzIHRvVmlld1N0YXRlRmxhZ3MoV0tWaWV3U3RhdGUgd2tWaWV3U3RhdGUpCitp
bmxpbmUgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IHRvVmlld1N0YXRl
RmxhZ3MoV0tWaWV3U3RhdGUgd2tWaWV3U3RhdGUpCiB7Ci0gICAgdW5zaWduZWQgdmlld1N0YXRl
RmxhZ3MgPSAwOworICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiB2
aWV3U3RhdGVGbGFnczsKIAogICAgIGlmICh3a1ZpZXdTdGF0ZSAmIGtXS1ZpZXdTdGF0ZUlzSW5X
aW5kb3cpCiAgICAgICAgIHZpZXdTdGF0ZUZsYWdzIHw9IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OklzSW5XaW5kb3c7CiAgICAgaWYgKHdrVmlld1N0YXRlICYga1dLVmlld1N0YXRlSXNWaXNpYmxl
KQogICAgICAgICB2aWV3U3RhdGVGbGFncyB8PSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zp
c2libGU7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
RmxhZ3M+KHZpZXdTdGF0ZUZsYWdzKTsKKyAgICByZXR1cm4gdmlld1N0YXRlRmxhZ3M7CiB9CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTU1LDcgKzE1NSw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKICAgICAg
ICAgaWYgKCFwYWdlUHJveHkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHBhZ2VQcm94
eS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShhY3Rpdml0eVN0YXRlRmxhZ3NUb1VwZGF0ZSk7Ci0g
ICAgICAgIGFjdGl2aXR5U3RhdGVGbGFnc1RvVXBkYXRlID0gQWN0aXZpdHlTdGF0ZTo6Tm9GbGFn
czsKKyAgICAgICAgYWN0aXZpdHlTdGF0ZUZsYWdzVG9VcGRhdGUgPSB7IH07CiAgICAgfQogCiAg
ICAgV2ViS2l0V2ViVmlld0NoaWxkcmVuTWFwIGNoaWxkcmVuOwpAQCAtMTg1LDggKzE4NSw4IEBA
IHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKICAgICB1bnNpZ25lZCBsb25nIHRv
cGxldmVsV2luZG93UmVhbGl6ZWRJRCB7IDAgfTsKIAogICAgIC8vIFZpZXcgU3RhdGUuCi0gICAg
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSB7IDAgfTsKLSAgICBBY3Rpdml0eVN0
YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlRmxhZ3NUb1VwZGF0ZSB7IDAgfTsKKyAgICBPcHRpb25T
ZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZTsKKyAgICBPcHRpb25TZXQ8QWN0
aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZUZsYWdzVG9VcGRhdGU7CiAgICAgUnVuTG9v
cDo6VGltZXI8V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlPiB1cGRhdGVBY3Rpdml0eVN0YXRlVGlt
ZXI7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC0yMDcsNyArMjA3LDcgQEAgc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogCiBXRUJLSVRfREVGSU5FX1RZUEUoV2Vi
S2l0V2ViVmlld0Jhc2UsIHdlYmtpdF93ZWJfdmlld19iYXNlLCBHVEtfVFlQRV9DT05UQUlORVIp
CiAKLXN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rpdml0eVN0
YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mg
ZmxhZ3NUb1VwZGF0ZSkKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRh
dGVBY3Rpdml0eVN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgT3B0aW9uU2V0
PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGZsYWdzVG9VcGRhdGUpCiB7CiAgICAgV2ViS2l0V2ViVmll
d0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CiAgICAgcHJpdi0+YWN0aXZp
dHlTdGF0ZUZsYWdzVG9VcGRhdGUgfD0gZmxhZ3NUb1VwZGF0ZTsKQEAgLTIzOSw3ICsyMzksNyBA
QCBzdGF0aWMgZ2Jvb2xlYW4gdG9wbGV2ZWxXaW5kb3dGb2N1c091dEV2CiAgICAgaWYgKCEocHJp
di0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKSkKICAgICAg
ICAgcmV0dXJuIEZBTFNFOwogCi0gICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAmPSB+QWN0aXZpdHlT
dGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAtPSBBY3Rpdml0
eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKICAgICB3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBk
YXRlQWN0aXZpdHlTdGF0ZSh3ZWJWaWV3QmFzZSwgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3Rp
dmUpOwogCiAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMjU4LDcgKzI1OCw3IEBAIHN0YXRpYyBnYm9v
bGVhbiB0b3BsZXZlbFdpbmRvd1N0YXRlRXZlbnQKICAgICBpZiAodmlzaWJsZSkKICAgICAgICAg
cHJpdi0+YWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CiAgICAgZWxz
ZQotICAgICAgICBwcml2LT5hY3Rpdml0eVN0YXRlICY9IH5BY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGU7CisgICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgLT0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlOwogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rpdml0eVN0YXRlKHdl
YlZpZXdCYXNlLCBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogCiAgICAgcmV0dXJuIEZBTFNF
OwpAQCAtMzAxLDEzICszMDEsMTMgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRU
b3BsZXZlbAogICAgIHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cgPSB3aW5kb3c7CiAKICAg
ICBpZiAoIXByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cpIHsKLSAgICAgICAgQWN0aXZpdHlT
dGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IDA7CisgICAgICAgIE9wdGlvblNldDxBY3Rpdml0
eVN0YXRlOjpGbGFnPiBmbGFnc1RvVXBkYXRlOwogICAgICAgICBpZiAocHJpdi0+YWN0aXZpdHlT
dGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpIHsKLSAgICAgICAgICAgIHByaXYtPmFj
dGl2aXR5U3RhdGUgJj0gfkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CisgICAgICAgICAgICBw
cml2LT5hY3Rpdml0eVN0YXRlIC09IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CiAgICAgICAg
ICAgICBmbGFnc1RvVXBkYXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpXaW5k
b3dJc0FjdGl2ZSkgewotICAgICAgICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAmPSB+QWN0aXZp
dHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgICAgICAgICBwcml2LT5hY3Rpdml0eVN0YXRl
IC09IEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlOwogICAgICAgICAgICAgZmxhZ3NUb1Vw
ZGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93OwogICAgICAgICB9CiAgICAgICAgIGlm
IChmbGFnc1RvVXBkYXRlKQpAQCAtNjI0LDcgKzYyNCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlTWFwKEd0a1dpZGcKIAogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7Ci0gICAgQWN0aXZpdHlTdGF0ZTo6Rmxh
Z3MgZmxhZ3NUb1VwZGF0ZSA9IDA7CisgICAgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+
IGZsYWdzVG9VcGRhdGU7CiAgICAgaWYgKCEocHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZSkpCiAgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlOwogICAgIGlmIChwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93KSB7CkBA
IC02NDksNyArNjQ5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVbm1hcChHdGtX
aQogICAgIGlmICghKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcml2LT5hY3Rpdml0eVN0YXRlICY9IH5BY3Rp
dml0eVN0YXRlOjpJc1Zpc2libGU7CisgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAtPSBBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGU7CiAgICAgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZUFj
dGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAK
QEAgLTE0OTMsNyArMTQ5Myw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRGb2N1cyhXZWJL
aXRXZWIKICAgICBpZiAoKGZvY3VzZWQgJiYgcHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5
U3RhdGU6OklzRm9jdXNlZCkgfHwgKCFmb2N1c2VkICYmICEocHJpdi0+YWN0aXZpdHlTdGF0ZSAm
IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBY3Rp
dml0eVN0YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlID0gQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2Vk
OworICAgIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBmbGFnc1RvVXBkYXRlIHsgQWN0
aXZpdHlTdGF0ZTo6SXNGb2N1c2VkIH07CiAgICAgaWYgKGZvY3VzZWQpIHsKICAgICAgICAgcHJp
di0+YWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQ7CiAKQEAgLTE1MDcs
MjkgKzE1MDcsMjkgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldEZvY3VzKFdlYktpdFdlYgog
ICAgICAgICAgICAgZmxhZ3NUb1VwZGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2
ZTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBwcml2LT5hY3Rpdml0eVN0YXRlICY9
IH5BY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQ7CisgICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUg
LT0gQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkOwogCiAgICAgd2Via2l0V2ViVmlld0Jhc2VTY2hl
ZHVsZVVwZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIGZsYWdzVG9VcGRhdGUpOwogfQog
CiBib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNJbldpbmRvd0FjdGl2ZShXZWJLaXRXZWJWaWV3QmFz
ZSogd2ViVmlld0Jhc2UpCiB7Ci0gICAgcmV0dXJuIHdlYlZpZXdCYXNlLT5wcml2LT5hY3Rpdml0
eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgcmV0dXJuIHdlYlZp
ZXdCYXNlLT5wcml2LT5hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OldpbmRv
d0lzQWN0aXZlKTsKIH0KIAogYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUlzRm9jdXNlZChXZWJLaXRX
ZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCiB7Ci0gICAgcmV0dXJuIHdlYlZpZXdCYXNlLT5wcml2
LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkOworICAgIHJldHVybiB3
ZWJWaWV3QmFzZS0+cHJpdi0+YWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJ
c0ZvY3VzZWQpOwogfQogCiBib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNWaXNpYmxlKFdlYktpdFdl
YlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKIHsKLSAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYt
PmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisgICAgcmV0dXJuIHdl
YlZpZXdCYXNlLT5wcml2LT5hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZSk7CiB9CiAKIGJvb2wgd2Via2l0V2ViVmlld0Jhc2VJc0luV2luZG93KFdlYktpdFdl
YlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKIHsKLSAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYt
PmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93OworICAgIHJldHVybiB3
ZWJWaWV3QmFzZS0+cHJpdi0+YWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJ
c0luV2luZG93KTsKIH0KIAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldElucHV0TWV0aG9kU3Rh
dGUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBib29sIGVuYWJsZWQpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAJKHJldmlz
aW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MiwxMSArMTcyLDExIEBAIHZvaWQgVmlldzo6c2V0U2l6
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXoKICAgICAgICAgbV9wYWdlUHJveHktPmRyYXdpbmdBcmVh
KCktPnNldFNpemUoc2l6ZSk7CiB9CiAKLXZvaWQgVmlldzo6c2V0Vmlld1N0YXRlKFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGZsYWdzKQordm9pZCBWaWV3OjpzZXRWaWV3U3RhdGUoT3B0
aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGZsYWdzKQogewotICAgIHN0YXRp
YyBjb25zdCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBkZWZhdWx0RmxhZ3MgPSBXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB8IFdlYkNvcmU6OkFjdGl2aXR5U3Rh
dGU6OklzRm9jdXNlZDsKKyAgICBzdGF0aWMgY29uc3QgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWc+IGRlZmF1bHRGbGFncyB7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Oldp
bmRvd0lzQWN0aXZlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQgfTsKIAotICAg
IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWRGbGFncyA9IG1fdmlld1N0YXRl
RmxhZ3MgXiAoZGVmYXVsdEZsYWdzIHwgZmxhZ3MpOworICAgIGF1dG8gPSBtX3ZpZXdTdGF0ZUZs
YWdzIF4gKGRlZmF1bHRGbGFncyB8IGZsYWdzKTsKICAgICBtX3ZpZXdTdGF0ZUZsYWdzID0gZGVm
YXVsdEZsYWdzIHwgZmxhZ3M7CiAKICAgICBpZiAoY2hhbmdlZEZsYWdzKQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgJKHJldmlzaW9uIDIzNDg0MSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAotICAgIFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlRmxhZ3M7
IH0KLSAgICB2b2lkIHNldFZpZXdTdGF0ZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyk7
CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IHZpZXdTdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlRmxhZ3M7IH0KKyAgICB2b2lkIHNldFZpZXdTdGF0
ZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4pOwogCiAgICAgdm9pZCBj
bG9zZSgpOwogCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYktpdDo6UGFnZUNsaWVudEltcGw+IG1fcGFnZUNsaWVudDsKICAgICBSZWZQdHI8V2ViS2l0
OjpXZWJQYWdlUHJveHk+IG1fcGFnZVByb3h5OwogICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXpl
OwotICAgIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIG1fdmlld1N0YXRlRmxhZ3M7Cisg
ICAgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IG1fdmlld1N0YXRlRmxh
Z3M7CiAKICAgICBXZWJLaXQ6OkNvbXBvc2l0aW5nTWFuYWdlclByb3h5IG1fY29tcG9zaXRpbmdN
YW5hZ2VyUHJveHk7CiAgICAgc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIG1fYmFja2VuZDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZp
c2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg5MiwxMyArMTg5MiwxMyBAQCBmbG9hdCBXZWJWaWV3
SW1wbDo6aW50cmluc2ljRGV2aWNlU2NhbGVGCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRP
cmRlck9mZlNjcmVlbigpCiB7CiAgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAl
cCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9mZlNjcmVlbiIsIHRoaXMsIG1fcGFnZS0+cGFn
ZUlEKCkpOwotICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpJc1Zpc2libGUgfCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0Fj
dGl2ZSk7CisgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgV2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0Fj
dGl2ZSB9KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkT3JkZXJPblNjcmVlbigp
CiB7CiAgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3
aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgbV9w
YWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZSB8IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICBtX3Bh
Z2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zp
c2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH0pOwogfQogCiB2
b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRCZWNvbWVLZXkoTlNXaW5kb3cgKmtleVdpbmRvdykK
QEAgLTIwNjQsNyArMjA2NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRNb3ZlVG9XaW5k
b3coKQogICAgIGlmICh3aW5kb3cpIHsKICAgICAgICAgd2luZG93RGlkQ2hhbmdlU2NyZWVuKCk7
CiAKLSAgICAgICAgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZUNo
YW5nZXMgPSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB8IFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsKKyAgICAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGVDaGFuZ2VzIHsgV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6V2luZG93SXNBY3RpdmUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJs
ZSB9OwogICAgICAgICBpZiAobV9zaG91bGREZWZlclZpZXdJbldpbmRvd0NoYW5nZXMpCiAgICAg
ICAgICAgICBtX3ZpZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVkID0gdHJ1ZTsKICAgICAgICAg
ZWxzZQpAQCAtMjA5MCw3ICsyMDkwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZE1vdmVU
b1dpbmRvdygpCiAgICAgICAgIGlmIChtX2ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVy
ICYmICFbW21fdmlldyBnZXN0dXJlUmVjb2duaXplcnNdIGNvbnRhaW5zT2JqZWN0Om1faW1tZWRp
YXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldICYmICFtX2lnbm9yZXNOb25XaGVlbEV2
ZW50cyAmJiBtX2FsbG93c0xpbmtQcmV2aWV3KQogICAgICAgICAgICAgW21fdmlldyBhZGRHZXN0
dXJlUmVjb2duaXplcjptX2ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsK
ICAgICB9IGVsc2UgewotICAgICAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rp
dml0eVN0YXRlQ2hhbmdlcyA9IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZl
IHwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworICAgICAgICBPcHRpb25TZXQ8
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZUNoYW5nZXMgeyBXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlIH07CiAgICAgICAgIGlmIChtX3Nob3VsZERlZmVyVmlld0luV2luZG93Q2hh
bmdlcykKICAgICAgICAgICAgIG1fdmlld0luV2luZG93Q2hhbmdlV2FzRGVmZXJyZWQgPSB0cnVl
OwogICAgICAgICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNzMsNyArMTM3Myw3IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKEMKIAogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vz
czo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UodWludDY0X3QsIFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkZsYWdzIGNoYW5nZWQpCit2b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKHVpbnQ2NF90LCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6Rmxh
Zz4gY2hhbmdlZCkKIHsKICAgICBpZiAoY2hhbmdlZCAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSkKICAgICAgICAgdXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRh
dGVSZWFzb246OlZpc2liaWxpdHlIYXNDaGFuZ2VkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTk0LDcgKzE5NCw3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCB1cGRhdGVBY3RpdmVQYWdlcygpOwotICAgIHZvaWQg
cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UodWludDY0X3QgcGFnZUlELCBXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkKTsKKyAgICB2b2lkIHBhZ2VBY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKHVpbnQ2NF90IHBhZ2VJRCwgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OkZsYWc+IGNoYW5nZWQpOwogCiAgICAgdm9pZCBzZXRIaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRs
aW5nSW5jcmVhc2VMaW1pdChpbnQgbWlsbGlzZWNvbmRzKTsKIApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHJldmlzaW9uIDIzNDg0
MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MTUsNyArNTE1LDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojp3ZWJQYWdl
RGVzdHJveWVkKCkKICAgICBtX3dlYlBhZ2UgPSAwOwogfQogCi12b2lkIFBsdWdpblZpZXc6OmFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCkKK3ZvaWQg
UGx1Z2luVmlldzo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCkKIHsKICAgICBpZiAoIW1fcGx1Z2luIHx8ICFtX2lz
SW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAkod29ya2luZyBjb3B5KQpA
QCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYW51YWxMb2FkRGlkRmluaXNoTG9h
ZGluZygpOwogICAgIHZvaWQgbWFudWFsTG9hZERpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOwogCi0gICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQpOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENo
YW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCk7CiAg
ICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpOwogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2Nl
bGVyYXRlZERyYXdpbmdBcmVhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAkocmV2aXNpb24gMjM0ODQx
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIEFjY2VsZXJh
dGVkRHJhd2luZ0FyZWE6OmRldmljZU9yUGFnCiB9CiAjZW5kaWYKIAotdm9pZCBBY2NlbGVyYXRl
ZERyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdz
IGNoYW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+
JikKK3ZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShP
cHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCwgQWN0aXZpdHlTdGF0ZUNoYW5n
ZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKQogewogICAgIGlmIChjaGFuZ2VkICYgQWN0
aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSB7CiAgICAgICAgIGlmIChtX3dlYlBhZ2UuaXNWaXNpYmxl
KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERy
YXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGVzdHJveU5h
dGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyhib29sJikgb3ZlcnJpZGU7CiAjZW5kaWYK
IAotICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpGbGFncywgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4m
IC8qIGNhbGxiYWNrSURzICovKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+LCBBY3Rpdml0eVN0
YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgLyogY2FsbGJhY2tJRHMgKi8p
IG92ZXJyaWRlOwogICAgIHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdlYkNv
cmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBsYXllckhvc3REaWRGbHVzaExheWVycygpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCShyZXZpc2lvbiAyMzQ4NDEp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihXVEY6OkZ1bmN0aW9u
PHZvaWQgKCk+JiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Uo
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29u
c3QgVmVjdG9yPENhbGxiYWNrSUQ+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+LCBBY3Rp
dml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpIHsgfQogCiAg
ICAgdmlydHVhbCBib29sIG1hcmtMYXllcnNWb2xhdGlsZUltbWVkaWF0ZWx5SWZQb3NzaWJsZSgp
IHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYzLDEzICs2NjMs
OSBAQCB2b2lkIFdlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UoV2ViUGFnCiAKIHZvaWQgV2Vi
UGFnZTo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiB7Ci0gICAgLy8gV2Ugc2hvdWxkIHN1cHByZXNz
IGlmIHRoZSBwYWdlIGlzIG5vdCBhY3RpdmUsIGlzIHZpc3VhbGx5IGlkbGUsIGFuZCBzdXByZXNz
aW9uIGlzIGVuYWJsZWQuCi0gICAgYm9vbCBpc0xvYWRpbmcgPSBtX2FjdGl2aXR5U3RhdGUgJiBB
Y3Rpdml0eVN0YXRlOjpJc0xvYWRpbmc7Ci0gICAgYm9vbCBpc1BsYXlpbmdBdWRpbyA9IG1fYWN0
aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzQXVkaWJsZTsKLSAgICBib29sIGlzQ2FwdHVy
aW5nTWVkaWEgPSBtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01l
ZGlhOwotICAgIGJvb2wgaXNWaXN1YWxseUlkbGUgPSBtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0
eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZTsKLSAgICBib29sIHdpbmRvd0lzQWN0aXZlID0gbV9hY3Rp
dml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7Ci0gICAgYm9vbCBwYWdl
U3VwcHJlc3NlZCA9ICF3aW5kb3dJc0FjdGl2ZSAmJiAhaXNMb2FkaW5nICYmICFpc1BsYXlpbmdB
dWRpbyAmJiAhaXNDYXB0dXJpbmdNZWRpYSAmJiBtX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQg
JiYgaXNWaXN1YWxseUlkbGU7CisgICAgYm9vbCBpc0FjdGl2ZSA9IG1fYWN0aXZpdHlTdGF0ZS5j
b250YWluc0FueSh7IEFjdGl2aXR5U3RhdGU6OklzTG9hZGluZywgQWN0aXZpdHlTdGF0ZTo6SXNB
dWRpYmxlLCBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhLCBBY3Rpdml0eVN0YXRlOjpX
aW5kb3dJc0FjdGl2ZSB9KTsKKyAgICBib29sIGlzVmlzdWFsbHlJZGxlID0gbV9hY3Rpdml0eVN0
YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKKyAgICBib29sIHBh
Z2VTdXBwcmVzc2VkID0gbV9wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkICYmICFpc0FjdGl2ZSAm
JiBpc1Zpc3VhbGx5SWRsZTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NF
U1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQogICAgIGlmICghcGFnZVN1cHByZXNzZWQpIHsKQEAg
LTI3NjAsNyArMjc1Niw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmly
ZWQKIAogdm9pZCBXZWJQYWdlOjp1cGRhdGVJc0luV2luZG93KGJvb2wgaXNJbml0aWFsU3RhdGUp
CiB7Ci0gICAgYm9vbCBpc0luV2luZG93ID0gbV9hY3Rpdml0eVN0YXRlICYgV2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICBib29sIGlzSW5XaW5kb3cgPSBtX2FjdGl2aXR5
U3RhdGUuY29udGFpbnMoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CiAKICAg
ICBpZiAoIWlzSW5XaW5kb3cpIHsKICAgICAgICAgbV9zZXRDYW5TdGFydE1lZGlhVGltZXIuc3Rv
cCgpOwpAQCAtMjc4NSw3ICsyNzgxLDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVJc0luV2luZG93
KGJvb2wgaXNJbgogCiB2b2lkIFdlYlBhZ2U6OnZpc2liaWxpdHlEaWRDaGFuZ2UoKQogewotICAg
IGJvb2wgaXNWaXNpYmxlID0gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlOworICAgIGJvb2wgaXNWaXNpYmxlID0gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZSk7CiAgICAgaWYgKCFpc1Zpc2libGUpIHsKICAgICAgICAgLy8g
V2Ugc2F2ZSB0aGUgZG9jdW1lbnQgLyBzY3JvbGwgc3RhdGUgd2hlbiBiYWNrZ3JvdW5kaW5nIGEg
dGFiIHNvIHRoYXQgd2UgYXJlIGFibGUgdG8gcmVzdG9yZSBpdAogICAgICAgICAvLyBpZiBpdCBn
ZXRzIHRlcm1pbmF0ZWQgd2hpbGUgaW4gdGhlIGJhY2tncm91bmQuCkBAIC0yNzk0LDExICsyNzkw
LDExIEBAIHZvaWQgV2ViUGFnZTo6dmlzaWJpbGl0eURpZENoYW5nZSgpCiAgICAgfQogfQogCi12
b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZp
dHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29u
c3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcykKK3ZvaWQgV2ViUGFnZTo6c2V0QWN0
aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZSwg
QWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9y
PENhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcykKIHsKLSAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZp
dHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgcGFnZUlEKCkgPDwgIiBzZXRBY3Rpdml0
eVN0YXRlIHRvICIgPDwgYWN0aXZpdHlTdGF0ZUZsYWdzVG9TdHJpbmcoYWN0aXZpdHlTdGF0ZSkp
OworICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2Ug
IiA8PCBwYWdlSUQoKSA8PCAiIHNldEFjdGl2aXR5U3RhdGUgdG8gIiA8PCBhY3Rpdml0eVN0YXRl
KTsKIAotICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUg
XiBhY3Rpdml0eVN0YXRlOworICAgIGF1dG8gY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIGFj
dGl2aXR5U3RhdGU7CiAgICAgbV9hY3Rpdml0eVN0YXRlID0gYWN0aXZpdHlTdGF0ZTsKIAogICAg
IGlmIChjaGFuZ2VkKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTgsOCArNDk4LDggQEAgcHVibGlj
OgogICAgIHZvaWQgYWRkUGx1Z2luVmlldyhQbHVnaW5WaWV3Kik7CiAgICAgdm9pZCByZW1vdmVQ
bHVnaW5WaWV3KFBsdWdpblZpZXcqKTsKIAotICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
OyB9Ci0gICAgYm9vbCBpc1Zpc2libGVPck9jY2x1ZGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rp
dml0eVN0YXRlICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZDsg
fQorICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNv
bnRhaW5zKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7IH0KKyAgICBib29sIGlz
VmlzaWJsZU9yT2NjbHVkZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUuY29udGFp
bnMoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCk7IH0KIAogICAg
IExheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5
ZXJIb3N0aW5nTW9kZTsgfQogICAgIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3Rp
bmdNb2RlKTsKQEAgLTExNzEsNyArMTE3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRJbml0
aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBX
ZWJLZXlib2FyZEV2ZW50JiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1cGRhdGVJc0luV2luZG93
KGJvb2wgaXNJbml0aWFsU3RhdGUgPSBmYWxzZSk7CiAgICAgdm9pZCB2aXNpYmlsaXR5RGlkQ2hh
bmdlKCk7Ci0gICAgdm9pZCBzZXRBY3Rpdml0eVN0YXRlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OkZsYWdzLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYg
Y2FsbGJhY2tJRHMpOworICAgIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8V2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4sIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVj
dG9yPENhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcyk7CiAgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmQo
Y29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRFZGl0YWJsZShib29s
KTsKQEAgLTE2ODksNyArMTY4OSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fdXNlQXN5bmNT
Y3JvbGxpbmcgeyBmYWxzZSB9OwogCi0gICAgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3Mg
bV9hY3Rpdml0eVN0YXRlOworICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFnPiBtX2FjdGl2aXR5U3RhdGU7CiAKICAgICBib29sIG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5h
YmxlZDsKICAgICBVc2VyQWN0aXZpdHkgbV91c2VyQWN0aXZpdHk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKIAogbWVzc2Fn
ZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0SW5pdGlhbEZvY3VzKGJvb2wg
Zm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgV2ViS2l0OjpXZWJLZXlib2FyZEV2
ZW50IGV2ZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBTZXRBY3Rpdml0
eVN0YXRlKHVuc2lnbmVkIGFjdGl2aXR5U3RhdGUsIFdlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5n
ZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgVmVjdG9yPFdlYktpdDo6Q2FsbGJhY2tJRD4gY2Fs
bGJhY2tJRHMpCisgICAgU2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZSwgV2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdl
SUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBWZWN0b3I8V2ViS2l0OjpDYWxsYmFja0lEPiBjYWxs
YmFja0lEcykKICAgICBTZXRMYXllckhvc3RpbmdNb2RlKGVudW0gV2ViS2l0OjpMYXllckhvc3Rp
bmdNb2RlIGxheWVySG9zdGluZ01vZGUpCiAKICAgICBTZXREcmF3c0JhY2tncm91bmQoYm9vbCBk
cmF3c0JhY2tncm91bmQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBtYWluRnJhbWVDb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29u
c3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcykgb3ZlcnJpZGU7CisgICAgdm9pZCBh
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFnPiBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFj
a0lEPiYgY2FsbGJhY2tJRHMpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBhZGp1c3RMYXllckZsdXNo
VGhyb3R0bGluZyhXZWJDb3JlOjpMYXllckZsdXNoVGhyb3R0bGVTdGF0ZTo6RmxhZ3MpIG92ZXJy
aWRlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjpCYWNraW5nCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kTWVzc2FnZShXVEZN
b3ZlKG1fY29tbWl0RW5jb2RlciksIHsgfSk7CiB9CiAKLXZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIEFj
dGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxD
YWxsYmFja0lEPiYpCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiwgQWN0
aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENh
bGxiYWNrSUQ+JikKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHN1c3BlbmQgcGFpbnRpbmcg
d2hpbGUgbm90IHZpc2libGUsIGxpa2UgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE/IFBy
b2JhYmx5LgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAko
cmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcg
KzgxLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkVXNlVGlsZWRCYWNraW5nRm9yRnJh
bWVWaWV3KGNvbnN0IFdlYkNvcmU6OkZyYW1lVmlldyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBh
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5n
ZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+Jikgb3Zl
cnJpZGU7CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNv
bnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkVXBkYXRlQWN0
aXZpdHlTdGF0ZVRpbWVyRmlyZWQoKTsKIAogICAgIHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFw
aGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkocmV2
aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NjgsNyAr
NDY4LDcgQEAgYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zmx1cwogICAgIH0K
IH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdl
SUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIG5leHRB
Y3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlT
dGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIG5leHRBY3Rpdml0eVN0YXRl
Q2hhbmdlQ2FsbGJhY2tJRHMpCiB7CiAgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxi
YWNrSURzLmFwcGVuZFZlY3RvcihuZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKTsK
ICAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCA9IHN0ZDo6bWF4KG1fYWN0aXZpdHlTdGF0ZUNo
YW5nZUlELCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQpOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjM0ODQ4KQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDgtMTQgIEFu
dHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBPcHRpb25TZXQg
Zm9yIEFjdGl2aXR5U3RhdGU6OkZsYWdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODg1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOC0wOC0xNCAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0Zsb2F0aW5nXSBBZGp1c3Qg
dmVydGljYWwgcG9zaXRpb24gd2l0aCBub24tY29sbGFwc2luZyBwcmV2aW91cyBzaWJsaW5nIG1h
cmdpbi4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNw
cAkocmV2aXNpb24gMjM0ODQxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0
aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc5LDYgKzM3OSwzMSBAQCBURVNUKFdURl9P
cHRpb25TZXQsIE9wZXJhdG9yQW5kKQogICAgIH0KIH0KIAorVEVTVChXVEZfT3B0aW9uU2V0LCBP
cGVyYXRvclhvcikKK3sKKyAgICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPiBhIHsgRXhhbXBsZUZs
YWdzOjpBIH07CisgICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4gYWMgeyBFeGFtcGxlRmxhZ3M6
OkEsIEV4YW1wbGVGbGFnczo6QyB9OworICAgIE9wdGlvblNldDxFeGFtcGxlRmxhZ3M+IGJjIHsg
RXhhbXBsZUZsYWdzOjpCLCBFeGFtcGxlRmxhZ3M6OkMgfTsKKyAgICB7CisgICAgICAgIGF1dG8g
c2V0ID0gYSBeIGFjOworICAgICAgICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRhaW5zKEV4YW1wbGVG
bGFnczo6QSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFn
czo6QikpOworICAgICAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpD
KSk7CisgICAgfQorICAgIHsKKyAgICAgICAgYXV0byBzZXQgPSBhIF4gYmM7CisgICAgICAgIEVY
UEVDVF9UUlVFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkEpKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QikpOworICAgICAgICBFWFBFQ1RfVFJV
RShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpDKSk7CisgICAgfQorICAgIHsKKyAgICAgICAg
YXV0byBzZXQgPSBhYyBeIGJjOworICAgICAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMoRXhh
bXBsZUZsYWdzOjpBKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhFeGFtcGxl
RmxhZ3M6OkIpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWlucyhFeGFtcGxlRmxh
Z3M6OkMpKTsKKyAgICB9Cit9CisKIFRFU1QoV1RGX09wdGlvblNldCwgQ29udGFpbnNBbnkpCiB7
CiAgICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4gc2V0IHsgRXhhbXBsZUZsYWdzOjpBLCBFeGFt
cGxlRmxhZ3M6OkIgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347157</attachid>
            <date>2018-08-15 04:29:58 -0700</date>
            <delta_ts>2018-08-15 13:36:35 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-activitystate-5.patch</filename>
            <type>text/plain</type>
            <size>67461</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE4LTA4LTE0ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0IGZvciBBY3Rpdml0eVN0YXRl
OjpGbGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg4NTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICAq
IHd0Zi9PcHRpb25TZXQuaDoKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvcl4pOgor
CisgICAgICAgIEFkZCB4b3Igb3BlcmF0b3IsIHVzZWZ1bCBmb3IgZmluZGluZyBjaGFuZ2VzIGJl
dHdlZW4gc2V0cy4KKwogMjAxOC0wOC0xMyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNv
bnkuY29tPgogCiAgICAgICAgIE1lYW5pbmcgb2YgT3B0aW9uU2V0Ojpjb250YWlucyBpcyB1bmNs
ZWFyIHdoZW4gdXNlZCB3aXRoIE9wdGlvblNldCBhcmd1bWVudApJbmRleDogU291cmNlL1dURi93
dGYvT3B0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvT3B0aW9uU2V0LmgJ
KHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDgsNiArMTQ4LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZyb21S
YXcobGhzLm1fc3RvcmFnZSAmIH5yaHMubV9zdG9yYWdlKTsKICAgICB9CiAKKyAgICBjb25zdGV4
cHIgZnJpZW5kIE9wdGlvblNldCBvcGVyYXRvcl4oT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0IHJo
cykKKyAgICB7CisgICAgICAgIHJldHVybiBmcm9tUmF3KGxocy5tX3N0b3JhZ2UgXiByaHMubV9z
dG9yYWdlKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZW51bSBJbml0aWFsaXphdGlvblRhZyB7
IEZyb21SYXdWYWx1ZSB9OwogICAgIGNvbnN0ZXhwciBPcHRpb25TZXQoVCB0LCBJbml0aWFsaXph
dGlvblRhZykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE4LTA4LTE0
ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9u
U2V0IGZvciBBY3Rpdml0eVN0YXRlOjpGbGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQg
RnVsZ2hhbS4KKworICAgICAgICBNb3JlIHR5cGVzYWZlIGZsYWdzLgorCisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAg
ICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YWN0aXZpdHlTdGF0ZURpZENo
YW5nZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5o
OgorICAgICAgICAqIHBhZ2UvQWN0aXZpdHlTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpv
cGVyYXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OmFjdGl2aXR5U3RhdGVGbGFnc1RvU3RyaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0FjdGl2aXR5U3RhdGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OmFsbEZsYWdzKToKKyAgICAgICAgKiBwYWdlL0FjdGl2aXR5
U3RhdGVDaGFuZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6Rm9jdXNDb250cm9sbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZCk6CisgICAgICAg
IChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2aXR5U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRBY3RpdmUpOgorICAgICAgICAqIHBhZ2UvRm9j
dXNDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmlzQWN0
aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6aXNGb2N1c2Vk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6Y29udGVudElzVmlz
aWJsZSBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldElzSW5XaW5kb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6dXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6c2V0QWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc1Zp
c2libGVBbmRBY3RpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNXaW5kb3dB
Y3RpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0SXNWaXNpYmxlKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFjdGl2aXR5U3Rh
dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNWaXNpYmxlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OmlzSW5XaW5kb3cgY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
UGVyZm9ybWFuY2VNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFjdGl2aXR5U3RhdGVG
b3JDUFVTYW1wbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZU1vbml0b3I6OmFj
dGl2aXR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5o
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvY29jb2E6IEFkZGVkLgorCiAyMDE4LTA4LTE0ICBS
b2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgRmV0Y2g6IGNvbnRlbnQtbGVu
Z3RoIGhlYWRlciBpcyBiZWluZyBhZGRlZCB0byB0aGUgc2FmZS1saXN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyOCwxMCArMTI4LDEwIEBAIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4g
R2VvbG8KICAgICByZXR1cm4gbV9jbGllbnQubGFzdFBvc2l0aW9uKCk7CiB9CiAKLXZvaWQgR2Vv
bG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6
OkZsYWdzIG9sZEFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5
U3RhdGUpCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURpZENoYW5n
ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gb2xkQWN0aXZpdHlTdGF0ZSwgT3B0aW9u
U2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG5ld0FjdGl2aXR5U3RhdGUpCiB7CiAgICAgLy8gVG9n
Z2xlIEdQUyBiYXNlZCBvbiBwYWdlIHZpc2liaWxpdHkgdG8gc2F2ZSBiYXR0ZXJ5LgotICAgIEFj
dGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBvbGRBY3Rpdml0eVN0YXRlIF4gbmV3QWN0aXZp
dHlTdGF0ZTsKKyAgICBhdXRvIGNoYW5nZWQgPSBvbGRBY3Rpdml0eVN0YXRlIF4gbmV3QWN0aXZp
dHlTdGF0ZTsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSAmJiAh
bV9vYnNlcnZlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChuZXdBY3Rpdml0eVN0YXRlICYg
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQogICAgICAgICAgICAgbV9jbGllbnQuc3RhcnRVcGRh
dGluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgUGFnZSYgbV9w
YWdlOwogICAgIEdlb2xvY2F0aW9uQ2xpZW50JiBtX2NsaWVudDsKIAotICAgIHZvaWQgYWN0aXZp
dHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBvbGRBY3Rpdml0eVN0YXRlLCBB
Y3Rpdml0eVN0YXRlOjpGbGFncyBuZXdBY3Rpdml0eVN0YXRlKSBvdmVycmlkZTsKKyAgICB2b2lk
IGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG9s
ZEFjdGl2aXR5U3RhdGUsIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBuZXdBY3Rpdml0
eVN0YXRlKSBvdmVycmlkZTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlv
bj4gbV9sYXN0UG9zaXRpb247CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCShyZXZpc2lvbiAyMzQ4
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM3MSwxNCArNjM3MSwxNCBAQCBib29sIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmVuYWJsZVN1CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rp
dml0eVN0YXRlOjpGbGFncyBvbGRBY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlOjpGbGFncyBu
ZXdBY3Rpdml0eVN0YXRlKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBvbGRBY3Rpdml0
eVN0YXRlLCBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbmV3QWN0aXZpdHlTdGF0ZSkK
IHsKICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQWN0aXZpdHlT
dGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG9sZEFjdGl2aXR5U3RhdGUgXiBuZXdBY3Rpdml0eVN0YXRl
OworICAgIGF1dG8gY2hhbmdlZCA9IG9sZEFjdGl2aXR5U3RhdGUgXiBuZXdBY3Rpdml0eVN0YXRl
OwogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQotICAgICAgICBt
X2NvbnRleHQtPnNldENvbnRleHRWaXNpYmlsaXR5KG5ld0FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGUpOworICAgICAgICBtX2NvbnRleHQtPnNldENvbnRleHRWaXNpYmls
aXR5KG5ld0FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSk7
CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2V0RmFpbE5leHRHUFVTdGF0
dXNDaGVjaygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTgzOCw3ICs4MzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJXaXRo
V2ViR0xTdGF0ZVRyYWNrZXIoKTsKICAgICB2b2lkIGNoZWNrRm9yQ29udGV4dExvc3NIYW5kbGlu
ZygpOwogCi0gICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZs
YWdzIG9sZEFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5U3Rh
dGUpIG92ZXJyaWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8
QWN0aXZpdHlTdGF0ZTo6RmxhZz4gb2xkQWN0aXZpdHlTdGF0ZSwgT3B0aW9uU2V0PEFjdGl2aXR5
U3RhdGU6OkZsYWc+IG5ld0FjdGl2aXR5U3RhdGUpIG92ZXJyaWRlOwogCiAgICAgV2ViR0xTdGF0
ZVRyYWNrZXI6OlRva2VuIG1fdHJhY2tlclRva2VuOwogICAgIFRpbWVyIG1fY2hlY2tGb3JDb250
ZXh0TG9zc0hhbmRsaW5nVGltZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5
U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0
ZS5jcHAJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlT
dGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDY1ICsyNiwzNCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUuaCIKIAotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIGFjdGl2aXR5U3RhdGVGbGFnc1RvU3RyaW5nKEFj
dGl2aXR5U3RhdGU6OkZsYWdzIGZsYWdzKQorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGZsYWdzKQogewotICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAKLSAgICBhdXRvIGFwcGVuZENvbW1hSWZOZWNlc3Nh
cnkgPSBbJl0oKSB7Ci0gICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKKyAgICBib29sIGRpZEFwcGVuZCA9IGZhbHNlOworCisg
ICAgYXV0byBhcHBlbmRJZiA9IFsmXShhdXRvIGZsYWcsIGF1dG8gbWVzc2FnZSkgeworICAgICAg
ICBpZiAoIWZsYWdzLmNvbnRhaW5zKGZsYWcpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBpZiAoZGlkQXBwZW5kKQorICAgICAgICAgICAgdHMgPDwgIiwgIjsKKyAgICAgICAgdHMgPDwg
bWVzc2FnZTsKKyAgICAgICAgZGlkQXBwZW5kID0gdHJ1ZTsKICAgICB9OwogICAgIAotICAgIGlm
IChmbGFncyAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKSB7Ci0gICAg
ICAgIGFwcGVuZENvbW1hSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoImFj
dGl2ZSB3aW5kb3ciKTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MgJiBXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpJc0ZvY3VzZWQpIHsKLSAgICAgICAgYXBwZW5kQ29tbWFJZk5lY2Vzc2FyeSgpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiZm9jdXNlZCIpOwotICAgIH0KLQotICAgIGlmIChmbGFn
cyAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgewotICAgICAgICBhcHBlbmRD
b21tYUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ2aXNpYmxlIik7Ci0g
ICAgfQotCi0gICAgaWYgKGZsYWdzICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
T3JPY2NsdWRlZCkgewotICAgICAgICBhcHBlbmRDb21tYUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJ2aXNpYmxlIG9yIG9jY2x1ZGVkIik7Ci0gICAgfQotCi0gICAgaWYg
KGZsYWdzICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdykgewotICAgICAgICBh
cHBlbmRDb21tYUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJpbi13aW5k
b3ciKTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJ
c1Zpc3VhbGx5SWRsZSkgewotICAgICAgICBhcHBlbmRDb21tYUlmTmVjZXNzYXJ5KCk7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCJ2aXN1YWxseSBpZGxlIik7Ci0gICAgfQotCi0gICAgaWYgKGZs
YWdzICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlKSB7Ci0gICAgICAgIGFwcGVu
ZENvbW1hSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoImF1ZGlibGUiKTsK
LSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0xvYWRp
bmcpIHsKLSAgICAgICAgYXBwZW5kQ29tbWFJZk5lY2Vzc2FyeSgpOwotICAgICAgICBidWlsZGVy
LmFwcGVuZCgibG9hZGluZyIpOwotICAgIH0KLQotICAgIGlmIChmbGFncyAmIFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEpIHsKLSAgICAgICAgYXBwZW5kQ29tbWFJZk5l
Y2Vzc2FyeSgpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiY2FwdHVyaW5nIG1lZGlhIik7Ci0g
ICAgfQotICAgIAotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgYXBwZW5kSWYo
QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUsICJhY3RpdmUgd2luZG93Iik7CisgICAgYXBw
ZW5kSWYoQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCAiZm9jdXNlZCIpOworICAgIGFwcGVuZElm
KEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgInZpc2libGUiKTsKKyAgICBhcHBlbmRJZihBY3Rp
dml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkLCAidmlzaWJsZSBvciBvY2NsdWRlZCIpOwor
ICAgIGFwcGVuZElmKEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3csICJpbi13aW5kb3ciKTsKKyAg
ICBhcHBlbmRJZihBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSwgInZpc3VhbGx5IGlkbGUi
KTsKKyAgICBhcHBlbmRJZihBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUsICJhdWRpYmxlIik7Cisg
ICAgYXBwZW5kSWYoQWN0aXZpdHlTdGF0ZTo6SXNMb2FkaW5nLCAibG9hZGluZyIpOworICAgIGFw
cGVuZElmKEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEsICJjYXB0dXJpbmcgbWVkaWEi
KTsKKworICAgIHJldHVybiB0czsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmgJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxNCAr
MjUsMTYgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisK
IG5hbWVzcGFjZSBXVEYgewotY2xhc3MgU3RyaW5nOworY2xhc3MgVGV4dFN0cmVhbTsKIH0KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQWN0aXZpdHlTdGF0ZSB7Ci0gICAgZW51bSB7
CisgICAgZW51bSBGbGFnIHsKICAgICAgICAgV2luZG93SXNBY3RpdmUgPSAxIDw8IDAsCiAgICAg
ICAgIElzRm9jdXNlZCA9IDEgPDwgMSwKICAgICAgICAgSXNWaXNpYmxlID0gMSA8PCAyLApAQCAt
NDQsMTAgKzQ2LDcgQEAgc3RydWN0IEFjdGl2aXR5U3RhdGUgewogICAgICAgICBJc0NhcHR1cmlu
Z01lZGlhID0gMSA8PCA4LAogICAgIH07CiAKLSAgICB0eXBlZGVmIHVuc2lnbmVkIEZsYWdzOwot
Ci0gICAgc3RhdGljIGNvbnN0IEZsYWdzIE5vRmxhZ3MgPSAwOwotICAgIHN0YXRpYyBjb25zdCBG
bGFncyBBbGxGbGFncyA9IFdpbmRvd0lzQWN0aXZlIHwgSXNGb2N1c2VkIHwgSXNWaXNpYmxlIHwg
SXNWaXNpYmxlT3JPY2NsdWRlZCB8IElzSW5XaW5kb3cgfCBJc1Zpc3VhbGx5SWRsZSB8IElzQXVk
aWJsZSB8IElzTG9hZGluZyB8IElzQ2FwdHVyaW5nTWVkaWE7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBPcHRpb25TZXQ8RmxhZz4gYWxsRmxhZ3MoKSB7IHJldHVybiB7IFdpbmRvd0lzQWN0aXZlLCBJ
c0ZvY3VzZWQsIElzVmlzaWJsZSwgSXNWaXNpYmxlT3JPY2NsdWRlZCwgSXNJbldpbmRvdywgSXNW
aXN1YWxseUlkbGUsIElzQXVkaWJsZSwgSXNMb2FkaW5nLCBJc0NhcHR1cmluZ01lZGlhIH07IH0K
IH07CiAKIGVudW0gY2xhc3MgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nIHsKQEAgLTU2LDcg
KzU1LDYgQEAgZW51bSBjbGFzcyBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcgewogICAgIFZp
c2libGVBbmRBY3RpdmUKIH07CiAKLS8vIElkZWFsbHkgdGhpcyB3b3VsZCBiZSBvcGVyYXRvcjw8
KFdURjo6VGV4dFN0cmVhbSYsIEFjdGl2aXR5U3RhdGU6OkZsYWdzKSBidXQgQWN0aXZpdHlTdGF0
ZTo6RmxhZ3MgbmVlZHMgdG8gYmUgc3Ryb25nbHkgdHlwZWQgdG8gYXZvaWQgYW1iaWd1b3VzIG92
ZXJsb2Fkcy4KLVdFQkNPUkVfRVhQT1JUIFdURjo6U3RyaW5nIGFjdGl2aXR5U3RhdGVGbGFnc1Rv
U3RyaW5nKEFjdGl2aXR5U3RhdGU6OkZsYWdzKTsKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0
ZTo6RmxhZz4pOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgJKHJldmlzaW9uIDIz
NDg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlT
dGF0ZTo6RmxhZ3Mgb2xkQWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbmV3QWN0
aXZpdHlTdGF0ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
KE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBvbGRBY3Rpdml0eVN0YXRlLCBPcHRpb25T
ZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbmV3QWN0aXZpdHlTdGF0ZSkgPSAwOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNyArMzA3LDcgQEAgc3RhdGljIGlu
bGluZSBpbnQgc2hhZG93QWRqdXN0ZWRUYWJJbmRleAogICAgIHJldHVybiBlbGVtZW50LnRhYklu
ZGV4KCk7CiB9CiAKLUZvY3VzQ29udHJvbGxlcjo6Rm9jdXNDb250cm9sbGVyKFBhZ2UmIHBhZ2Us
IEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUpCitGb2N1c0NvbnRyb2xsZXI6OkZv
Y3VzQ29udHJvbGxlcihQYWdlJiBwYWdlLCBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4g
YWN0aXZpdHlTdGF0ZSkKICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9pc0NoYW5naW5nRm9j
dXNlZEZyYW1lKGZhbHNlKQogICAgICwgbV9hY3Rpdml0eVN0YXRlKGFjdGl2aXR5U3RhdGUpCkBA
IC0zNTMsNyArMzUzLDcgQEAgRnJhbWUmIEZvY3VzQ29udHJvbGxlcjo6Zm9jdXNlZE9yTWFpbkZy
YQogCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZChib29sIGZvY3VzZWQpCiB7Ci0g
ICAgbV9wYWdlLnNldEFjdGl2aXR5U3RhdGUoZm9jdXNlZCA/IG1fYWN0aXZpdHlTdGF0ZSB8IEFj
dGl2aXR5U3RhdGU6OklzRm9jdXNlZCA6IG1fYWN0aXZpdHlTdGF0ZSAmIH5BY3Rpdml0eVN0YXRl
OjpJc0ZvY3VzZWQpOworICAgIG1fcGFnZS5zZXRBY3Rpdml0eVN0YXRlKGZvY3VzZWQgPyBtX2Fj
dGl2aXR5U3RhdGUgfCBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQgOiBtX2FjdGl2aXR5U3RhdGUg
LSBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpOwogfQogCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6
c2V0Rm9jdXNlZEludGVybmFsKGJvb2wgZm9jdXNlZCkKQEAgLTg0MSwyMyArODQxLDIzIEBAIGJv
b2wgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRWxlbWVudCgKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0
ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSkKK3ZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRBY3Rpdml0
eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlKQogewot
ICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBhY3Rp
dml0eVN0YXRlOworICAgIGF1dG8gY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIGFjdGl2aXR5
U3RhdGU7CiAgICAgbV9hY3Rpdml0eVN0YXRlID0gYWN0aXZpdHlTdGF0ZTsKIAogICAgIGlmIChj
aGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKQotICAgICAgICBzZXRGb2N1c2VkSW50
ZXJuYWwoYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCk7CisgICAgICAg
IHNldEZvY3VzZWRJbnRlcm5hbChhY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6
OklzRm9jdXNlZCkpOwogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNB
Y3RpdmUpIHsKLSAgICAgICAgc2V0QWN0aXZlSW50ZXJuYWwoYWN0aXZpdHlTdGF0ZSAmIEFjdGl2
aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICAgICAgc2V0QWN0aXZlSW50ZXJuYWwoYWN0
aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSkpOwogICAg
ICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKLSAgICAgICAgICAg
IHNldElzVmlzaWJsZUFuZEFjdGl2ZUludGVybmFsKGFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0
YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CisgICAgICAgICAgICBzZXRJc1Zpc2libGVBbmRBY3RpdmVJ
bnRlcm5hbChhY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0
aXZlKSk7CiAgICAgfQogfQogCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZlKGJvb2wg
YWN0aXZlKQogewotICAgIG1fcGFnZS5zZXRBY3Rpdml0eVN0YXRlKGFjdGl2ZSA/IG1fYWN0aXZp
dHlTdGF0ZSB8IEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIDogbV9hY3Rpdml0eVN0YXRl
ICYgfkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICBtX3BhZ2Uuc2V0QWN0aXZp
dHlTdGF0ZShhY3RpdmUgPyBtX2FjdGl2aXR5U3RhdGUgfCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSA6IG1fYWN0aXZpdHlTdGF0ZSAtIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZl
KTsKIH0KIAogdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2ZUludGVybmFsKGJvb2wgYWN0
aXZlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCShyZXZpc2lvbiAy
MzQ4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBGb2N1c0NhbmRpZGF0ZTsKIGNsYXNzIEZv
Y3VzQ29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgRm9jdXNDb250cm9sbGVyKFBhZ2UmLCBBY3Rpdml0eVN0YXRlOjpGbGFncyk7
CisgICAgZXhwbGljaXQgRm9jdXNDb250cm9sbGVyKFBhZ2UmLCBPcHRpb25TZXQ8QWN0aXZpdHlT
dGF0ZTo6RmxhZz4pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGb2N1c2VkRnJhbWUo
RnJhbWUqKTsKICAgICBGcmFtZSogZm9jdXNlZEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mb2N1
c2VkRnJhbWUuZ2V0KCk7IH0KQEAgLTYyLDE1ICs2MiwxNSBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqLCBGcmFtZSYsIEZvY3Vz
RGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rpb25Ob25lKTsKIAotICAgIHZvaWQgc2V0QWN0aXZpdHlT
dGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyk7CisgICAgdm9pZCBzZXRBY3Rpdml0eVN0YXRlKE9w
dGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEFjdGl2ZShib29sKTsKLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9h
Y3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7IH0KKyAgICBib29s
IGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2
aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRGb2N1c2VkKGJvb2wpOwotICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9h
Y3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkOyB9CisgICAgYm9vbCBpc0Zv
Y3VzZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlT
dGF0ZTo6SXNGb2N1c2VkKTsgfQogCi0gICAgYm9vbCBjb250ZW50SXNWaXNpYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOyB9Cisg
ICAgYm9vbCBjb250ZW50SXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRl
LmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7IH0KIAogICAgIC8vIFRoZXNlIG1l
dGhvZHMgYXJlIHVzZWQgaW4gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbS4KICAgICBXRUJD
T1JFX0VYUE9SVCBFbGVtZW50KiBuZXh0Rm9jdXNhYmxlRWxlbWVudChOb2RlJik7CkBAIC0xMTks
NyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgUmVmUHRyPEZyYW1l
PiBtX2ZvY3VzZWRGcmFtZTsKICAgICBib29sIG1faXNDaGFuZ2luZ0ZvY3VzZWRGcmFtZTsKLSAg
ICBBY3Rpdml0eVN0YXRlOjpGbGFncyBtX2FjdGl2aXR5U3RhdGU7CisgICAgT3B0aW9uU2V0PEFj
dGl2aXR5U3RhdGU6OkZsYWc+IG1fYWN0aXZpdHlTdGF0ZTsKIAogICAgIFRpbWVyIG1fZm9jdXNS
ZXBhaW50VGltZXI7CiAgICAgTW9ub3RvbmljVGltZSBtX2ZvY3VzU2V0VGltZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDcgKzE5MiwxMCBAQCBzdGF0aWMgdm9pZCBu
ZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPCiAgICAgfQogfQogCi1zdGF0aWMgY29uc3QgQWN0
aXZpdHlTdGF0ZTo6RmxhZ3MgUGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlID0gQWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlIHwgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKK3N0YXRpYyBjb25zdGV4
cHIgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0
ZSgpCit7CisgICAgcmV0dXJuIHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBBY3Rpdml0eVN0
YXRlOjpJc0luV2luZG93IH07Cit9CiAKIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBw
YWdlQ29uZmlndXJhdGlvbikKICAgICA6IG1fY2hyb21lKHN0ZDo6bWFrZV91bmlxdWU8Q2hyb21l
PigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCkpCkBAIC0yMDAsNyArMjAz
LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maQogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAgICAgLCBtX2RyYWdDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8
RHJhZ0NvbnRyb2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCkpCiAj
ZW5kaWYKLSAgICAsIG1fZm9jdXNDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9jdXNDb250
cm9sbGVyPigqdGhpcywgUGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKSkKKyAgICAsIG1fZm9jdXND
b250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9jdXNDb250cm9sbGVyPigqdGhpcywgcGFnZUlu
aXRpYWxBY3Rpdml0eVN0YXRlKCkpKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgICwg
bV9jb250ZXh0TWVudUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNvbnRy
b2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQpKQogI2Vu
ZGlmCkBAIC0yMjQsNyArMjI3LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBh
Z2VDb25maQogICAgICwgbV9ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGlj
aXR5QWxsb3dlZCkKICAgICAsIG1fZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbChET01UaW1lcjo6
ZGVmYXVsdEFsaWdubWVudEludGVydmFsKCkpCiAgICAgLCBtX2RvbVRpbWVyQWxpZ25tZW50SW50
ZXJ2YWxJbmNyZWFzZVRpbWVyKCp0aGlzLCAmUGFnZTo6ZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZh
bEluY3JlYXNlVGltZXJGaXJlZCkKLSAgICAsIG1fYWN0aXZpdHlTdGF0ZShQYWdlSW5pdGlhbEFj
dGl2aXR5U3RhdGUpCisgICAgLCBtX2FjdGl2aXR5U3RhdGUocGFnZUluaXRpYWxBY3Rpdml0eVN0
YXRlKCkpCiAgICAgLCBtX2FsdGVybmF0aXZlVGV4dENsaWVudChwYWdlQ29uZmlndXJhdGlvbi5h
bHRlcm5hdGl2ZVRleHRDbGllbnQpCiAgICAgLCBtX2NvbnNvbGVDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQpAQCAtMTA4OSw3ICsxMDkyLDcgQEAgdW5zaWduZWQgUGFnZTo6cGFnZUNvdW50KCkgY29u
c3QKIAogdm9pZCBQYWdlOjpzZXRJc0luV2luZG93KGJvb2wgaXNJbldpbmRvdykKIHsKLSAgICBz
ZXRBY3Rpdml0eVN0YXRlKGlzSW5XaW5kb3cgPyBtX2FjdGl2aXR5U3RhdGUgfCBBY3Rpdml0eVN0
YXRlOjpJc0luV2luZG93IDogbV9hY3Rpdml0eVN0YXRlICYgfkFjdGl2aXR5U3RhdGU6OklzSW5X
aW5kb3cpOworICAgIHNldEFjdGl2aXR5U3RhdGUoaXNJbldpbmRvdyA/IG1fYWN0aXZpdHlTdGF0
ZSB8IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgOiBtX2FjdGl2aXR5U3RhdGUgLSBBY3Rpdml0
eVN0YXRlOjpJc0luV2luZG93KTsKIH0KIAogdm9pZCBQYWdlOjpzZXRJc0luV2luZG93SW50ZXJu
YWwoYm9vbCBpc0luV2luZG93KQpAQCAtMTM1Niw3ICsxMzU5LDcgQEAgdm9pZCBQYWdlOjp1cGRh
dGVUaW1lclRocm90dGxpbmdTdGF0ZSgpCiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgdmlzaWJsZSAo
YnV0IGlkbGUpLCB0aGVyZSBpcyBhbnkgYWN0aXZpdHkgKGxvYWRpbmcsIG1lZGlhIHBsYXlpbmcs
IGV0YyksIG9yIHBlciBzZXR0aW5nLAogICAgIC8vIHdlIGFsbG93IHRpbWVyIHRocm90dGxpbmcs
IGJ1dCBub3QgaW5jcmVhc2luZyB0aW1lciB0aHJvdHRsaW5nLgogICAgIGlmICghbV9zZXR0aW5n
cy0+aGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXMoKQotICAgICAgICB8
fCBtX2FjdGl2aXR5U3RhdGUgJiAoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlIHwgQWN0aXZpdHlT
dGF0ZTo6SXNBdWRpYmxlIHwgQWN0aXZpdHlTdGF0ZTo6SXNMb2FkaW5nIHwgQWN0aXZpdHlTdGF0
ZTo6SXNDYXB0dXJpbmdNZWRpYSkpIHsKKyAgICAgICAgfHwgbV9hY3Rpdml0eVN0YXRlLmNvbnRh
aW5zQW55KHtBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIEFjdGl2aXR5U3RhdGU6OklzQXVkaWJs
ZSwgQWN0aXZpdHlTdGF0ZTo6SXNMb2FkaW5nLCBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01l
ZGlhIH0pKSB7CiAgICAgICAgIHNldFRpbWVyVGhyb3R0bGluZ1N0YXRlKFRpbWVyVGhyb3R0bGlu
Z1N0YXRlOjpFbmFibGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1OTAsMTMgKzE1
OTMsMTMgQEAgdm9pZCBQYWdlOjpyZXN1bWVBbmltYXRpbmdJbWFnZXMoKQogICAgICAgICB2aWV3
LT5yZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCk7CiB9CiAK
LXZvaWQgUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0
eVN0YXRlKQordm9pZCBQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0
YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlKQogewotICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNo
YW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOworICAgIGF1dG8gY2hhbmdl
ZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIGFjdGl2aXR5U3RhdGU7CiAgICAgaWYgKCFjaGFuZ2VkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBvbGRBY3Rpdml0eVN0
YXRlID0gbV9hY3Rpdml0eVN0YXRlOworICAgIGF1dG8gb2xkQWN0aXZpdHlTdGF0ZSA9IG1fYWN0
aXZpdHlTdGF0ZTsKIAogICAgIGJvb2wgd2FzVmlzaWJsZUFuZEFjdGl2ZSA9IGlzVmlzaWJsZUFu
ZEFjdGl2ZSgpOwogICAgIG1fYWN0aXZpdHlTdGF0ZSA9IGFjdGl2aXR5U3RhdGU7CkBAIC0xNjA0
LDE3ICsxNjA3LDE3IEBAIHZvaWQgUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXQK
ICAgICBtX2ZvY3VzQ29udHJvbGxlci0+c2V0QWN0aXZpdHlTdGF0ZShhY3Rpdml0eVN0YXRlKTsK
IAogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQotICAgICAgICBz
ZXRJc1Zpc2libGVJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlKTsKKyAgICAgICAgc2V0SXNWaXNpYmxlSW50ZXJuYWwoYWN0aXZpdHlTdGF0ZS5jb250YWlu
cyhBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpKTsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5
U3RhdGU6OklzSW5XaW5kb3cpCi0gICAgICAgIHNldElzSW5XaW5kb3dJbnRlcm5hbChhY3Rpdml0
eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CisgICAgICAgIHNldElzSW5XaW5k
b3dJbnRlcm5hbChhY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzSW5XaW5k
b3cpKTsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlKQot
ICAgICAgICBzZXRJc1Zpc3VhbGx5SWRsZUludGVybmFsKGFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0
eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CisgICAgICAgIHNldElzVmlzdWFsbHlJZGxlSW50ZXJu
YWwoYWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSkp
OwogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpIHsKICAg
ICAgICAgaWYgKGF1dG8qIHZpZXcgPSBtX21haW5GcmFtZS0+dmlldygpKQogICAgICAgICAgICAg
dmlldy0+dXBkYXRlVGlsZWRCYWNraW5nQWRhcHRpdmVTaXppbmcoKTsKICAgICB9CiAKLSAgICBp
ZiAoY2hhbmdlZCAmIChBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBBY3Rpdml0eVN0YXRlOjpJ
c1Zpc3VhbGx5SWRsZSB8IEFjdGl2aXR5U3RhdGU6OklzQXVkaWJsZSB8IEFjdGl2aXR5U3RhdGU6
OklzTG9hZGluZyB8IEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEpKQorICAgIGlmIChj
aGFuZ2VkLmNvbnRhaW5zQW55KHtBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIEFjdGl2aXR5U3Rh
dGU6OklzVmlzdWFsbHlJZGxlLCBBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUsIEFjdGl2aXR5U3Rh
dGU6OklzTG9hZGluZywgQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSB9KSkKICAgICAg
ICAgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUoKTsKIAogICAgIGZvciAoYXV0byogb2JzZXJ2
ZXIgOiBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcnMpCkBAIC0xNjI5LDIwICsxNjMyLDI2
IEBAIHZvaWQgUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXQKIAogYm9vbCBQYWdl
Ojppc1Zpc2libGVBbmRBY3RpdmUoKSBjb25zdAogewotICAgIHJldHVybiAobV9hY3Rpdml0eVN0
YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSAmJiAobV9hY3Rpdml0eVN0YXRlICYgQWN0
aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgIHJldHVybiBtX2FjdGl2aXR5U3RhdGUu
Y29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSAmJiBtX2FjdGl2aXR5U3RhdGUuY29u
dGFpbnMoQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOwogfQogCiBib29sIFBhZ2U6Omlz
V2luZG93QWN0aXZlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0
aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5j
b250YWlucyhBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiB9CiAKIHZvaWQgUGFnZTo6
c2V0SXNWaXNpYmxlKGJvb2wgaXNWaXNpYmxlKQogewotICAgIGlmIChpc1Zpc2libGUpCi0gICAg
ICAgIHNldEFjdGl2aXR5U3RhdGUoKG1fYWN0aXZpdHlTdGF0ZSAmIH5BY3Rpdml0eVN0YXRlOjpJ
c1Zpc3VhbGx5SWRsZSkgfCBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBBY3Rpdml0eVN0YXRl
OjpJc1Zpc2libGVPck9jY2x1ZGVkKTsKLSAgICBlbHNlCi0gICAgICAgIHNldEFjdGl2aXR5U3Rh
dGUoKG1fYWN0aXZpdHlTdGF0ZSAmIH4oQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlIHwgQWN0aXZp
dHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCkpIHwgQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxs
eUlkbGUpOworICAgIGF1dG8gc3RhdGUgPSBtX2FjdGl2aXR5U3RhdGU7CisKKyAgICBpZiAoaXNW
aXNpYmxlKSB7CisgICAgICAgIHN0YXRlIC09IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxl
OworICAgICAgICBzdGF0ZSB8PSB7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB9OworICAgIH0gZWxzZSB7CisgICAgICAgIHN0YXRl
IHw9IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlOworICAgICAgICBzdGF0ZSAtPSB7IEFj
dGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRl
ZCB9OworICAgIH0KKyAgICBzZXRBY3Rpdml0eVN0YXRlKHN0YXRlKTsKIH0KIAogZW51bSBjbGFz
cyBTVkdBbmltYXRpb25zU3RhdGUgeyBQYXVzZWQsIFJlc3VtZWQgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDE1LDE4ICs0MTUsMTggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAv
LyBOb3RpZmljYXRpb25zIHdoZW4gdGhlIFBhZ2Ugc3RhcnRzIGFuZCBzdG9wcyBiZWluZyBwcmVz
ZW50ZWQgdmlhIGEgbmF0aXZlIHdpbmRvdy4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFj
dGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MpOwotICAgIEFjdGl2aXR5U3RhdGU6OkZs
YWdzIGFjdGl2aXR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGU7IH0KKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5
U3RhdGU6OkZsYWc+KTsKKyAgICBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZp
dHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZTsgfQogCiAgICAgYm9vbCBp
c1dpbmRvd0FjdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNWaXNpYmxlQW5kQWN0aXZlKCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc1Zpc2libGUoYm9vbCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRJc1ByZXJlbmRlcigpOwotICAgIGJvb2wgaXNWaXNpYmxlKCkg
Y29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
OyB9CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUu
Y29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsgfQogCiAgICAgLy8gTm90aWZpY2F0
aW9uIHRoYXQgdGhpcyBQYWdlIHdhcyBtb3ZlZCBpbnRvIG9yIG91dCBvZiBhIG5hdGl2ZSB3aW5k
b3cuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc0luV2luZG93KGJvb2wpOwotICAgIGJv
b2wgaXNJbldpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5
U3RhdGU6OklzSW5XaW5kb3c7IH0KKyAgICBib29sIGlzSW5XaW5kb3coKSBjb25zdCB7IHJldHVy
biBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7IH0K
IAogICAgIHZvaWQgc2V0SXNDbG9zaW5nKCkgeyBtX2lzQ2xvc2luZyA9IHRydWU7IH0KICAgICBi
b29sIGlzQ2xvc2luZygpIGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zaW5nOyB9CkBAIC04MTEsNyAr
ODExLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9pc0VkaXRhYmxlIHsgZmFsc2UgfTsKICAg
ICBib29sIG1faXNQcmVyZW5kZXIgeyBmYWxzZSB9OwotICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdz
IG1fYWN0aXZpdHlTdGF0ZTsKKyAgICBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbV9h
Y3Rpdml0eVN0YXRlOwogCiAgICAgTGF5b3V0TWlsZXN0b25lcyBtX3JlcXVlc3RlZExheW91dE1p
bGVzdG9uZXMgeyAwIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VN
b25pdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
TW9uaXRvci5jcHAJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VNb25pdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBzdGF0
aWMgY29uc3QgZG91YmxlIHBvc3RQYWdlTG9hZENQVVVzYWdlCiBzdGF0aWMgY29uc3QgdWludDY0
X3QgcG9zdFBhZ2VMb2FkTWVtb3J5VXNhZ2VEb21haW5SZXBvcnRpbmdUaHJlc2hvbGQgeyAyMDQ4
ICogTUIgfTsKICNlbmRpZgogCi1zdGF0aWMgaW5saW5lIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1w
bGluZyBhY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgc3Rh
dGUpCitzdGF0aWMgaW5saW5lIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyBhY3Rpdml0eVN0
YXRlRm9yQ1BVU2FtcGxpbmcoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IHN0YXRlKQog
ewogICAgIGlmICghKHN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSkKICAgICAgICAg
cmV0dXJuIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6Tm9uVmlzaWJsZTsKQEAgLTEwMSwx
MCArMTAxLDEwIEBAIHZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjpkaWRGaW5pc2hMb2FkKCkKICAg
ICAgICAgbV9wb3N0UGFnZUxvYWRNZW1vcnlVc2FnZVRpbWVyLnN0YXJ0T25lU2hvdChtZW1vcnlV
c2FnZU1lYXN1cmVtZW50RGVsYXkpOwogfQogCi12b2lkIFBlcmZvcm1hbmNlTW9uaXRvcjo6YWN0
aXZpdHlTdGF0ZUNoYW5nZWQoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgb2xkU3RhdGUsIEFjdGl2aXR5
U3RhdGU6OkZsYWdzIG5ld1N0YXRlKQordm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6OmFjdGl2aXR5
U3RhdGVDaGFuZ2VkKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBvbGRTdGF0ZSwgT3B0
aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG5ld1N0YXRlKQogewotICAgIEFjdGl2aXR5U3Rh
dGU6OkZsYWdzIGNoYW5nZWQgPSBvbGRTdGF0ZSBeIG5ld1N0YXRlOwotICAgIGJvb2wgdmlzaWJp
bGl0eUNoYW5nZWQgPSBjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworICAgIGF1
dG8gY2hhbmdlZCA9IG9sZFN0YXRlIF4gbmV3U3RhdGU7CisgICAgYm9vbCB2aXNpYmlsaXR5Q2hh
bmdlZCA9IGNoYW5nZWQuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIAogICAg
IC8vIE1lYXN1cmUgQ1BVIHVzYWdlIG9mIHBhZ2VzIHdoZW4gdGhleSBhcmUgbm8gbG9uZ2VyIHZp
c2libGUuCiAgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6aXNQb3N0QmFja2dyb3Vu
ZGluZ0NQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkgJiYgdmlzaWJpbGl0eUNoYW5nZWQpIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuaAkocmV2aXNpb24g
MjM0ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7Ci0gICAgdm9pZCBh
Y3Rpdml0eVN0YXRlQ2hhbmdlZChBY3Rpdml0eVN0YXRlOjpGbGFncyBvbGRTdGF0ZSwgQWN0aXZp
dHlTdGF0ZTo6RmxhZ3MgbmV3U3RhdGUpOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZUNoYW5nZWQo
T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG9sZFN0YXRlLCBPcHRpb25TZXQ8QWN0aXZp
dHlTdGF0ZTo6RmxhZz4gbmV3U3RhdGUpOwogCiBwcml2YXRlOgogICAgIHZvaWQgbWVhc3VyZVBv
c3RMb2FkQ1BVVXNhZ2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJ
KHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMzMSw3ICs0MzMxLDcgQEAgdm9pZCBJbnRlcm5hbHM6OnNl
dFBhZ2VWaXNpYmlsaXR5KGJvb2wgaQogICAgIGF1dG8gc3RhdGUgPSBwYWdlLmFjdGl2aXR5U3Rh
dGUoKTsKIAogICAgIGlmICghaXNWaXNpYmxlKQotICAgICAgICBzdGF0ZSAmPSB+QWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlOworICAgICAgICBzdGF0ZSAtPSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGU7CiAgICAgZWxzZQogICAgICAgICBzdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ4NDgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE4LTA4LTE0ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0IGZvciBB
Y3Rpdml0eVN0YXRlOjpGbGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg4NTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4K
KworICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6d2luZG93RGlkT3JkZXJPZmZTY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6d2luZG93RGlkT3JkZXJPblNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjp2aWV3RGlkTW92ZVRvV2luZG93KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBY3Rpdml0
eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5
U3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE11dGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmlzSW5XaW5kb3cgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmlzVmlld1Zpc2libGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmlzVmlld0ZvY3VzZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmlzVmlld1dpbmRvd0FjdGl2ZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjphY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAo
V2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVw
ZGF0ZVRocm90dGxlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVJc0lu
V2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dmlzaWJpbGl0eURpZENoYW5nZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmlzVmlzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmlzVmlzaWJsZU9y
T2NjbHVkZWQgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oOgorCiAyMDE4LTA4LTEzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXSzJdIFttYWNPU10gSW1wbGVtZW50IGEgbWVjaGFuaXNtIHRv
IHRlc3QgZHJhZyBhbmQgZHJvcApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Nyw3ICs2Nyw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAg
IFdlYkNvcmU6OkludFNpemUgdmlld1NpemU7CiAKLSAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpGbGFncyBhY3Rpdml0eVN0YXRlOworICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlOwogICAgIAogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUg
c3RvcmU7CiAgICAgRHJhd2luZ0FyZWFUeXBlIGRyYXdpbmdBcmVhVHlwZTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM0ODQxKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ5Miw5ICsxNDkyLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzVmlzaWJp
bGl0eQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUFjdGl2aXR5U3RhdGUo
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1
cGRhdGVBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBmbGFnc1Rv
VXBkYXRlKQogewotICAgIG1fYWN0aXZpdHlTdGF0ZSAmPSB+ZmxhZ3NUb1VwZGF0ZTsKKyAgICBt
X2FjdGl2aXR5U3RhdGUgPSBtX2FjdGl2aXR5U3RhdGUgLSBmbGFnc1RvVXBkYXRlOwogICAgIGlm
IChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkICYmIG1fcGFnZUNsaWVu
dC5pc1ZpZXdGb2N1c2VkKCkpCiAgICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0
YXRlOjpJc0ZvY3VzZWQ7CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpX
aW5kb3dJc0FjdGl2ZSAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3V2luZG93QWN0aXZlKCkpCkBAIC0x
NTE1LDkgKzE1MTUsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0ZShB
CiAgICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01l
ZGlhOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rp
dml0eVN0YXRlOjpGbGFncyBtYXlIYXZlQ2hhbmdlZCwgYm9vbCB3YW50c1N5bmNocm9ub3VzUmVw
bHksIEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgZGlzcGF0Y2hNb2RlKQordm9pZCBX
ZWJQYWdlUHJveHk6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3Rh
dGU6OkZsYWc+IG1heUhhdmVDaGFuZ2VkLCBib29sIHdhbnRzU3luY2hyb25vdXNSZXBseSwgQWN0
aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZSBkaXNwYXRjaE1vZGUpCiB7Ci0gICAgTE9HX1dJ
VEhfU1RSRUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8PCAiV2ViUGFnZVByb3h5ICIgPDwgcGFn
ZUlEKCkgPDwgIiBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlIC0gbWF5SGF2ZUNoYW5nZWQgIiA8PCAg
YWN0aXZpdHlTdGF0ZUZsYWdzVG9TdHJpbmcobWF5SGF2ZUNoYW5nZWQpKTsKKyAgICBMT0dfV0lU
SF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBwYWdl
SUQoKSA8PCAiIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UgLSBtYXlIYXZlQ2hhbmdlZCAiIDw8IG1h
eUhhdmVDaGFuZ2VkKTsKIAogICAgIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZs
YWdzIHw9IG1heUhhdmVDaGFuZ2VkOwogICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3lu
Y2hyb25vdXNSZXBseSA9IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBs
eSB8fCB3YW50c1N5bmNocm9ub3VzUmVwbHk7CkBAIC0xNTY2LDIwICsxNTY2LDIwIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGUKICAgICBpZiAoIWlzVmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKEFjdGl2aXR5U3RhdGUsIHN0
cmVhbSA8PCAiV2ViUGFnZVByb3h5ICIgPDwgcGFnZUlEKCkgPDwgIiBkaXNwYXRjaEFjdGl2aXR5
U3RhdGVDaGFuZ2UgLSBwb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgIiA8PCBh
Y3Rpdml0eVN0YXRlRmxhZ3NUb1N0cmluZyhtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3Rh
dGVGbGFncykpOworICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwg
IldlYlBhZ2VQcm94eSAiIDw8IHBhZ2VJRCgpIDw8ICIgZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hh
bmdlIC0gcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzICIgPDwgbV9wb3RlbnRp
YWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MpOwogCiAgICAgLy8gSWYgdGhlIHZpc2liaWxp
dHkgc3RhdGUgbWF5IGhhdmUgY2hhbmdlZCwgdGhlbiBzbyBtYXkgdGhlIHZpc3VhbGx5IGlkbGUg
JiBvY2NsdWRlZCBhZ25vc3RpYyBzdGF0ZS4KICAgICBpZiAobV9wb3RlbnRpYWxseUNoYW5nZWRB
Y3Rpdml0eVN0YXRlRmxhZ3MgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCi0gICAgICAgIG1f
cG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzIHw9IEFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZU9yT2NjbHVkZWQgfCBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZTsKKyAgICAg
ICAgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgfD0geyBBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkLCBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSB9
OwogCiAgICAgLy8gUmVjb3JkIHRoZSBwcmlvciB2aWV3IHN0YXRlLCB1cGRhdGUgdGhlIGZsYWdz
IHRoYXQgbWF5IGhhdmUgY2hhbmdlZCwKICAgICAvLyBhbmQgY2hlY2sgd2hpY2ggZmxhZ3MgaGF2
ZSBhY3R1YWxseSBjaGFuZ2VkLgotICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIHByZXZpb3VzQWN0
aXZpdHlTdGF0ZSA9IG1fYWN0aXZpdHlTdGF0ZTsKKyAgICBhdXRvIHByZXZpb3VzQWN0aXZpdHlT
dGF0ZSA9IG1fYWN0aXZpdHlTdGF0ZTsKICAgICB1cGRhdGVBY3Rpdml0eVN0YXRlKG1fcG90ZW50
aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzKTsKLSAgICBBY3Rpdml0eVN0YXRlOjpGbGFn
cyBjaGFuZ2VkID0gbV9hY3Rpdml0eVN0YXRlIF4gcHJldmlvdXNBY3Rpdml0eVN0YXRlOworICAg
IGF1dG8gY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIHByZXZpb3VzQWN0aXZpdHlTdGF0ZTsK
IAogICAgIGlmIChjaGFuZ2VkKQotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0
ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBwYWdlSUQoKSA8PCAiIGRpc3BhdGNoQWN0
aXZpdHlTdGF0ZUNoYW5nZTogc3RhdGUgY2hhbmdlZCBmcm9tICIgPDwgYWN0aXZpdHlTdGF0ZUZs
YWdzVG9TdHJpbmcocHJldmlvdXNBY3Rpdml0eVN0YXRlKSA8PCAiIHRvICIgPDwgYWN0aXZpdHlT
dGF0ZUZsYWdzVG9TdHJpbmcobV9hY3Rpdml0eVN0YXRlKSk7CisgICAgICAgIExPR19XSVRIX1NU
UkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2VQcm94eSAiIDw8IHBhZ2VJRCgp
IDw8ICIgZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlOiBzdGF0ZSBjaGFuZ2VkIGZyb20gIiA8
PCBwcmV2aW91c0FjdGl2aXR5U3RhdGUgPDwgIiB0byAiIDw8IG1fYWN0aXZpdHlTdGF0ZSk7CiAK
ICAgICBpZiAoKG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzICYgQWN0aXZp
dHlTdGF0ZTo6SXNWaXNpYmxlKSAmJiBpc1ZpZXdWaXNpYmxlKCkpCiAgICAgICAgIHZpZXdJc0Jl
Y29taW5nVmlzaWJsZSgpOwpAQCAtMTYzNyw3ICsxNjM3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZQogICAgIGlmIChhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0g
QWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cykKICAgICAgICAgd2FpdEZvckRpZFVwZGF0
ZUFjdGl2aXR5U3RhdGUoYWN0aXZpdHlTdGF0ZUNoYW5nZUlEKTsKIAotICAgIG1fcG90ZW50aWFs
bHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzID0gQWN0aXZpdHlTdGF0ZTo6Tm9GbGFnczsKKyAg
ICBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyA9IHsgfTsKICAgICBtX2Fj
dGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPSBmYWxzZTsKICAgICBtX3Zp
ZXdXYXNFdmVySW5XaW5kb3cgfD0gaXNOb3dJbldpbmRvdzsKIH0KQEAgLTE2NjMsOCArMTY2Myw4
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKICAgICAgICAgbV9w
YWdlSXNVc2VyT2JzZXJ2YWJsZUNvdW50ID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnVzZXJP
YnNlcnZhYmxlUGFnZUNvdW50KCk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgYm9vbCBpc0Nh
cHR1cmluZ01lZGlhID0gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJp
bmdNZWRpYTsKLSAgICBib29sIGlzQXVkaWJsZSA9IG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5
U3RhdGU6OklzQXVkaWJsZTsKKyAgICBib29sIGlzQ2FwdHVyaW5nTWVkaWEgPSBtX2FjdGl2aXR5
U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSk7CisgICAgYm9v
bCBpc0F1ZGlibGUgPSBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNB
dWRpYmxlKTsKICAgICBpZiAoIWlzVmlld1Zpc2libGUoKSAmJiAhbV9hbHdheXNSdW5zQXRGb3Jl
Z3JvdW5kUHJpb3JpdHkgJiYgIWlzQ2FwdHVyaW5nTWVkaWEgJiYgIWlzQXVkaWJsZSkgewogICAg
ICAgICBpZiAobV9hY3Rpdml0eVRva2VuKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEg
Zm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgdmlldyBpcyBubyBsb25nZXIgdmlzaWJs
ZSIsIHRoaXMpOwpAQCAtNDcxMiw3ICs0NzEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE11
dGVkKFdlYkNvcmU6Ok1lZAogI2VuZGlmCiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldE11dGVkKHN0YXRlKSwgbV9wYWdlSUQpOwotICAgIGFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlIHwgQWN0aXZpdHlTdGF0ZTo6SXNDYXB0
dXJpbmdNZWRpYSk7CisgICAgYWN0aXZpdHlTdGF0ZURpZENoYW5nZSh7IEFjdGl2aXR5U3RhdGU6
OklzQXVkaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSB9KTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldE1lZGlhQ2FwdHVyZUVuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAt
NzI2OSw3ICs3MjY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmlzUGxheWluZ01lZGlhRGlkQ2hh
bgogICAgIH0KICNlbmRpZgogCi0gICAgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0
YXRlOjpJc0F1ZGlibGUgfCBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhKTsKKyAgICBh
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlLCBBY3Rpdml0
eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhIH0pOwogCiAgICAgcGxheWluZ01lZGlhTWFzayB8PSBX
ZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVNYXNrOwogICAgIGlmICgob2xkU3Rh
dGUgJiBwbGF5aW5nTWVkaWFNYXNrKSAhPSAobV9tZWRpYVN0YXRlICYgcGxheWluZ01lZGlhTWFz
aykpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24g
MjM0ODQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxNSwxNyArNTE1LDE3IEBAIHB1YmxpYzoKICAgICBib29sIGRlbGVnYXRl
c1Njcm9sbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZGVsZWdhdGVzU2Nyb2xsaW5nOyB9CiAKICAg
ICBlbnVtIGNsYXNzIEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgeyBEZWZlcnJhYmxl
LCBJbW1lZGlhdGUgfTsKLSAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbWF5SGF2ZUNoYW5nZWQsIGJvb2wgd2FudHNTeW5jaHJvbm91
c1JlcGx5ID0gZmFsc2UsIEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgPSBBY3Rpdml0
eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpEZWZlcnJhYmxlKTsKLSAgICBib29sIGlzSW5XaW5k
b3coKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpJc0luV2luZG93OyB9CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlv
blNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBtYXlIYXZlQ2hhbmdlZCwgYm9vbCB3
YW50c1N5bmNocm9ub3VzUmVwbHkgPSBmYWxzZSwgQWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNo
TW9kZSA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6OkRlZmVycmFibGUpOworICAg
IGJvb2wgaXNJbldpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5jb250YWlu
cyhXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsgfQogICAgIHZvaWQgd2FpdEZv
ckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUNoYW5nZUlEKTsKICAgICB2b2lk
IGRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSB7IG1fd2FpdGluZ0ZvckRpZFVwZGF0ZUFjdGl2aXR5
U3RhdGUgPSBmYWxzZTsgfQogCiAgICAgdm9pZCBsYXllckhvc3RpbmdNb2RlRGlkQ2hhbmdlKCk7
CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1Zp
ZXdWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgV2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOyB9Ci0gICAgYm9vbCBpc1ZpZXdGb2N1c2VkKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNGb2N1
c2VkOyB9Ci0gICAgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2Fj
dGl2aXR5U3RhdGUgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZTsgfQor
ICAgIGJvb2wgaXNWaWV3VmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5j
b250YWlucyhXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOyB9CisgICAgYm9vbCBp
c1ZpZXdGb2N1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCk7IH0KKyAgICBib29sIGlzVmlld1dpbmRv
d0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7IH0KIAogICAgIHZvaWQgYWRkTUlNRVR5
cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCkBA
IC0xMzU4LDcgKzEzNTgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gZ29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgV2ViQ29yZTo6
RnJhbWVMb2FkVHlwZSk7CiAKLSAgICB2b2lkIHVwZGF0ZUFjdGl2aXR5U3RhdGUoV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IFdlYkNvcmU6OkFjdGl2aXR5U3Rh
dGU6OkFsbEZsYWdzKTsKKyAgICB2b2lkIHVwZGF0ZUFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGZsYWdzVG9VcGRhdGUgPSBXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjphbGxGbGFncygpKTsKICAgICB2b2lkIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsK
ICAgICB2b2lkIHVwZGF0ZUhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlcygpOwogCkBA
IC0xOTM5LDcgKzE5MzksNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eT4gbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXI7CiAjZW5kaWYKIAotICAgIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdz
IG1fYWN0aXZpdHlTdGF0ZSB7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Ok5vRmxhZ3MgfTsKKyAg
ICBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbV9hY3Rpdml0eVN0YXRl
OwogICAgIGJvb2wgbV92aWV3V2FzRXZlckluV2luZG93IHsgZmFsc2UgfTsKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgYm9vbCBtX2FsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayB7IGZh
bHNlIH07CkBAIC0yMTc2LDcgKzIxNzYsNyBAQCBwcml2YXRlOgogICAgIEFjdGl2aXR5U3RhdGVD
aGFuZ2VJRCBtX2N1cnJlbnRBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgeyBBY3Rpdml0eVN0YXRlQ2hh
bmdlQXN5bmNocm9ub3VzIH07CiAKICAgICBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCBt
X2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzOwotICAgIFdlYkNvcmU6OkFjdGl2aXR5U3Rh
dGU6OkZsYWdzIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzIHsgV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6Tm9GbGFncyB9OworICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFnPiBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFnczsK
ICAgICBib29sIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSB7IGZh
bHNlIH07CiAgICAgVmVjdG9yPENhbGxiYWNrSUQ+IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VD
YWxsYmFja3M7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS0FQ
SUNhc3RXUEUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy93
cGUvV0tBUElDYXN0V1BFLmgJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL3dwZS9XS0FQSUNhc3RXUEUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTYg
KzQ4LDE2IEBAIGlubGluZSBQcm94eWluZ1JlZlB0cjxXZWJHcmFtbWFyRGV0YWlsPiAKICAgICBy
ZXR1cm4gUHJveHlpbmdSZWZQdHI8V2ViR3JhbW1hckRldGFpbD4oV2ViR3JhbW1hckRldGFpbDo6
Y3JlYXRlKGdyYW1tYXJEZXRhaWwpKTsKIH0KIAotaW5saW5lIFdlYkNvcmU6OkFjdGl2aXR5U3Rh
dGU6OkZsYWdzIHRvVmlld1N0YXRlRmxhZ3MoV0tWaWV3U3RhdGUgd2tWaWV3U3RhdGUpCitpbmxp
bmUgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IHRvVmlld1N0YXRlRmxh
Z3MoV0tWaWV3U3RhdGUgd2tWaWV3U3RhdGUpCiB7Ci0gICAgdW5zaWduZWQgdmlld1N0YXRlRmxh
Z3MgPSAwOworICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiB2aWV3
U3RhdGVGbGFnczsKIAogICAgIGlmICh3a1ZpZXdTdGF0ZSAmIGtXS1ZpZXdTdGF0ZUlzSW5XaW5k
b3cpCiAgICAgICAgIHZpZXdTdGF0ZUZsYWdzIHw9IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Oklz
SW5XaW5kb3c7CiAgICAgaWYgKHdrVmlld1N0YXRlICYga1dLVmlld1N0YXRlSXNWaXNpYmxlKQog
ICAgICAgICB2aWV3U3RhdGVGbGFncyB8PSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGU7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6Rmxh
Z3M+KHZpZXdTdGF0ZUZsYWdzKTsKKyAgICByZXR1cm4gdmlld1N0YXRlRmxhZ3M7CiB9CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2UuY3BwCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1
LDcgKzE1NSw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKICAgICAgICAg
aWYgKCFwYWdlUHJveHkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHBhZ2VQcm94eS0+
YWN0aXZpdHlTdGF0ZURpZENoYW5nZShhY3Rpdml0eVN0YXRlRmxhZ3NUb1VwZGF0ZSk7Ci0gICAg
ICAgIGFjdGl2aXR5U3RhdGVGbGFnc1RvVXBkYXRlID0gQWN0aXZpdHlTdGF0ZTo6Tm9GbGFnczsK
KyAgICAgICAgYWN0aXZpdHlTdGF0ZUZsYWdzVG9VcGRhdGUgPSB7IH07CiAgICAgfQogCiAgICAg
V2ViS2l0V2ViVmlld0NoaWxkcmVuTWFwIGNoaWxkcmVuOwpAQCAtMTg1LDggKzE4NSw4IEBAIHN0
cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKICAgICB1bnNpZ25lZCBsb25nIHRvcGxl
dmVsV2luZG93UmVhbGl6ZWRJRCB7IDAgfTsKIAogICAgIC8vIFZpZXcgU3RhdGUuCi0gICAgQWN0
aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSB7IDAgfTsKLSAgICBBY3Rpdml0eVN0YXRl
OjpGbGFncyBhY3Rpdml0eVN0YXRlRmxhZ3NUb1VwZGF0ZSB7IDAgfTsKKyAgICBPcHRpb25TZXQ8
QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZTsKKyAgICBPcHRpb25TZXQ8QWN0aXZp
dHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZUZsYWdzVG9VcGRhdGU7CiAgICAgUnVuTG9vcDo6
VGltZXI8V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlPiB1cGRhdGVBY3Rpdml0eVN0YXRlVGltZXI7
CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC0yMDcsNyArMjA3LDcgQEAgc3RydWN0
IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogCiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0
V2ViVmlld0Jhc2UsIHdlYmtpdF93ZWJfdmlld19iYXNlLCBHVEtfVFlQRV9DT05UQUlORVIpCiAK
LXN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rpdml0eVN0YXRl
KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxh
Z3NUb1VwZGF0ZSkKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVB
Y3Rpdml0eVN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgT3B0aW9uU2V0PEFj
dGl2aXR5U3RhdGU6OkZsYWc+IGZsYWdzVG9VcGRhdGUpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jh
c2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CiAgICAgcHJpdi0+YWN0aXZpdHlT
dGF0ZUZsYWdzVG9VcGRhdGUgfD0gZmxhZ3NUb1VwZGF0ZTsKQEAgLTIzOSw3ICsyMzksNyBAQCBz
dGF0aWMgZ2Jvb2xlYW4gdG9wbGV2ZWxXaW5kb3dGb2N1c091dEV2CiAgICAgaWYgKCEocHJpdi0+
YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKSkKICAgICAgICAg
cmV0dXJuIEZBTFNFOwogCi0gICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAmPSB+QWN0aXZpdHlTdGF0
ZTo6V2luZG93SXNBY3RpdmU7CisgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAtPSBBY3Rpdml0eVN0
YXRlOjpXaW5kb3dJc0FjdGl2ZTsKICAgICB3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRl
QWN0aXZpdHlTdGF0ZSh3ZWJWaWV3QmFzZSwgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUp
OwogCiAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMjU4LDcgKzI1OCw3IEBAIHN0YXRpYyBnYm9vbGVh
biB0b3BsZXZlbFdpbmRvd1N0YXRlRXZlbnQKICAgICBpZiAodmlzaWJsZSkKICAgICAgICAgcHJp
di0+YWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CiAgICAgZWxzZQot
ICAgICAgICBwcml2LT5hY3Rpdml0eVN0YXRlICY9IH5BY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7
CisgICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgLT0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
OwogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rpdml0eVN0YXRlKHdlYlZp
ZXdCYXNlLCBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogCiAgICAgcmV0dXJuIEZBTFNFOwpA
QCAtMzAxLDEzICszMDEsMTMgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb3Bs
ZXZlbAogICAgIHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cgPSB3aW5kb3c7CiAKICAgICBp
ZiAoIXByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cpIHsKLSAgICAgICAgQWN0aXZpdHlTdGF0
ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IDA7CisgICAgICAgIE9wdGlvblNldDxBY3Rpdml0eVN0
YXRlOjpGbGFnPiBmbGFnc1RvVXBkYXRlOwogICAgICAgICBpZiAocHJpdi0+YWN0aXZpdHlTdGF0
ZSAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpIHsKLSAgICAgICAgICAgIHByaXYtPmFjdGl2
aXR5U3RhdGUgJj0gfkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CisgICAgICAgICAgICBwcml2
LT5hY3Rpdml0eVN0YXRlIC09IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CiAgICAgICAgICAg
ICBmbGFnc1RvVXBkYXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSkgewotICAgICAgICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAmPSB+QWN0aXZpdHlT
dGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgICAgICAgICBwcml2LT5hY3Rpdml0eVN0YXRlIC09
IEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlOwogICAgICAgICAgICAgZmxhZ3NUb1VwZGF0
ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93OwogICAgICAgICB9CiAgICAgICAgIGlmIChm
bGFnc1RvVXBkYXRlKQpAQCAtNjI0LDcgKzYyNCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZp
ZXdCYXNlTWFwKEd0a1dpZGcKIAogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9
IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7Ci0gICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mg
ZmxhZ3NUb1VwZGF0ZSA9IDA7CisgICAgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGZs
YWdzVG9VcGRhdGU7CiAgICAgaWYgKCEocHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3Rh
dGU6OklzVmlzaWJsZSkpCiAgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6
SXNWaXNpYmxlOwogICAgIGlmIChwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93KSB7CkBAIC02
NDksNyArNjQ5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVbm1hcChHdGtXaQog
ICAgIGlmICghKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBwcml2LT5hY3Rpdml0eVN0YXRlICY9IH5BY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGU7CisgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAtPSBBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGU7CiAgICAgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZUFjdGl2
aXR5U3RhdGUod2ViVmlld0Jhc2UsIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKQEAg
LTE0OTMsNyArMTQ5Myw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRGb2N1cyhXZWJLaXRX
ZWIKICAgICBpZiAoKGZvY3VzZWQgJiYgcHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3Rh
dGU6OklzRm9jdXNlZCkgfHwgKCFmb2N1c2VkICYmICEocHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFj
dGl2aXR5U3RhdGU6OklzRm9jdXNlZCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBY3Rpdml0
eVN0YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlID0gQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkOwor
ICAgIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBmbGFnc1RvVXBkYXRlIHsgQWN0aXZp
dHlTdGF0ZTo6SXNGb2N1c2VkIH07CiAgICAgaWYgKGZvY3VzZWQpIHsKICAgICAgICAgcHJpdi0+
YWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQ7CiAKQEAgLTE1MDcsMjkg
KzE1MDcsMjkgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldEZvY3VzKFdlYktpdFdlYgogICAg
ICAgICAgICAgZmxhZ3NUb1VwZGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZTsK
ICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBwcml2LT5hY3Rpdml0eVN0YXRlICY9IH5B
Y3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQ7CisgICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgLT0g
QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkOwogCiAgICAgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVs
ZVVwZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIGZsYWdzVG9VcGRhdGUpOwogfQogCiBi
b29sIHdlYmtpdFdlYlZpZXdCYXNlSXNJbldpbmRvd0FjdGl2ZShXZWJLaXRXZWJWaWV3QmFzZSog
d2ViVmlld0Jhc2UpCiB7Ci0gICAgcmV0dXJuIHdlYlZpZXdCYXNlLT5wcml2LT5hY3Rpdml0eVN0
YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgcmV0dXJuIHdlYlZpZXdC
YXNlLT5wcml2LT5hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlKTsKIH0KIAogYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUlzRm9jdXNlZChXZWJLaXRXZWJW
aWV3QmFzZSogd2ViVmlld0Jhc2UpCiB7Ci0gICAgcmV0dXJuIHdlYlZpZXdCYXNlLT5wcml2LT5h
Y3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkOworICAgIHJldHVybiB3ZWJW
aWV3QmFzZS0+cHJpdi0+YWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc0Zv
Y3VzZWQpOwogfQogCiBib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNWaXNpYmxlKFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWV3QmFzZSkKIHsKLSAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYtPmFj
dGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisgICAgcmV0dXJuIHdlYlZp
ZXdCYXNlLT5wcml2LT5hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZSk7CiB9CiAKIGJvb2wgd2Via2l0V2ViVmlld0Jhc2VJc0luV2luZG93KFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWV3QmFzZSkKIHsKLSAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYtPmFj
dGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93OworICAgIHJldHVybiB3ZWJW
aWV3QmFzZS0+cHJpdi0+YWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc0lu
V2luZG93KTsKIH0KIAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldElucHV0TWV0aG9kU3RhdGUo
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBib29sIGVuYWJsZWQpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAJKHJldmlzaW9u
IDIzNDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MiwxMSArMTcyLDExIEBAIHZvaWQgVmlldzo6c2V0U2l6ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXoKICAgICAgICAgbV9wYWdlUHJveHktPmRyYXdpbmdBcmVhKCkt
PnNldFNpemUoc2l6ZSk7CiB9CiAKLXZvaWQgVmlldzo6c2V0Vmlld1N0YXRlKFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OkZsYWdzIGZsYWdzKQordm9pZCBWaWV3OjpzZXRWaWV3U3RhdGUoT3B0aW9u
U2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGZsYWdzKQogewotICAgIHN0YXRpYyBj
b25zdCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBkZWZhdWx0RmxhZ3MgPSBXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB8IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OklzRm9jdXNlZDsKKyAgICBzdGF0aWMgY29uc3QgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkZsYWc+IGRlZmF1bHRGbGFncyB7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRv
d0lzQWN0aXZlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQgfTsKIAotICAgIFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWRGbGFncyA9IG1fdmlld1N0YXRlRmxh
Z3MgXiAoZGVmYXVsdEZsYWdzIHwgZmxhZ3MpOworICAgIGF1dG8gPSBtX3ZpZXdTdGF0ZUZsYWdz
IF4gKGRlZmF1bHRGbGFncyB8IGZsYWdzKTsKICAgICBtX3ZpZXdTdGF0ZUZsYWdzID0gZGVmYXVs
dEZsYWdzIHwgZmxhZ3M7CiAKICAgICBpZiAoY2hhbmdlZEZsYWdzKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAotICAgIFdlYkNvcmU6OkFjdGl2aXR5U3Rh
dGU6OkZsYWdzIHZpZXdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlRmxhZ3M7IH0K
LSAgICB2b2lkIHNldFZpZXdTdGF0ZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyk7Cisg
ICAgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IHZpZXdTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlRmxhZ3M7IH0KKyAgICB2b2lkIHNldFZpZXdTdGF0ZShP
cHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4pOwogCiAgICAgdm9pZCBjbG9z
ZSgpOwogCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YktpdDo6UGFnZUNsaWVudEltcGw+IG1fcGFnZUNsaWVudDsKICAgICBSZWZQdHI8V2ViS2l0OjpX
ZWJQYWdlUHJveHk+IG1fcGFnZVByb3h5OwogICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwot
ICAgIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIG1fdmlld1N0YXRlRmxhZ3M7CisgICAg
T3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IG1fdmlld1N0YXRlRmxhZ3M7
CiAKICAgICBXZWJLaXQ6OkNvbXBvc2l0aW5nTWFuYWdlclByb3h5IG1fY29tcG9zaXRpbmdNYW5h
Z2VyUHJveHk7CiAgICAgc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIG1fYmFja2VuZDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lv
biAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTg5MiwxMyArMTg5MiwxMyBAQCBmbG9hdCBXZWJWaWV3SW1w
bDo6aW50cmluc2ljRGV2aWNlU2NhbGVGCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRPcmRl
ck9mZlNjcmVlbigpCiB7CiAgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAo
cGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9mZlNjcmVlbiIsIHRoaXMsIG1fcGFnZS0+cGFnZUlE
KCkpOwotICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGUgfCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2
ZSk7CisgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2
ZSB9KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkT3JkZXJPblNjcmVlbigpCiB7
CiAgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5k
b3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgbV9wYWdl
LT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJs
ZSB8IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICBtX3BhZ2Ut
PmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH0pOwogfQogCiB2b2lk
IFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRCZWNvbWVLZXkoTlNXaW5kb3cgKmtleVdpbmRvdykKQEAg
LTIwNjQsNyArMjA2NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRNb3ZlVG9XaW5kb3co
KQogICAgIGlmICh3aW5kb3cpIHsKICAgICAgICAgd2luZG93RGlkQ2hhbmdlU2NyZWVuKCk7CiAK
LSAgICAgICAgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZUNoYW5n
ZXMgPSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB8IFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OklzVmlzaWJsZTsKKyAgICAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGVDaGFuZ2VzIHsgV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6V2luZG93SXNBY3RpdmUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSB9
OwogICAgICAgICBpZiAobV9zaG91bGREZWZlclZpZXdJbldpbmRvd0NoYW5nZXMpCiAgICAgICAg
ICAgICBtX3ZpZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVkID0gdHJ1ZTsKICAgICAgICAgZWxz
ZQpAQCAtMjA5MCw3ICsyMDkwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZE1vdmVUb1dp
bmRvdygpCiAgICAgICAgIGlmIChtX2ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyICYm
ICFbW21fdmlldyBnZXN0dXJlUmVjb2duaXplcnNdIGNvbnRhaW5zT2JqZWN0Om1faW1tZWRpYXRl
QWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldICYmICFtX2lnbm9yZXNOb25XaGVlbEV2ZW50
cyAmJiBtX2FsbG93c0xpbmtQcmV2aWV3KQogICAgICAgICAgICAgW21fdmlldyBhZGRHZXN0dXJl
UmVjb2duaXplcjptX2ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAg
ICB9IGVsc2UgewotICAgICAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0
eVN0YXRlQ2hhbmdlcyA9IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIHwg
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworICAgICAgICBPcHRpb25TZXQ8V2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZUNoYW5nZXMgeyBXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
SXNWaXNpYmxlIH07CiAgICAgICAgIGlmIChtX3Nob3VsZERlZmVyVmlld0luV2luZG93Q2hhbmdl
cykKICAgICAgICAgICAgIG1fdmlld0luV2luZG93Q2hhbmdlV2FzRGVmZXJyZWQgPSB0cnVlOwog
ICAgICAgICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNh
dGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0JKHJldmlzaW9uIDIz
NDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVU
cmFja2luZ1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgLSAodm9pZClf
YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQKICAgICAgICAgcmV0dXJuOwogCiAgICAgcGFn
ZS0+YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKTsKLSAgICBwYWdlLT5hY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkFsbEZsYWdzICYgfldlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpOworICAgIHBhZ2UtPmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6YWxsRmxhZ3MoKSAtIFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OklzSW5XaW5kb3cpOwogfQogCiAtICh2b2lkKV9hcHBsaWNhdGlvbkRpZEZpbmlz
aFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kCkBAIC04OSw3ICs4OSw3IEBAIC0g
KHZvaWQpX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZAogICAgICAgICByZXR1cm47CiAK
ICAgICBwYWdlLT5hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKTsKLSAgICBwYWdlLT5h
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkFsbEZsYWdzICYg
fldlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3csIHRydWUsIFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpJbW1lZGlhdGUpOworICAg
IHBhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6YWxs
RmxhZ3MoKSAtIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3csIHRydWUsIFdlYktp
dDo6V2ViUGFnZVByb3h5OjpBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpJbW1lZGlh
dGUpOwogfQogCiAtIChCT09MKWlzQmFja2dyb3VuZApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzczLDcgKzEzNzMs
NyBAQCB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUNQVU1vbml0b3JTdGF0ZShDCiAKICNlbmRpZgog
Ci12b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHVpbnQ2NF90LCBX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkKQordm9pZCBXZWJQcm9jZXNzOjpw
YWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZSh1aW50NjRfdCwgT3B0aW9uU2V0PFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQpCiB7CiAgICAgaWYgKGNoYW5nZWQgJiBXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCiAgICAgICAgIHVwZGF0ZUNQVU1vbml0b3JTdGF0
ZShDUFVNb25pdG9yVXBkYXRlUmVhc29uOjpWaXNpYmlsaXR5SGFzQ2hhbmdlZCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5
NCw3ICsxOTQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgdXBkYXRlQWN0aXZlUGFn
ZXMoKTsKLSAgICB2b2lkIHBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHVpbnQ2NF90IHBhZ2VJ
RCwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCk7CisgICAgdm9pZCBwYWdl
QWN0aXZpdHlTdGF0ZURpZENoYW5nZSh1aW50NjRfdCBwYWdlSUQsIE9wdGlvblNldDxXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKTsKIAogICAgIHZvaWQgc2V0SGlkZGVuUGFn
ZURPTVRpbWVyVGhyb3R0bGluZ0luY3JlYXNlTGltaXQoaW50IG1pbGxpc2Vjb25kcyk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgUGx1
Z2luVmlldzo6d2ViUGFnZURlc3Ryb3llZCgpCiAgICAgbV93ZWJQYWdlID0gMDsKIH0KIAotdm9p
ZCBQbHVnaW5WaWV3OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdz
IGNoYW5nZWQpCit2b2lkIFBsdWdpblZpZXc6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9u
U2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQpCiB7CiAgICAgaWYgKCFt
X3BsdWdpbiB8fCAhbV9pc0luaXRpYWxpemVkKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCShyZXZpc2lvbiAy
MzQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFudWFs
TG9hZERpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGYWlsKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAotICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENo
YW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkKTsKKyAgICB2b2lkIGFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZs
YWc+IGNoYW5nZWQpOwogICAgIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdN
b2RlKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAJ
KHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Fj
Y2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTUsNyArNDU1LDcg
QEAgdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpkZXZpY2VPclBhZwogfQogI2VuZGlmCiAK
LXZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rp
dml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZl
Y3RvcjxDYWxsYmFja0lEPiYpCit2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQsIEFj
dGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JikKIHsKICAgICBp
ZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgewogICAgICAgICBpZiAobV93
ZWJQYWdlLmlzVmlzaWJsZSgpKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAkocmV2aXNpb24gMjM0
ODQxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIGRlc3Ryb3lOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoYm9vbCYpIG92
ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVj
dG9yPENhbGxiYWNrSUQ+JiAvKiBjYWxsYmFja0lEcyAqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBh
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFnPiwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIC8q
IGNhbGxiYWNrSURzICovKSBvdmVycmlkZTsKICAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3Jh
cGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgbGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMoKSBvdmVycmlkZTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAko
cmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRp
b24oV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzLCBBY3Rpdml0eVN0
YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpGbGFnPiwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJ
RD4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3Rp
bmdNb2RlKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBtYXJrTGF5ZXJzVm9sYXRpbGVJbW1lZGlh
dGVseUlmUG9zc2libGUoKSB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjM0ODQxKQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY2MywxMyArNjYzLDkgQEAgdm9pZCBXZWJQYWdlOjpyZWluaXRpYWxpemVXZWJQYWdlKFdl
YlBhZwogCiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVRocm90dGxlU3RhdGUoKQogewotICAgIC8vIFdl
IHNob3VsZCBzdXBwcmVzcyBpZiB0aGUgcGFnZSBpcyBub3QgYWN0aXZlLCBpcyB2aXN1YWxseSBp
ZGxlLCBhbmQgc3VwcmVzc2lvbiBpcyBlbmFibGVkLgotICAgIGJvb2wgaXNMb2FkaW5nID0gbV9h
Y3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNMb2FkaW5nOwotICAgIGJvb2wgaXNQbGF5
aW5nQXVkaW8gPSBtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGU7Ci0g
ICAgYm9vbCBpc0NhcHR1cmluZ01lZGlhID0gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0
ZTo6SXNDYXB0dXJpbmdNZWRpYTsKLSAgICBib29sIGlzVmlzdWFsbHlJZGxlID0gbV9hY3Rpdml0
eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlkbGU7Ci0gICAgYm9vbCB3aW5kb3dJ
c0FjdGl2ZSA9IG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZl
OwotICAgIGJvb2wgcGFnZVN1cHByZXNzZWQgPSAhd2luZG93SXNBY3RpdmUgJiYgIWlzTG9hZGlu
ZyAmJiAhaXNQbGF5aW5nQXVkaW8gJiYgIWlzQ2FwdHVyaW5nTWVkaWEgJiYgbV9wcm9jZXNzU3Vw
cHJlc3Npb25FbmFibGVkICYmIGlzVmlzdWFsbHlJZGxlOworICAgIGJvb2wgaXNBY3RpdmUgPSBt
X2FjdGl2aXR5U3RhdGUuY29udGFpbnNBbnkoeyBBY3Rpdml0eVN0YXRlOjpJc0xvYWRpbmcsIEFj
dGl2aXR5U3RhdGU6OklzQXVkaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSwg
QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfSk7CisgICAgYm9vbCBpc1Zpc3VhbGx5SWRs
ZSA9IG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRs
ZSk7CisgICAgYm9vbCBwYWdlU3VwcHJlc3NlZCA9IG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxl
ZCAmJiAhaXNBY3RpdmUgJiYgaXNWaXN1YWxseUlkbGU7CiAKICNpZiBQTEFURk9STShNQUMpICYm
IEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKICAgICBpZiAoIXBhZ2VT
dXBwcmVzc2VkKSB7CkBAIC0yNzYwLDcgKzI3NTYsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldENhblN0
YXJ0TWVkaWFUaW1lckZpcmVkCiAKIHZvaWQgV2ViUGFnZTo6dXBkYXRlSXNJbldpbmRvdyhib29s
IGlzSW5pdGlhbFN0YXRlKQogewotICAgIGJvb2wgaXNJbldpbmRvdyA9IG1fYWN0aXZpdHlTdGF0
ZSAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CisgICAgYm9vbCBpc0luV2lu
ZG93ID0gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Oklz
SW5XaW5kb3cpOwogCiAgICAgaWYgKCFpc0luV2luZG93KSB7CiAgICAgICAgIG1fc2V0Q2FuU3Rh
cnRNZWRpYVRpbWVyLnN0b3AoKTsKQEAgLTI3ODUsNyArMjc4MSw3IEBAIHZvaWQgV2ViUGFnZTo6
dXBkYXRlSXNJbldpbmRvdyhib29sIGlzSW4KIAogdm9pZCBXZWJQYWdlOjp2aXNpYmlsaXR5RGlk
Q2hhbmdlKCkKIHsKLSAgICBib29sIGlzVmlzaWJsZSA9IG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZTsKKyAgICBib29sIGlzVmlzaWJsZSA9IG1fYWN0aXZpdHlTdGF0
ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogICAgIGlmICghaXNWaXNpYmxl
KSB7CiAgICAgICAgIC8vIFdlIHNhdmUgdGhlIGRvY3VtZW50IC8gc2Nyb2xsIHN0YXRlIHdoZW4g
YmFja2dyb3VuZGluZyBhIHRhYiBzbyB0aGF0IHdlIGFyZSBhYmxlIHRvIHJlc3RvcmUgaXQKICAg
ICAgICAgLy8gaWYgaXQgZ2V0cyB0ZXJtaW5hdGVkIHdoaWxlIGluIHRoZSBiYWNrZ3JvdW5kLgpA
QCAtMjc5NCwxMSArMjc5MCwxMSBAQCB2b2lkIFdlYlBhZ2U6OnZpc2liaWxpdHlEaWRDaGFuZ2Uo
KQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3Rh
dGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0
YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpCit2b2lk
IFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+
IGFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdl
SUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpCiB7Ci0gICAgTE9HX1dJ
VEhfU1RSRUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IHBhZ2VJRCgp
IDw8ICIgc2V0QWN0aXZpdHlTdGF0ZSB0byAiIDw8IGFjdGl2aXR5U3RhdGVGbGFnc1RvU3RyaW5n
KGFjdGl2aXR5U3RhdGUpKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3Ry
ZWFtIDw8ICJXZWJQYWdlICIgPDwgcGFnZUlEKCkgPDwgIiBzZXRBY3Rpdml0eVN0YXRlIHRvICIg
PDwgYWN0aXZpdHlTdGF0ZSk7CiAKLSAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkID0g
bV9hY3Rpdml0eVN0YXRlIF4gYWN0aXZpdHlTdGF0ZTsKKyAgICBhdXRvIGNoYW5nZWQgPSBtX2Fj
dGl2aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOwogICAgIG1fYWN0aXZpdHlTdGF0ZSA9IGFjdGl2
aXR5U3RhdGU7CiAKICAgICBpZiAoY2hhbmdlZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDk4LDgg
KzQ5OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFBsdWdpblZpZXcoUGx1Z2luVmlldyopOwog
ICAgIHZvaWQgcmVtb3ZlUGx1Z2luVmlldyhQbHVnaW5WaWV3Kik7CiAKLSAgICBib29sIGlzVmlz
aWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZTsgfQotICAgIGJvb2wgaXNWaXNpYmxlT3JPY2NsdWRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZU9yT2NjbHVkZWQ7IH0KKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWN0aXZpdHlTdGF0ZS5jb250YWlucyhXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUp
OyB9CisgICAgYm9vbCBpc1Zpc2libGVPck9jY2x1ZGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rp
dml0eVN0YXRlLmNvbnRhaW5zKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2Nj
bHVkZWQpOyB9CiAKICAgICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUoKSBjb25z
dCB7IHJldHVybiBtX2xheWVySG9zdGluZ01vZGU7IH0KICAgICB2b2lkIHNldExheWVySG9zdGlu
Z01vZGUoTGF5ZXJIb3N0aW5nTW9kZSk7CkBAIC0xMTcxLDcgKzExNzEsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZl
bnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQg
dXBkYXRlSXNJbldpbmRvdyhib29sIGlzSW5pdGlhbFN0YXRlID0gZmFsc2UpOwogICAgIHZvaWQg
dmlzaWJpbGl0eURpZENoYW5nZSgpOwotICAgIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpGbGFncywgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0
b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKTsKKyAgICB2b2lkIHNldEFjdGl2aXR5U3RhdGUo
T3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+LCBBY3Rpdml0eVN0YXRlQ2hh
bmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpOwogICAgIHZvaWQg
dmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZXhl
Y3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
c2V0RWRpdGFibGUoYm9vbCk7CkBAIC0xNjg5LDcgKzE2ODksNyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBtX3VzZUFzeW5jU2Nyb2xsaW5nIHsgZmFsc2UgfTsKIAotICAgIFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWdzIG1fYWN0aXZpdHlTdGF0ZTsKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbV9hY3Rpdml0eVN0YXRlOwogCiAgICAgYm9vbCBtX3Byb2Nl
c3NTdXBwcmVzc2lvbkVuYWJsZWQ7CiAgICAgVXNlckFjdGl2aXR5IG1fdXNlckFjdGl2aXR5OwpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsy
Miw3IEBACiAKIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldElu
aXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIFdlYktp
dDo6V2ViS2V5Ym9hcmRFdmVudCBldmVudCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Ci0gICAgU2V0QWN0aXZpdHlTdGF0ZSh1bnNpZ25lZCBhY3Rpdml0eVN0YXRlLCBXZWJLaXQ6OkFj
dGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIFZlY3RvcjxXZWJLaXQ6
OkNhbGxiYWNrSUQ+IGNhbGxiYWNrSURzKQorICAgIFNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0
PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIFdlYktpdDo6QWN0
aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgVmVjdG9yPFdlYktpdDo6
Q2FsbGJhY2tJRD4gY2FsbGJhY2tJRHMpCiAgICAgU2V0TGF5ZXJIb3N0aW5nTW9kZShlbnVtIFdl
YktpdDo6TGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKQogCiAgICAgU2V0RHJhd3NC
YWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDIzNDg0MSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWFpbkZyYW1lQ29udGVudFNpemVDaGFuZ2VkKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBBY3Rpdml0eVN0
YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpIG92ZXJy
aWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25z
dCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKSBvdmVycmlkZTsKIAogICAgIGJvb2wg
YWRqdXN0TGF5ZXJGbHVzaFRocm90dGxpbmcoV2ViQ29yZTo6TGF5ZXJGbHVzaFRocm90dGxlU3Rh
dGU6OkZsYWdzKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQkocmV2aXNpb24gMjM0ODQxKQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00ODgsNyArNDg4LDcgQEAgdm9p
ZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6QmFja2luZwogICAgIG1fY29ubmVjdGlvbi0+
c2VuZE1lc3NhZ2UoV1RGTW92ZShtX2NvbW1pdEVuY29kZXIpLCB7IH0pOwogfQogCi12b2lkIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5
U3RhdGU6OkZsYWdzLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlE
LCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6RmxhZz4sIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQs
IGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpCiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBz
dXNwZW5kIHBhaW50aW5nIHdoaWxlIG5vdCB2aXNpYmxlLCBsaWtlIFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhPyBQcm9iYWJseS4KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCSh3b3JraW5n
IGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZFVzZVRp
bGVkQmFja2luZ0ZvckZyYW1lVmlldyhjb25zdCBXZWJDb3JlOjpGcmFtZVZpZXcmKSBvdmVycmlk
ZTsKIAotICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpGbGFncyBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxD
YWxsYmFja0lEPiYpIG92ZXJyaWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShP
cHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCwgQWN0aXZpdHlT
dGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lckZpcmVkKCk7CiAKICAgICB2b2lkIGF0dGFj
aFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEubW0JKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkod29ya2luZyBj
b3B5KQpAQCAtNDY4LDcgKzQ2OCw3IEBAIGJvb2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmZsdXMKICAgICB9CiB9CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgQWN0
aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENh
bGxiYWNrSUQ+JiBuZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQordm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25T
ZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCwgQWN0aXZpdHlTdGF0ZUNo
YW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBu
ZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQogewogICAgIG1fbmV4dEFjdGl2aXR5
U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5hcHBlbmRWZWN0b3IobmV4dEFjdGl2aXR5U3RhdGVDaGFu
Z2VDYWxsYmFja0lEcyk7CiAgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgPSBzdGQ6Om1heCht
X2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlEKTsKSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIz
NDg0OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE4LTA4LTE0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBVc2UgT3B0aW9uU2V0IGZvciBBY3Rpdml0eVN0YXRlOjpGbGFncworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTU0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L09wdGlvblNldC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOC0w
OC0xNCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0Zs
b2F0aW5nXSBBZGp1c3QgdmVydGljYWwgcG9zaXRpb24gd2l0aCBub24tY29sbGFwc2luZyBwcmV2
aW91cyBzaWJsaW5nIG1hcmdpbi4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L09wdGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvT3B0aW9uU2V0LmNwcAkocmV2aXNpb24gMjM0ODQxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc5LDYgKzM3OSwz
MSBAQCBURVNUKFdURl9PcHRpb25TZXQsIE9wZXJhdG9yQW5kKQogICAgIH0KIH0KIAorVEVTVChX
VEZfT3B0aW9uU2V0LCBPcGVyYXRvclhvcikKK3sKKyAgICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdz
PiBhIHsgRXhhbXBsZUZsYWdzOjpBIH07CisgICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4gYWMg
eyBFeGFtcGxlRmxhZ3M6OkEsIEV4YW1wbGVGbGFnczo6QyB9OworICAgIE9wdGlvblNldDxFeGFt
cGxlRmxhZ3M+IGJjIHsgRXhhbXBsZUZsYWdzOjpCLCBFeGFtcGxlRmxhZ3M6OkMgfTsKKyAgICB7
CisgICAgICAgIGF1dG8gc2V0ID0gYSBeIGFjOworICAgICAgICBFWFBFQ1RfRkFMU0Uoc2V0LmNv
bnRhaW5zKEV4YW1wbGVGbGFnczo6QSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRh
aW5zKEV4YW1wbGVGbGFnczo6QikpOworICAgICAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMo
RXhhbXBsZUZsYWdzOjpDKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgYXV0byBzZXQgPSBhIF4g
YmM7CisgICAgICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkEpKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QikpOworICAg
ICAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpDKSk7CisgICAgfQor
ICAgIHsKKyAgICAgICAgYXV0byBzZXQgPSBhYyBeIGJjOworICAgICAgICBFWFBFQ1RfVFJVRShz
ZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpBKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHNldC5j
b250YWlucyhFeGFtcGxlRmxhZ3M6OkIpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250
YWlucyhFeGFtcGxlRmxhZ3M6OkMpKTsKKyAgICB9Cit9CisKIFRFU1QoV1RGX09wdGlvblNldCwg
Q29udGFpbnNBbnkpCiB7CiAgICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4gc2V0IHsgRXhhbXBs
ZUZsYWdzOjpBLCBFeGFtcGxlRmxhZ3M6OkIgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347204</attachid>
            <date>2018-08-15 13:36:35 -0700</date>
            <delta_ts>2018-08-16 05:49:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-activitystate-6.patch</filename>
            <type>text/plain</type>
            <size>67990</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE4LTA4LTE0ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0IGZvciBBY3Rpdml0eVN0YXRl
OjpGbGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg4NTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICAq
IHd0Zi9PcHRpb25TZXQuaDoKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvcl4pOgor
CisgICAgICAgIEFkZCB4b3Igb3BlcmF0b3IsIHVzZWZ1bCBmb3IgZmluZGluZyBjaGFuZ2VzIGJl
dHdlZW4gc2V0cy4KKwogMjAxOC0wOC0xMyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNv
bnkuY29tPgogCiAgICAgICAgIE1lYW5pbmcgb2YgT3B0aW9uU2V0Ojpjb250YWlucyBpcyB1bmNs
ZWFyIHdoZW4gdXNlZCB3aXRoIE9wdGlvblNldCBhcmd1bWVudApJbmRleDogU291cmNlL1dURi93
dGYvT3B0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvT3B0aW9uU2V0LmgJ
KHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDgsNiArMTQ4LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZyb21S
YXcobGhzLm1fc3RvcmFnZSAmIH5yaHMubV9zdG9yYWdlKTsKICAgICB9CiAKKyAgICBjb25zdGV4
cHIgZnJpZW5kIE9wdGlvblNldCBvcGVyYXRvcl4oT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0IHJo
cykKKyAgICB7CisgICAgICAgIHJldHVybiBmcm9tUmF3KGxocy5tX3N0b3JhZ2UgXiByaHMubV9z
dG9yYWdlKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZW51bSBJbml0aWFsaXphdGlvblRhZyB7
IEZyb21SYXdWYWx1ZSB9OwogICAgIGNvbnN0ZXhwciBPcHRpb25TZXQoVCB0LCBJbml0aWFsaXph
dGlvblRhZykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE4LTA4LTE0
ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9u
U2V0IGZvciBBY3Rpdml0eVN0YXRlOjpGbGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQg
RnVsZ2hhbS4KKworICAgICAgICBNb3JlIHR5cGVzYWZlIGZsYWdzLgorCisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAg
ICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YWN0aXZpdHlTdGF0ZURpZENo
YW5nZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5o
OgorICAgICAgICAqIHBhZ2UvQWN0aXZpdHlTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpv
cGVyYXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OmFjdGl2aXR5U3RhdGVGbGFnc1RvU3RyaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0FjdGl2aXR5U3RhdGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OmFsbEZsYWdzKToKKyAgICAgICAgKiBwYWdlL0FjdGl2aXR5
U3RhdGVDaGFuZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6Rm9jdXNDb250cm9sbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZCk6CisgICAgICAg
IChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2aXR5U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRBY3RpdmUpOgorICAgICAgICAqIHBhZ2UvRm9j
dXNDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmlzQWN0
aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6aXNGb2N1c2Vk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6Y29udGVudElzVmlz
aWJsZSBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldElzSW5XaW5kb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6dXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6c2V0QWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc1Zp
c2libGVBbmRBY3RpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNXaW5kb3dB
Y3RpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0SXNWaXNpYmxlKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFjdGl2aXR5U3Rh
dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNWaXNpYmxlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OmlzSW5XaW5kb3cgY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
UGVyZm9ybWFuY2VNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFjdGl2aXR5U3RhdGVG
b3JDUFVTYW1wbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZU1vbml0b3I6OmFj
dGl2aXR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5o
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvY29jb2E6IEFkZGVkLgorCiAyMDE4LTA4LTE0ICBS
b2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgRmV0Y2g6IGNvbnRlbnQtbGVu
Z3RoIGhlYWRlciBpcyBiZWluZyBhZGRlZCB0byB0aGUgc2FmZS1saXN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyOCwxMCArMTI4LDEwIEBAIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4g
R2VvbG8KICAgICByZXR1cm4gbV9jbGllbnQubGFzdFBvc2l0aW9uKCk7CiB9CiAKLXZvaWQgR2Vv
bG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6
OkZsYWdzIG9sZEFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5
U3RhdGUpCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURpZENoYW5n
ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gb2xkQWN0aXZpdHlTdGF0ZSwgT3B0aW9u
U2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG5ld0FjdGl2aXR5U3RhdGUpCiB7CiAgICAgLy8gVG9n
Z2xlIEdQUyBiYXNlZCBvbiBwYWdlIHZpc2liaWxpdHkgdG8gc2F2ZSBiYXR0ZXJ5LgotICAgIEFj
dGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBvbGRBY3Rpdml0eVN0YXRlIF4gbmV3QWN0aXZp
dHlTdGF0ZTsKKyAgICBhdXRvIGNoYW5nZWQgPSBvbGRBY3Rpdml0eVN0YXRlIF4gbmV3QWN0aXZp
dHlTdGF0ZTsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSAmJiAh
bV9vYnNlcnZlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChuZXdBY3Rpdml0eVN0YXRlICYg
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQogICAgICAgICAgICAgbV9jbGllbnQuc3RhcnRVcGRh
dGluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgUGFnZSYgbV9w
YWdlOwogICAgIEdlb2xvY2F0aW9uQ2xpZW50JiBtX2NsaWVudDsKIAotICAgIHZvaWQgYWN0aXZp
dHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBvbGRBY3Rpdml0eVN0YXRlLCBB
Y3Rpdml0eVN0YXRlOjpGbGFncyBuZXdBY3Rpdml0eVN0YXRlKSBvdmVycmlkZTsKKyAgICB2b2lk
IGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG9s
ZEFjdGl2aXR5U3RhdGUsIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBuZXdBY3Rpdml0
eVN0YXRlKSBvdmVycmlkZTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlv
bj4gbV9sYXN0UG9zaXRpb247CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCShyZXZpc2lvbiAyMzQ4
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM3MSwxNCArNjM3MSwxNCBAQCBib29sIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmVuYWJsZVN1CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rp
dml0eVN0YXRlOjpGbGFncyBvbGRBY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlOjpGbGFncyBu
ZXdBY3Rpdml0eVN0YXRlKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBvbGRBY3Rpdml0
eVN0YXRlLCBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbmV3QWN0aXZpdHlTdGF0ZSkK
IHsKICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQWN0aXZpdHlT
dGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG9sZEFjdGl2aXR5U3RhdGUgXiBuZXdBY3Rpdml0eVN0YXRl
OworICAgIGF1dG8gY2hhbmdlZCA9IG9sZEFjdGl2aXR5U3RhdGUgXiBuZXdBY3Rpdml0eVN0YXRl
OwogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQotICAgICAgICBt
X2NvbnRleHQtPnNldENvbnRleHRWaXNpYmlsaXR5KG5ld0FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGUpOworICAgICAgICBtX2NvbnRleHQtPnNldENvbnRleHRWaXNpYmls
aXR5KG5ld0FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSk7
CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2V0RmFpbE5leHRHUFVTdGF0
dXNDaGVjaygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTgzOCw3ICs4MzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJXaXRo
V2ViR0xTdGF0ZVRyYWNrZXIoKTsKICAgICB2b2lkIGNoZWNrRm9yQ29udGV4dExvc3NIYW5kbGlu
ZygpOwogCi0gICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZs
YWdzIG9sZEFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5U3Rh
dGUpIG92ZXJyaWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8
QWN0aXZpdHlTdGF0ZTo6RmxhZz4gb2xkQWN0aXZpdHlTdGF0ZSwgT3B0aW9uU2V0PEFjdGl2aXR5
U3RhdGU6OkZsYWc+IG5ld0FjdGl2aXR5U3RhdGUpIG92ZXJyaWRlOwogCiAgICAgV2ViR0xTdGF0
ZVRyYWNrZXI6OlRva2VuIG1fdHJhY2tlclRva2VuOwogICAgIFRpbWVyIG1fY2hlY2tGb3JDb250
ZXh0TG9zc0hhbmRsaW5nVGltZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5
U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0
ZS5jcHAJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlT
dGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDY1ICsyNiwzNCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUuaCIKIAotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIGFjdGl2aXR5U3RhdGVGbGFnc1RvU3RyaW5nKEFj
dGl2aXR5U3RhdGU6OkZsYWdzIGZsYWdzKQorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGZsYWdzKQogewotICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAKLSAgICBhdXRvIGFwcGVuZENvbW1hSWZOZWNlc3Nh
cnkgPSBbJl0oKSB7Ci0gICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKKyAgICBib29sIGRpZEFwcGVuZCA9IGZhbHNlOworCisg
ICAgYXV0byBhcHBlbmRJZiA9IFsmXShhdXRvIGZsYWcsIGF1dG8gbWVzc2FnZSkgeworICAgICAg
ICBpZiAoIWZsYWdzLmNvbnRhaW5zKGZsYWcpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBpZiAoZGlkQXBwZW5kKQorICAgICAgICAgICAgdHMgPDwgIiwgIjsKKyAgICAgICAgdHMgPDwg
bWVzc2FnZTsKKyAgICAgICAgZGlkQXBwZW5kID0gdHJ1ZTsKICAgICB9OwogICAgIAotICAgIGlm
IChmbGFncyAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKSB7Ci0gICAg
ICAgIGFwcGVuZENvbW1hSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoImFj
dGl2ZSB3aW5kb3ciKTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MgJiBXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpJc0ZvY3VzZWQpIHsKLSAgICAgICAgYXBwZW5kQ29tbWFJZk5lY2Vzc2FyeSgpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiZm9jdXNlZCIpOwotICAgIH0KLQotICAgIGlmIChmbGFn
cyAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgewotICAgICAgICBhcHBlbmRD
b21tYUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ2aXNpYmxlIik7Ci0g
ICAgfQotCi0gICAgaWYgKGZsYWdzICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
T3JPY2NsdWRlZCkgewotICAgICAgICBhcHBlbmRDb21tYUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJ2aXNpYmxlIG9yIG9jY2x1ZGVkIik7Ci0gICAgfQotCi0gICAgaWYg
KGZsYWdzICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdykgewotICAgICAgICBh
cHBlbmRDb21tYUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJpbi13aW5k
b3ciKTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJ
c1Zpc3VhbGx5SWRsZSkgewotICAgICAgICBhcHBlbmRDb21tYUlmTmVjZXNzYXJ5KCk7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCJ2aXN1YWxseSBpZGxlIik7Ci0gICAgfQotCi0gICAgaWYgKGZs
YWdzICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlKSB7Ci0gICAgICAgIGFwcGVu
ZENvbW1hSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoImF1ZGlibGUiKTsK
LSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0xvYWRp
bmcpIHsKLSAgICAgICAgYXBwZW5kQ29tbWFJZk5lY2Vzc2FyeSgpOwotICAgICAgICBidWlsZGVy
LmFwcGVuZCgibG9hZGluZyIpOwotICAgIH0KLQotICAgIGlmIChmbGFncyAmIFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEpIHsKLSAgICAgICAgYXBwZW5kQ29tbWFJZk5l
Y2Vzc2FyeSgpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiY2FwdHVyaW5nIG1lZGlhIik7Ci0g
ICAgfQotICAgIAotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgYXBwZW5kSWYo
QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUsICJhY3RpdmUgd2luZG93Iik7CisgICAgYXBw
ZW5kSWYoQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCAiZm9jdXNlZCIpOworICAgIGFwcGVuZElm
KEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgInZpc2libGUiKTsKKyAgICBhcHBlbmRJZihBY3Rp
dml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkLCAidmlzaWJsZSBvciBvY2NsdWRlZCIpOwor
ICAgIGFwcGVuZElmKEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3csICJpbi13aW5kb3ciKTsKKyAg
ICBhcHBlbmRJZihBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSwgInZpc3VhbGx5IGlkbGUi
KTsKKyAgICBhcHBlbmRJZihBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUsICJhdWRpYmxlIik7Cisg
ICAgYXBwZW5kSWYoQWN0aXZpdHlTdGF0ZTo6SXNMb2FkaW5nLCAibG9hZGluZyIpOworICAgIGFw
cGVuZElmKEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEsICJjYXB0dXJpbmcgbWVkaWEi
KTsKKworICAgIHJldHVybiB0czsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmgJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxNCAr
MjUsMTYgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisK
IG5hbWVzcGFjZSBXVEYgewotY2xhc3MgU3RyaW5nOworY2xhc3MgVGV4dFN0cmVhbTsKIH0KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQWN0aXZpdHlTdGF0ZSB7Ci0gICAgZW51bSB7
CisgICAgZW51bSBGbGFnIHsKICAgICAgICAgV2luZG93SXNBY3RpdmUgPSAxIDw8IDAsCiAgICAg
ICAgIElzRm9jdXNlZCA9IDEgPDwgMSwKICAgICAgICAgSXNWaXNpYmxlID0gMSA8PCAyLApAQCAt
NDQsMTAgKzQ2LDcgQEAgc3RydWN0IEFjdGl2aXR5U3RhdGUgewogICAgICAgICBJc0NhcHR1cmlu
Z01lZGlhID0gMSA8PCA4LAogICAgIH07CiAKLSAgICB0eXBlZGVmIHVuc2lnbmVkIEZsYWdzOwot
Ci0gICAgc3RhdGljIGNvbnN0IEZsYWdzIE5vRmxhZ3MgPSAwOwotICAgIHN0YXRpYyBjb25zdCBG
bGFncyBBbGxGbGFncyA9IFdpbmRvd0lzQWN0aXZlIHwgSXNGb2N1c2VkIHwgSXNWaXNpYmxlIHwg
SXNWaXNpYmxlT3JPY2NsdWRlZCB8IElzSW5XaW5kb3cgfCBJc1Zpc3VhbGx5SWRsZSB8IElzQXVk
aWJsZSB8IElzTG9hZGluZyB8IElzQ2FwdHVyaW5nTWVkaWE7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBPcHRpb25TZXQ8RmxhZz4gYWxsRmxhZ3MoKSB7IHJldHVybiB7IFdpbmRvd0lzQWN0aXZlLCBJ
c0ZvY3VzZWQsIElzVmlzaWJsZSwgSXNWaXNpYmxlT3JPY2NsdWRlZCwgSXNJbldpbmRvdywgSXNW
aXN1YWxseUlkbGUsIElzQXVkaWJsZSwgSXNMb2FkaW5nLCBJc0NhcHR1cmluZ01lZGlhIH07IH0K
IH07CiAKIGVudW0gY2xhc3MgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nIHsKQEAgLTU2LDcg
KzU1LDYgQEAgZW51bSBjbGFzcyBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcgewogICAgIFZp
c2libGVBbmRBY3RpdmUKIH07CiAKLS8vIElkZWFsbHkgdGhpcyB3b3VsZCBiZSBvcGVyYXRvcjw8
KFdURjo6VGV4dFN0cmVhbSYsIEFjdGl2aXR5U3RhdGU6OkZsYWdzKSBidXQgQWN0aXZpdHlTdGF0
ZTo6RmxhZ3MgbmVlZHMgdG8gYmUgc3Ryb25nbHkgdHlwZWQgdG8gYXZvaWQgYW1iaWd1b3VzIG92
ZXJsb2Fkcy4KLVdFQkNPUkVfRVhQT1JUIFdURjo6U3RyaW5nIGFjdGl2aXR5U3RhdGVGbGFnc1Rv
U3RyaW5nKEFjdGl2aXR5U3RhdGU6OkZsYWdzKTsKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0
ZTo6RmxhZz4pOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgJKHJldmlzaW9uIDIz
NDg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlT
dGF0ZTo6RmxhZ3Mgb2xkQWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbmV3QWN0
aXZpdHlTdGF0ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
KE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBvbGRBY3Rpdml0eVN0YXRlLCBPcHRpb25T
ZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbmV3QWN0aXZpdHlTdGF0ZSkgPSAwOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNyArMzA3LDcgQEAgc3RhdGljIGlu
bGluZSBpbnQgc2hhZG93QWRqdXN0ZWRUYWJJbmRleAogICAgIHJldHVybiBlbGVtZW50LnRhYklu
ZGV4KCk7CiB9CiAKLUZvY3VzQ29udHJvbGxlcjo6Rm9jdXNDb250cm9sbGVyKFBhZ2UmIHBhZ2Us
IEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUpCitGb2N1c0NvbnRyb2xsZXI6OkZv
Y3VzQ29udHJvbGxlcihQYWdlJiBwYWdlLCBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4g
YWN0aXZpdHlTdGF0ZSkKICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9pc0NoYW5naW5nRm9j
dXNlZEZyYW1lKGZhbHNlKQogICAgICwgbV9hY3Rpdml0eVN0YXRlKGFjdGl2aXR5U3RhdGUpCkBA
IC0zNTMsNyArMzUzLDcgQEAgRnJhbWUmIEZvY3VzQ29udHJvbGxlcjo6Zm9jdXNlZE9yTWFpbkZy
YQogCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZChib29sIGZvY3VzZWQpCiB7Ci0g
ICAgbV9wYWdlLnNldEFjdGl2aXR5U3RhdGUoZm9jdXNlZCA/IG1fYWN0aXZpdHlTdGF0ZSB8IEFj
dGl2aXR5U3RhdGU6OklzRm9jdXNlZCA6IG1fYWN0aXZpdHlTdGF0ZSAmIH5BY3Rpdml0eVN0YXRl
OjpJc0ZvY3VzZWQpOworICAgIG1fcGFnZS5zZXRBY3Rpdml0eVN0YXRlKGZvY3VzZWQgPyBtX2Fj
dGl2aXR5U3RhdGUgfCBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQgOiBtX2FjdGl2aXR5U3RhdGUg
LSBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpOwogfQogCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6
c2V0Rm9jdXNlZEludGVybmFsKGJvb2wgZm9jdXNlZCkKQEAgLTg0MSwyMyArODQxLDIzIEBAIGJv
b2wgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRWxlbWVudCgKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0
ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSkKK3ZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRBY3Rpdml0
eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlKQogewot
ICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBhY3Rp
dml0eVN0YXRlOworICAgIGF1dG8gY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIGFjdGl2aXR5
U3RhdGU7CiAgICAgbV9hY3Rpdml0eVN0YXRlID0gYWN0aXZpdHlTdGF0ZTsKIAogICAgIGlmIChj
aGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKQotICAgICAgICBzZXRGb2N1c2VkSW50
ZXJuYWwoYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCk7CisgICAgICAg
IHNldEZvY3VzZWRJbnRlcm5hbChhY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6
OklzRm9jdXNlZCkpOwogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNB
Y3RpdmUpIHsKLSAgICAgICAgc2V0QWN0aXZlSW50ZXJuYWwoYWN0aXZpdHlTdGF0ZSAmIEFjdGl2
aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICAgICAgc2V0QWN0aXZlSW50ZXJuYWwoYWN0
aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSkpOwogICAg
ICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKLSAgICAgICAgICAg
IHNldElzVmlzaWJsZUFuZEFjdGl2ZUludGVybmFsKGFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0
YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CisgICAgICAgICAgICBzZXRJc1Zpc2libGVBbmRBY3RpdmVJ
bnRlcm5hbChhY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0
aXZlKSk7CiAgICAgfQogfQogCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZlKGJvb2wg
YWN0aXZlKQogewotICAgIG1fcGFnZS5zZXRBY3Rpdml0eVN0YXRlKGFjdGl2ZSA/IG1fYWN0aXZp
dHlTdGF0ZSB8IEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIDogbV9hY3Rpdml0eVN0YXRl
ICYgfkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICBtX3BhZ2Uuc2V0QWN0aXZp
dHlTdGF0ZShhY3RpdmUgPyBtX2FjdGl2aXR5U3RhdGUgfCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSA6IG1fYWN0aXZpdHlTdGF0ZSAtIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZl
KTsKIH0KIAogdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2ZUludGVybmFsKGJvb2wgYWN0
aXZlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCShyZXZpc2lvbiAy
MzQ4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBGb2N1c0NhbmRpZGF0ZTsKIGNsYXNzIEZv
Y3VzQ29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgRm9jdXNDb250cm9sbGVyKFBhZ2UmLCBBY3Rpdml0eVN0YXRlOjpGbGFncyk7
CisgICAgZXhwbGljaXQgRm9jdXNDb250cm9sbGVyKFBhZ2UmLCBPcHRpb25TZXQ8QWN0aXZpdHlT
dGF0ZTo6RmxhZz4pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGb2N1c2VkRnJhbWUo
RnJhbWUqKTsKICAgICBGcmFtZSogZm9jdXNlZEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mb2N1
c2VkRnJhbWUuZ2V0KCk7IH0KQEAgLTYyLDE1ICs2MiwxNSBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqLCBGcmFtZSYsIEZvY3Vz
RGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rpb25Ob25lKTsKIAotICAgIHZvaWQgc2V0QWN0aXZpdHlT
dGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyk7CisgICAgdm9pZCBzZXRBY3Rpdml0eVN0YXRlKE9w
dGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEFjdGl2ZShib29sKTsKLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9h
Y3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7IH0KKyAgICBib29s
IGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2
aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRGb2N1c2VkKGJvb2wpOwotICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9h
Y3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkOyB9CisgICAgYm9vbCBpc0Zv
Y3VzZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlT
dGF0ZTo6SXNGb2N1c2VkKTsgfQogCi0gICAgYm9vbCBjb250ZW50SXNWaXNpYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOyB9Cisg
ICAgYm9vbCBjb250ZW50SXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRl
LmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7IH0KIAogICAgIC8vIFRoZXNlIG1l
dGhvZHMgYXJlIHVzZWQgaW4gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbS4KICAgICBXRUJD
T1JFX0VYUE9SVCBFbGVtZW50KiBuZXh0Rm9jdXNhYmxlRWxlbWVudChOb2RlJik7CkBAIC0xMTks
NyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgUmVmUHRyPEZyYW1l
PiBtX2ZvY3VzZWRGcmFtZTsKICAgICBib29sIG1faXNDaGFuZ2luZ0ZvY3VzZWRGcmFtZTsKLSAg
ICBBY3Rpdml0eVN0YXRlOjpGbGFncyBtX2FjdGl2aXR5U3RhdGU7CisgICAgT3B0aW9uU2V0PEFj
dGl2aXR5U3RhdGU6OkZsYWc+IG1fYWN0aXZpdHlTdGF0ZTsKIAogICAgIFRpbWVyIG1fZm9jdXNS
ZXBhaW50VGltZXI7CiAgICAgTW9ub3RvbmljVGltZSBtX2ZvY3VzU2V0VGltZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDcgKzE5MiwxMCBAQCBzdGF0aWMgdm9pZCBu
ZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPCiAgICAgfQogfQogCi1zdGF0aWMgY29uc3QgQWN0
aXZpdHlTdGF0ZTo6RmxhZ3MgUGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlID0gQWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlIHwgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKK3N0YXRpYyBjb25zdGV4
cHIgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0
ZSgpCit7CisgICAgcmV0dXJuIHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBBY3Rpdml0eVN0
YXRlOjpJc0luV2luZG93IH07Cit9CiAKIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBw
YWdlQ29uZmlndXJhdGlvbikKICAgICA6IG1fY2hyb21lKHN0ZDo6bWFrZV91bmlxdWU8Q2hyb21l
PigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCkpCkBAIC0yMDAsNyArMjAz
LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maQogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAgICAgLCBtX2RyYWdDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8
RHJhZ0NvbnRyb2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCkpCiAj
ZW5kaWYKLSAgICAsIG1fZm9jdXNDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9jdXNDb250
cm9sbGVyPigqdGhpcywgUGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKSkKKyAgICAsIG1fZm9jdXND
b250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9jdXNDb250cm9sbGVyPigqdGhpcywgcGFnZUlu
aXRpYWxBY3Rpdml0eVN0YXRlKCkpKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgICwg
bV9jb250ZXh0TWVudUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNvbnRy
b2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQpKQogI2Vu
ZGlmCkBAIC0yMjQsNyArMjI3LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBh
Z2VDb25maQogICAgICwgbV9ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGlj
aXR5QWxsb3dlZCkKICAgICAsIG1fZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbChET01UaW1lcjo6
ZGVmYXVsdEFsaWdubWVudEludGVydmFsKCkpCiAgICAgLCBtX2RvbVRpbWVyQWxpZ25tZW50SW50
ZXJ2YWxJbmNyZWFzZVRpbWVyKCp0aGlzLCAmUGFnZTo6ZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZh
bEluY3JlYXNlVGltZXJGaXJlZCkKLSAgICAsIG1fYWN0aXZpdHlTdGF0ZShQYWdlSW5pdGlhbEFj
dGl2aXR5U3RhdGUpCisgICAgLCBtX2FjdGl2aXR5U3RhdGUocGFnZUluaXRpYWxBY3Rpdml0eVN0
YXRlKCkpCiAgICAgLCBtX2FsdGVybmF0aXZlVGV4dENsaWVudChwYWdlQ29uZmlndXJhdGlvbi5h
bHRlcm5hdGl2ZVRleHRDbGllbnQpCiAgICAgLCBtX2NvbnNvbGVDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQpAQCAtMTA4OSw3ICsxMDkyLDcgQEAgdW5zaWduZWQgUGFnZTo6cGFnZUNvdW50KCkgY29u
c3QKIAogdm9pZCBQYWdlOjpzZXRJc0luV2luZG93KGJvb2wgaXNJbldpbmRvdykKIHsKLSAgICBz
ZXRBY3Rpdml0eVN0YXRlKGlzSW5XaW5kb3cgPyBtX2FjdGl2aXR5U3RhdGUgfCBBY3Rpdml0eVN0
YXRlOjpJc0luV2luZG93IDogbV9hY3Rpdml0eVN0YXRlICYgfkFjdGl2aXR5U3RhdGU6OklzSW5X
aW5kb3cpOworICAgIHNldEFjdGl2aXR5U3RhdGUoaXNJbldpbmRvdyA/IG1fYWN0aXZpdHlTdGF0
ZSB8IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgOiBtX2FjdGl2aXR5U3RhdGUgLSBBY3Rpdml0
eVN0YXRlOjpJc0luV2luZG93KTsKIH0KIAogdm9pZCBQYWdlOjpzZXRJc0luV2luZG93SW50ZXJu
YWwoYm9vbCBpc0luV2luZG93KQpAQCAtMTM1Niw3ICsxMzU5LDcgQEAgdm9pZCBQYWdlOjp1cGRh
dGVUaW1lclRocm90dGxpbmdTdGF0ZSgpCiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgdmlzaWJsZSAo
YnV0IGlkbGUpLCB0aGVyZSBpcyBhbnkgYWN0aXZpdHkgKGxvYWRpbmcsIG1lZGlhIHBsYXlpbmcs
IGV0YyksIG9yIHBlciBzZXR0aW5nLAogICAgIC8vIHdlIGFsbG93IHRpbWVyIHRocm90dGxpbmcs
IGJ1dCBub3QgaW5jcmVhc2luZyB0aW1lciB0aHJvdHRsaW5nLgogICAgIGlmICghbV9zZXR0aW5n
cy0+aGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXMoKQotICAgICAgICB8
fCBtX2FjdGl2aXR5U3RhdGUgJiAoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlIHwgQWN0aXZpdHlT
dGF0ZTo6SXNBdWRpYmxlIHwgQWN0aXZpdHlTdGF0ZTo6SXNMb2FkaW5nIHwgQWN0aXZpdHlTdGF0
ZTo6SXNDYXB0dXJpbmdNZWRpYSkpIHsKKyAgICAgICAgfHwgbV9hY3Rpdml0eVN0YXRlLmNvbnRh
aW5zQW55KHtBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIEFjdGl2aXR5U3RhdGU6OklzQXVkaWJs
ZSwgQWN0aXZpdHlTdGF0ZTo6SXNMb2FkaW5nLCBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01l
ZGlhIH0pKSB7CiAgICAgICAgIHNldFRpbWVyVGhyb3R0bGluZ1N0YXRlKFRpbWVyVGhyb3R0bGlu
Z1N0YXRlOjpFbmFibGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1OTAsMTMgKzE1
OTMsMTMgQEAgdm9pZCBQYWdlOjpyZXN1bWVBbmltYXRpbmdJbWFnZXMoKQogICAgICAgICB2aWV3
LT5yZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCk7CiB9CiAK
LXZvaWQgUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0
eVN0YXRlKQordm9pZCBQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0
YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlKQogewotICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNo
YW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOworICAgIGF1dG8gY2hhbmdl
ZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIGFjdGl2aXR5U3RhdGU7CiAgICAgaWYgKCFjaGFuZ2VkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBvbGRBY3Rpdml0eVN0
YXRlID0gbV9hY3Rpdml0eVN0YXRlOworICAgIGF1dG8gb2xkQWN0aXZpdHlTdGF0ZSA9IG1fYWN0
aXZpdHlTdGF0ZTsKIAogICAgIGJvb2wgd2FzVmlzaWJsZUFuZEFjdGl2ZSA9IGlzVmlzaWJsZUFu
ZEFjdGl2ZSgpOwogICAgIG1fYWN0aXZpdHlTdGF0ZSA9IGFjdGl2aXR5U3RhdGU7CkBAIC0xNjA0
LDE3ICsxNjA3LDE3IEBAIHZvaWQgUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXQK
ICAgICBtX2ZvY3VzQ29udHJvbGxlci0+c2V0QWN0aXZpdHlTdGF0ZShhY3Rpdml0eVN0YXRlKTsK
IAogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQotICAgICAgICBz
ZXRJc1Zpc2libGVJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlKTsKKyAgICAgICAgc2V0SXNWaXNpYmxlSW50ZXJuYWwoYWN0aXZpdHlTdGF0ZS5jb250YWlu
cyhBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpKTsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5
U3RhdGU6OklzSW5XaW5kb3cpCi0gICAgICAgIHNldElzSW5XaW5kb3dJbnRlcm5hbChhY3Rpdml0
eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CisgICAgICAgIHNldElzSW5XaW5k
b3dJbnRlcm5hbChhY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzSW5XaW5k
b3cpKTsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlKQot
ICAgICAgICBzZXRJc1Zpc3VhbGx5SWRsZUludGVybmFsKGFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0
eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CisgICAgICAgIHNldElzVmlzdWFsbHlJZGxlSW50ZXJu
YWwoYWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSkp
OwogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpIHsKICAg
ICAgICAgaWYgKGF1dG8qIHZpZXcgPSBtX21haW5GcmFtZS0+dmlldygpKQogICAgICAgICAgICAg
dmlldy0+dXBkYXRlVGlsZWRCYWNraW5nQWRhcHRpdmVTaXppbmcoKTsKICAgICB9CiAKLSAgICBp
ZiAoY2hhbmdlZCAmIChBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBBY3Rpdml0eVN0YXRlOjpJ
c1Zpc3VhbGx5SWRsZSB8IEFjdGl2aXR5U3RhdGU6OklzQXVkaWJsZSB8IEFjdGl2aXR5U3RhdGU6
OklzTG9hZGluZyB8IEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEpKQorICAgIGlmIChj
aGFuZ2VkLmNvbnRhaW5zQW55KHtBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIEFjdGl2aXR5U3Rh
dGU6OklzVmlzdWFsbHlJZGxlLCBBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUsIEFjdGl2aXR5U3Rh
dGU6OklzTG9hZGluZywgQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSB9KSkKICAgICAg
ICAgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUoKTsKIAogICAgIGZvciAoYXV0byogb2JzZXJ2
ZXIgOiBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcnMpCkBAIC0xNjI5LDIwICsxNjMyLDI2
IEBAIHZvaWQgUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXQKIAogYm9vbCBQYWdl
Ojppc1Zpc2libGVBbmRBY3RpdmUoKSBjb25zdAogewotICAgIHJldHVybiAobV9hY3Rpdml0eVN0
YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSAmJiAobV9hY3Rpdml0eVN0YXRlICYgQWN0
aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgIHJldHVybiBtX2FjdGl2aXR5U3RhdGUu
Y29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSAmJiBtX2FjdGl2aXR5U3RhdGUuY29u
dGFpbnMoQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOwogfQogCiBib29sIFBhZ2U6Omlz
V2luZG93QWN0aXZlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0
aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5j
b250YWlucyhBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiB9CiAKIHZvaWQgUGFnZTo6
c2V0SXNWaXNpYmxlKGJvb2wgaXNWaXNpYmxlKQogewotICAgIGlmIChpc1Zpc2libGUpCi0gICAg
ICAgIHNldEFjdGl2aXR5U3RhdGUoKG1fYWN0aXZpdHlTdGF0ZSAmIH5BY3Rpdml0eVN0YXRlOjpJ
c1Zpc3VhbGx5SWRsZSkgfCBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBBY3Rpdml0eVN0YXRl
OjpJc1Zpc2libGVPck9jY2x1ZGVkKTsKLSAgICBlbHNlCi0gICAgICAgIHNldEFjdGl2aXR5U3Rh
dGUoKG1fYWN0aXZpdHlTdGF0ZSAmIH4oQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlIHwgQWN0aXZp
dHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCkpIHwgQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxs
eUlkbGUpOworICAgIGF1dG8gc3RhdGUgPSBtX2FjdGl2aXR5U3RhdGU7CisKKyAgICBpZiAoaXNW
aXNpYmxlKSB7CisgICAgICAgIHN0YXRlIC09IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxl
OworICAgICAgICBzdGF0ZSB8PSB7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB9OworICAgIH0gZWxzZSB7CisgICAgICAgIHN0YXRl
IHw9IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlOworICAgICAgICBzdGF0ZSAtPSB7IEFj
dGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRl
ZCB9OworICAgIH0KKyAgICBzZXRBY3Rpdml0eVN0YXRlKHN0YXRlKTsKIH0KIAogZW51bSBjbGFz
cyBTVkdBbmltYXRpb25zU3RhdGUgeyBQYXVzZWQsIFJlc3VtZWQgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDE1LDE4ICs0MTUsMTggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAv
LyBOb3RpZmljYXRpb25zIHdoZW4gdGhlIFBhZ2Ugc3RhcnRzIGFuZCBzdG9wcyBiZWluZyBwcmVz
ZW50ZWQgdmlhIGEgbmF0aXZlIHdpbmRvdy4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFj
dGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MpOwotICAgIEFjdGl2aXR5U3RhdGU6OkZs
YWdzIGFjdGl2aXR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGU7IH0KKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5
U3RhdGU6OkZsYWc+KTsKKyAgICBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZp
dHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZTsgfQogCiAgICAgYm9vbCBp
c1dpbmRvd0FjdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNWaXNpYmxlQW5kQWN0aXZlKCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc1Zpc2libGUoYm9vbCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRJc1ByZXJlbmRlcigpOwotICAgIGJvb2wgaXNWaXNpYmxlKCkg
Y29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
OyB9CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUu
Y29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsgfQogCiAgICAgLy8gTm90aWZpY2F0
aW9uIHRoYXQgdGhpcyBQYWdlIHdhcyBtb3ZlZCBpbnRvIG9yIG91dCBvZiBhIG5hdGl2ZSB3aW5k
b3cuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc0luV2luZG93KGJvb2wpOwotICAgIGJv
b2wgaXNJbldpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5
U3RhdGU6OklzSW5XaW5kb3c7IH0KKyAgICBib29sIGlzSW5XaW5kb3coKSBjb25zdCB7IHJldHVy
biBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7IH0K
IAogICAgIHZvaWQgc2V0SXNDbG9zaW5nKCkgeyBtX2lzQ2xvc2luZyA9IHRydWU7IH0KICAgICBi
b29sIGlzQ2xvc2luZygpIGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zaW5nOyB9CkBAIC04MTEsNyAr
ODExLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9pc0VkaXRhYmxlIHsgZmFsc2UgfTsKICAg
ICBib29sIG1faXNQcmVyZW5kZXIgeyBmYWxzZSB9OwotICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdz
IG1fYWN0aXZpdHlTdGF0ZTsKKyAgICBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbV9h
Y3Rpdml0eVN0YXRlOwogCiAgICAgTGF5b3V0TWlsZXN0b25lcyBtX3JlcXVlc3RlZExheW91dE1p
bGVzdG9uZXMgeyAwIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VN
b25pdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
TW9uaXRvci5jcHAJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VNb25pdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBzdGF0
aWMgY29uc3QgZG91YmxlIHBvc3RQYWdlTG9hZENQVVVzYWdlCiBzdGF0aWMgY29uc3QgdWludDY0
X3QgcG9zdFBhZ2VMb2FkTWVtb3J5VXNhZ2VEb21haW5SZXBvcnRpbmdUaHJlc2hvbGQgeyAyMDQ4
ICogTUIgfTsKICNlbmRpZgogCi1zdGF0aWMgaW5saW5lIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1w
bGluZyBhY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgc3Rh
dGUpCitzdGF0aWMgaW5saW5lIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyBhY3Rpdml0eVN0
YXRlRm9yQ1BVU2FtcGxpbmcoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IHN0YXRlKQog
ewogICAgIGlmICghKHN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSkKICAgICAgICAg
cmV0dXJuIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6Tm9uVmlzaWJsZTsKQEAgLTEwMSwx
MCArMTAxLDEwIEBAIHZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjpkaWRGaW5pc2hMb2FkKCkKICAg
ICAgICAgbV9wb3N0UGFnZUxvYWRNZW1vcnlVc2FnZVRpbWVyLnN0YXJ0T25lU2hvdChtZW1vcnlV
c2FnZU1lYXN1cmVtZW50RGVsYXkpOwogfQogCi12b2lkIFBlcmZvcm1hbmNlTW9uaXRvcjo6YWN0
aXZpdHlTdGF0ZUNoYW5nZWQoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgb2xkU3RhdGUsIEFjdGl2aXR5
U3RhdGU6OkZsYWdzIG5ld1N0YXRlKQordm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6OmFjdGl2aXR5
U3RhdGVDaGFuZ2VkKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBvbGRTdGF0ZSwgT3B0
aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG5ld1N0YXRlKQogewotICAgIEFjdGl2aXR5U3Rh
dGU6OkZsYWdzIGNoYW5nZWQgPSBvbGRTdGF0ZSBeIG5ld1N0YXRlOwotICAgIGJvb2wgdmlzaWJp
bGl0eUNoYW5nZWQgPSBjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworICAgIGF1
dG8gY2hhbmdlZCA9IG9sZFN0YXRlIF4gbmV3U3RhdGU7CisgICAgYm9vbCB2aXNpYmlsaXR5Q2hh
bmdlZCA9IGNoYW5nZWQuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIAogICAg
IC8vIE1lYXN1cmUgQ1BVIHVzYWdlIG9mIHBhZ2VzIHdoZW4gdGhleSBhcmUgbm8gbG9uZ2VyIHZp
c2libGUuCiAgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6aXNQb3N0QmFja2dyb3Vu
ZGluZ0NQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkgJiYgdmlzaWJpbGl0eUNoYW5nZWQpIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuaAkocmV2aXNpb24g
MjM0ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7Ci0gICAgdm9pZCBh
Y3Rpdml0eVN0YXRlQ2hhbmdlZChBY3Rpdml0eVN0YXRlOjpGbGFncyBvbGRTdGF0ZSwgQWN0aXZp
dHlTdGF0ZTo6RmxhZ3MgbmV3U3RhdGUpOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZUNoYW5nZWQo
T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG9sZFN0YXRlLCBPcHRpb25TZXQ8QWN0aXZp
dHlTdGF0ZTo6RmxhZz4gbmV3U3RhdGUpOwogCiBwcml2YXRlOgogICAgIHZvaWQgbWVhc3VyZVBv
c3RMb2FkQ1BVVXNhZ2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJ
KHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMzMSw3ICs0MzMxLDcgQEAgdm9pZCBJbnRlcm5hbHM6OnNl
dFBhZ2VWaXNpYmlsaXR5KGJvb2wgaQogICAgIGF1dG8gc3RhdGUgPSBwYWdlLmFjdGl2aXR5U3Rh
dGUoKTsKIAogICAgIGlmICghaXNWaXNpYmxlKQotICAgICAgICBzdGF0ZSAmPSB+QWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlOworICAgICAgICBzdGF0ZSAtPSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGU7CiAgICAgZWxzZQogICAgICAgICBzdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ4NDgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE4LTA4LTE0ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0IGZvciBB
Y3Rpdml0eVN0YXRlOjpGbGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg4NTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4K
KworICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6d2luZG93RGlkT3JkZXJPZmZTY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6d2luZG93RGlkT3JkZXJPblNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjp2aWV3RGlkTW92ZVRvV2luZG93KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBY3Rpdml0
eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5
U3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE11dGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmlzSW5XaW5kb3cgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmlzVmlld1Zpc2libGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmlzVmlld0ZvY3VzZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmlzVmlld1dpbmRvd0FjdGl2ZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjphY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAo
V2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVw
ZGF0ZVRocm90dGxlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVJc0lu
V2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dmlzaWJpbGl0eURpZENoYW5nZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmlzVmlzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmlzVmlzaWJsZU9y
T2NjbHVkZWQgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oOgorCiAyMDE4LTA4LTEzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXSzJdIFttYWNPU10gSW1wbGVtZW50IGEgbWVjaGFuaXNtIHRv
IHRlc3QgZHJhZyBhbmQgZHJvcApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Nyw3ICs2Nyw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAg
IFdlYkNvcmU6OkludFNpemUgdmlld1NpemU7CiAKLSAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpGbGFncyBhY3Rpdml0eVN0YXRlOworICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlOwogICAgIAogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUg
c3RvcmU7CiAgICAgRHJhd2luZ0FyZWFUeXBlIGRyYXdpbmdBcmVhVHlwZTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM0ODQxKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ5Miw5ICsxNDkyLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzVmlzaWJp
bGl0eQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUFjdGl2aXR5U3RhdGUo
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1
cGRhdGVBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBmbGFnc1Rv
VXBkYXRlKQogewotICAgIG1fYWN0aXZpdHlTdGF0ZSAmPSB+ZmxhZ3NUb1VwZGF0ZTsKKyAgICBt
X2FjdGl2aXR5U3RhdGUgPSBtX2FjdGl2aXR5U3RhdGUgLSBmbGFnc1RvVXBkYXRlOwogICAgIGlm
IChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkICYmIG1fcGFnZUNsaWVu
dC5pc1ZpZXdGb2N1c2VkKCkpCiAgICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0
YXRlOjpJc0ZvY3VzZWQ7CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpX
aW5kb3dJc0FjdGl2ZSAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3V2luZG93QWN0aXZlKCkpCkBAIC0x
NTE1LDkgKzE1MTUsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0ZShB
CiAgICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01l
ZGlhOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rp
dml0eVN0YXRlOjpGbGFncyBtYXlIYXZlQ2hhbmdlZCwgYm9vbCB3YW50c1N5bmNocm9ub3VzUmVw
bHksIEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgZGlzcGF0Y2hNb2RlKQordm9pZCBX
ZWJQYWdlUHJveHk6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3Rh
dGU6OkZsYWc+IG1heUhhdmVDaGFuZ2VkLCBib29sIHdhbnRzU3luY2hyb25vdXNSZXBseSwgQWN0
aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZSBkaXNwYXRjaE1vZGUpCiB7Ci0gICAgTE9HX1dJ
VEhfU1RSRUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8PCAiV2ViUGFnZVByb3h5ICIgPDwgcGFn
ZUlEKCkgPDwgIiBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlIC0gbWF5SGF2ZUNoYW5nZWQgIiA8PCAg
YWN0aXZpdHlTdGF0ZUZsYWdzVG9TdHJpbmcobWF5SGF2ZUNoYW5nZWQpKTsKKyAgICBMT0dfV0lU
SF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBwYWdl
SUQoKSA8PCAiIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UgLSBtYXlIYXZlQ2hhbmdlZCAiIDw8IG1h
eUhhdmVDaGFuZ2VkKTsKIAogICAgIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZs
YWdzIHw9IG1heUhhdmVDaGFuZ2VkOwogICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3lu
Y2hyb25vdXNSZXBseSA9IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBs
eSB8fCB3YW50c1N5bmNocm9ub3VzUmVwbHk7CkBAIC0xNTY2LDIwICsxNTY2LDIwIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGUKICAgICBpZiAoIWlzVmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKEFjdGl2aXR5U3RhdGUsIHN0
cmVhbSA8PCAiV2ViUGFnZVByb3h5ICIgPDwgcGFnZUlEKCkgPDwgIiBkaXNwYXRjaEFjdGl2aXR5
U3RhdGVDaGFuZ2UgLSBwb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgIiA8PCBh
Y3Rpdml0eVN0YXRlRmxhZ3NUb1N0cmluZyhtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3Rh
dGVGbGFncykpOworICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwg
IldlYlBhZ2VQcm94eSAiIDw8IHBhZ2VJRCgpIDw8ICIgZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hh
bmdlIC0gcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzICIgPDwgbV9wb3RlbnRp
YWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MpOwogCiAgICAgLy8gSWYgdGhlIHZpc2liaWxp
dHkgc3RhdGUgbWF5IGhhdmUgY2hhbmdlZCwgdGhlbiBzbyBtYXkgdGhlIHZpc3VhbGx5IGlkbGUg
JiBvY2NsdWRlZCBhZ25vc3RpYyBzdGF0ZS4KICAgICBpZiAobV9wb3RlbnRpYWxseUNoYW5nZWRB
Y3Rpdml0eVN0YXRlRmxhZ3MgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCi0gICAgICAgIG1f
cG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzIHw9IEFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZU9yT2NjbHVkZWQgfCBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZTsKKyAgICAg
ICAgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgfD0geyBBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkLCBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSB9
OwogCiAgICAgLy8gUmVjb3JkIHRoZSBwcmlvciB2aWV3IHN0YXRlLCB1cGRhdGUgdGhlIGZsYWdz
IHRoYXQgbWF5IGhhdmUgY2hhbmdlZCwKICAgICAvLyBhbmQgY2hlY2sgd2hpY2ggZmxhZ3MgaGF2
ZSBhY3R1YWxseSBjaGFuZ2VkLgotICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIHByZXZpb3VzQWN0
aXZpdHlTdGF0ZSA9IG1fYWN0aXZpdHlTdGF0ZTsKKyAgICBhdXRvIHByZXZpb3VzQWN0aXZpdHlT
dGF0ZSA9IG1fYWN0aXZpdHlTdGF0ZTsKICAgICB1cGRhdGVBY3Rpdml0eVN0YXRlKG1fcG90ZW50
aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzKTsKLSAgICBBY3Rpdml0eVN0YXRlOjpGbGFn
cyBjaGFuZ2VkID0gbV9hY3Rpdml0eVN0YXRlIF4gcHJldmlvdXNBY3Rpdml0eVN0YXRlOworICAg
IGF1dG8gY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIHByZXZpb3VzQWN0aXZpdHlTdGF0ZTsK
IAogICAgIGlmIChjaGFuZ2VkKQotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0
ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBwYWdlSUQoKSA8PCAiIGRpc3BhdGNoQWN0
aXZpdHlTdGF0ZUNoYW5nZTogc3RhdGUgY2hhbmdlZCBmcm9tICIgPDwgYWN0aXZpdHlTdGF0ZUZs
YWdzVG9TdHJpbmcocHJldmlvdXNBY3Rpdml0eVN0YXRlKSA8PCAiIHRvICIgPDwgYWN0aXZpdHlT
dGF0ZUZsYWdzVG9TdHJpbmcobV9hY3Rpdml0eVN0YXRlKSk7CisgICAgICAgIExPR19XSVRIX1NU
UkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2VQcm94eSAiIDw8IHBhZ2VJRCgp
IDw8ICIgZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlOiBzdGF0ZSBjaGFuZ2VkIGZyb20gIiA8
PCBwcmV2aW91c0FjdGl2aXR5U3RhdGUgPDwgIiB0byAiIDw8IG1fYWN0aXZpdHlTdGF0ZSk7CiAK
ICAgICBpZiAoKG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzICYgQWN0aXZp
dHlTdGF0ZTo6SXNWaXNpYmxlKSAmJiBpc1ZpZXdWaXNpYmxlKCkpCiAgICAgICAgIHZpZXdJc0Jl
Y29taW5nVmlzaWJsZSgpOwpAQCAtMTYzNyw3ICsxNjM3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZQogICAgIGlmIChhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0g
QWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cykKICAgICAgICAgd2FpdEZvckRpZFVwZGF0
ZUFjdGl2aXR5U3RhdGUoYWN0aXZpdHlTdGF0ZUNoYW5nZUlEKTsKIAotICAgIG1fcG90ZW50aWFs
bHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzID0gQWN0aXZpdHlTdGF0ZTo6Tm9GbGFnczsKKyAg
ICBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyA9IHsgfTsKICAgICBtX2Fj
dGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPSBmYWxzZTsKICAgICBtX3Zp
ZXdXYXNFdmVySW5XaW5kb3cgfD0gaXNOb3dJbldpbmRvdzsKIH0KQEAgLTE2NjMsOCArMTY2Myw4
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKICAgICAgICAgbV9w
YWdlSXNVc2VyT2JzZXJ2YWJsZUNvdW50ID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnVzZXJP
YnNlcnZhYmxlUGFnZUNvdW50KCk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgYm9vbCBpc0Nh
cHR1cmluZ01lZGlhID0gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJp
bmdNZWRpYTsKLSAgICBib29sIGlzQXVkaWJsZSA9IG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5
U3RhdGU6OklzQXVkaWJsZTsKKyAgICBib29sIGlzQ2FwdHVyaW5nTWVkaWEgPSBtX2FjdGl2aXR5
U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSk7CisgICAgYm9v
bCBpc0F1ZGlibGUgPSBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNB
dWRpYmxlKTsKICAgICBpZiAoIWlzVmlld1Zpc2libGUoKSAmJiAhbV9hbHdheXNSdW5zQXRGb3Jl
Z3JvdW5kUHJpb3JpdHkgJiYgIWlzQ2FwdHVyaW5nTWVkaWEgJiYgIWlzQXVkaWJsZSkgewogICAg
ICAgICBpZiAobV9hY3Rpdml0eVRva2VuKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEg
Zm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgdmlldyBpcyBubyBsb25nZXIgdmlzaWJs
ZSIsIHRoaXMpOwpAQCAtNDcxMiw3ICs0NzEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE11
dGVkKFdlYkNvcmU6Ok1lZAogI2VuZGlmCiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldE11dGVkKHN0YXRlKSwgbV9wYWdlSUQpOwotICAgIGFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlIHwgQWN0aXZpdHlTdGF0ZTo6SXNDYXB0
dXJpbmdNZWRpYSk7CisgICAgYWN0aXZpdHlTdGF0ZURpZENoYW5nZSh7IEFjdGl2aXR5U3RhdGU6
OklzQXVkaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSB9KTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldE1lZGlhQ2FwdHVyZUVuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAt
NzI2OSw3ICs3MjY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmlzUGxheWluZ01lZGlhRGlkQ2hh
bgogICAgIH0KICNlbmRpZgogCi0gICAgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0
YXRlOjpJc0F1ZGlibGUgfCBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhKTsKKyAgICBh
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlLCBBY3Rpdml0
eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhIH0pOwogCiAgICAgcGxheWluZ01lZGlhTWFzayB8PSBX
ZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVNYXNrOwogICAgIGlmICgob2xkU3Rh
dGUgJiBwbGF5aW5nTWVkaWFNYXNrKSAhPSAobV9tZWRpYVN0YXRlICYgcGxheWluZ01lZGlhTWFz
aykpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24g
MjM0ODQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxNSwxNyArNTE1LDE3IEBAIHB1YmxpYzoKICAgICBib29sIGRlbGVnYXRl
c1Njcm9sbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZGVsZWdhdGVzU2Nyb2xsaW5nOyB9CiAKICAg
ICBlbnVtIGNsYXNzIEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgeyBEZWZlcnJhYmxl
LCBJbW1lZGlhdGUgfTsKLSAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbWF5SGF2ZUNoYW5nZWQsIGJvb2wgd2FudHNTeW5jaHJvbm91
c1JlcGx5ID0gZmFsc2UsIEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgPSBBY3Rpdml0
eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpEZWZlcnJhYmxlKTsKLSAgICBib29sIGlzSW5XaW5k
b3coKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpJc0luV2luZG93OyB9CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlv
blNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBtYXlIYXZlQ2hhbmdlZCwgYm9vbCB3
YW50c1N5bmNocm9ub3VzUmVwbHkgPSBmYWxzZSwgQWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNo
TW9kZSA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6OkRlZmVycmFibGUpOworICAg
IGJvb2wgaXNJbldpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5jb250YWlu
cyhXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsgfQogICAgIHZvaWQgd2FpdEZv
ckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUNoYW5nZUlEKTsKICAgICB2b2lk
IGRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSB7IG1fd2FpdGluZ0ZvckRpZFVwZGF0ZUFjdGl2aXR5
U3RhdGUgPSBmYWxzZTsgfQogCiAgICAgdm9pZCBsYXllckhvc3RpbmdNb2RlRGlkQ2hhbmdlKCk7
CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1Zp
ZXdWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgV2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOyB9Ci0gICAgYm9vbCBpc1ZpZXdGb2N1c2VkKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNGb2N1
c2VkOyB9Ci0gICAgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2Fj
dGl2aXR5U3RhdGUgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZTsgfQor
ICAgIGJvb2wgaXNWaWV3VmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5j
b250YWlucyhXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOyB9CisgICAgYm9vbCBp
c1ZpZXdGb2N1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCk7IH0KKyAgICBib29sIGlzVmlld1dpbmRv
d0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7IH0KIAogICAgIHZvaWQgYWRkTUlNRVR5
cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCkBA
IC0xMzU4LDcgKzEzNTgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gZ29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgV2ViQ29yZTo6
RnJhbWVMb2FkVHlwZSk7CiAKLSAgICB2b2lkIHVwZGF0ZUFjdGl2aXR5U3RhdGUoV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IFdlYkNvcmU6OkFjdGl2aXR5U3Rh
dGU6OkFsbEZsYWdzKTsKKyAgICB2b2lkIHVwZGF0ZUFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGZsYWdzVG9VcGRhdGUgPSBXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjphbGxGbGFncygpKTsKICAgICB2b2lkIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsK
ICAgICB2b2lkIHVwZGF0ZUhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlcygpOwogCkBA
IC0xOTM5LDcgKzE5MzksNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eT4gbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXI7CiAjZW5kaWYKIAotICAgIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdz
IG1fYWN0aXZpdHlTdGF0ZSB7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Ok5vRmxhZ3MgfTsKKyAg
ICBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbV9hY3Rpdml0eVN0YXRl
OwogICAgIGJvb2wgbV92aWV3V2FzRXZlckluV2luZG93IHsgZmFsc2UgfTsKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgYm9vbCBtX2FsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayB7IGZh
bHNlIH07CkBAIC0yMTc2LDcgKzIxNzYsNyBAQCBwcml2YXRlOgogICAgIEFjdGl2aXR5U3RhdGVD
aGFuZ2VJRCBtX2N1cnJlbnRBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgeyBBY3Rpdml0eVN0YXRlQ2hh
bmdlQXN5bmNocm9ub3VzIH07CiAKICAgICBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCBt
X2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzOwotICAgIFdlYkNvcmU6OkFjdGl2aXR5U3Rh
dGU6OkZsYWdzIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzIHsgV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6Tm9GbGFncyB9OworICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFnPiBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFnczsK
ICAgICBib29sIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSB7IGZh
bHNlIH07CiAgICAgVmVjdG9yPENhbGxiYWNrSUQ+IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VD
YWxsYmFja3M7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS0FQ
SUNhc3RXUEUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy93
cGUvV0tBUElDYXN0V1BFLmgJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL3dwZS9XS0FQSUNhc3RXUEUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTYg
KzQ4LDE2IEBAIGlubGluZSBQcm94eWluZ1JlZlB0cjxXZWJHcmFtbWFyRGV0YWlsPiAKICAgICBy
ZXR1cm4gUHJveHlpbmdSZWZQdHI8V2ViR3JhbW1hckRldGFpbD4oV2ViR3JhbW1hckRldGFpbDo6
Y3JlYXRlKGdyYW1tYXJEZXRhaWwpKTsKIH0KIAotaW5saW5lIFdlYkNvcmU6OkFjdGl2aXR5U3Rh
dGU6OkZsYWdzIHRvVmlld1N0YXRlRmxhZ3MoV0tWaWV3U3RhdGUgd2tWaWV3U3RhdGUpCitpbmxp
bmUgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IHRvVmlld1N0YXRlRmxh
Z3MoV0tWaWV3U3RhdGUgd2tWaWV3U3RhdGUpCiB7Ci0gICAgdW5zaWduZWQgdmlld1N0YXRlRmxh
Z3MgPSAwOworICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiB2aWV3
U3RhdGVGbGFnczsKIAogICAgIGlmICh3a1ZpZXdTdGF0ZSAmIGtXS1ZpZXdTdGF0ZUlzSW5XaW5k
b3cpCiAgICAgICAgIHZpZXdTdGF0ZUZsYWdzIHw9IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Oklz
SW5XaW5kb3c7CiAgICAgaWYgKHdrVmlld1N0YXRlICYga1dLVmlld1N0YXRlSXNWaXNpYmxlKQog
ICAgICAgICB2aWV3U3RhdGVGbGFncyB8PSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGU7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6Rmxh
Z3M+KHZpZXdTdGF0ZUZsYWdzKTsKKyAgICByZXR1cm4gdmlld1N0YXRlRmxhZ3M7CiB9CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMxMyw3ICsyMzEzLDcgQEAgLSAoQk9P
TClfem9vbVRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KQogCiAtICh2b2lkKWRpZE1vdmVUb1dp
bmRvdwogewotICAgIF9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkFsbEZsYWdzKTsKKyAgICBfcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjphbGxGbGFncygpKTsKIH0KIAogLSAodm9pZClzZXRPcGFx
dWU6KEJPT0wpb3BhcXVlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAkocmV2aXNpb24gMjM0ODQxKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJp
dmF0ZSB7CiAgICAgICAgIGlmICghcGFnZVByb3h5KQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBwYWdlUHJveHktPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoYWN0aXZpdHlTdGF0ZUZsYWdz
VG9VcGRhdGUpOwotICAgICAgICBhY3Rpdml0eVN0YXRlRmxhZ3NUb1VwZGF0ZSA9IEFjdGl2aXR5
U3RhdGU6Ok5vRmxhZ3M7CisgICAgICAgIGFjdGl2aXR5U3RhdGVGbGFnc1RvVXBkYXRlID0geyB9
OwogICAgIH0KIAogICAgIFdlYktpdFdlYlZpZXdDaGlsZHJlbk1hcCBjaGlsZHJlbjsKQEAgLTE4
NSw4ICsxODUsOCBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAgICAgdW5z
aWduZWQgbG9uZyB0b3BsZXZlbFdpbmRvd1JlYWxpemVkSUQgeyAwIH07CiAKICAgICAvLyBWaWV3
IFN0YXRlLgotICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUgeyAwIH07Ci0g
ICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZUZsYWdzVG9VcGRhdGUgeyAwIH07
CisgICAgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGU7CisgICAg
T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGVGbGFnc1RvVXBkYXRl
OwogICAgIFJ1bkxvb3A6OlRpbWVyPFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZT4gdXBkYXRlQWN0
aXZpdHlTdGF0ZVRpbWVyOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtMjA3LDcg
KzIwNyw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKIAogV0VCS0lUX0RF
RklORV9UWVBFKFdlYktpdFdlYlZpZXdCYXNlLCB3ZWJraXRfd2ViX3ZpZXdfYmFzZSwgR1RLX1RZ
UEVfQ09OVEFJTkVSKQogCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBk
YXRlQWN0aXZpdHlTdGF0ZShXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIEFjdGl2aXR5
U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUpCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZVNjaGVkdWxlVXBkYXRlQWN0aXZpdHlTdGF0ZShXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jh
c2UsIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBmbGFnc1RvVXBkYXRlKQogewogICAg
IFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAg
IHByaXYtPmFjdGl2aXR5U3RhdGVGbGFnc1RvVXBkYXRlIHw9IGZsYWdzVG9VcGRhdGU7CkBAIC0y
MzksNyArMjM5LDcgQEAgc3RhdGljIGdib29sZWFuIHRvcGxldmVsV2luZG93Rm9jdXNPdXRFdgog
ICAgIGlmICghKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0Fj
dGl2ZSkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIHByaXYtPmFjdGl2aXR5U3RhdGUg
Jj0gfkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlOworICAgIHByaXYtPmFjdGl2aXR5U3Rh
dGUgLT0gQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CiAgICAgd2Via2l0V2ViVmlld0Jh
c2VTY2hlZHVsZVVwZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIEFjdGl2aXR5U3RhdGU6
OldpbmRvd0lzQWN0aXZlKTsKIAogICAgIHJldHVybiBGQUxTRTsKQEAgLTI1OCw3ICsyNTgsNyBA
QCBzdGF0aWMgZ2Jvb2xlYW4gdG9wbGV2ZWxXaW5kb3dTdGF0ZUV2ZW50CiAgICAgaWYgKHZpc2li
bGUpCiAgICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlOwogICAgIGVsc2UKLSAgICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAmPSB+QWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlOworICAgICAgICBwcml2LT5hY3Rpdml0eVN0YXRlIC09IEFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZTsKICAgICB3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlQWN0
aXZpdHlTdGF0ZSh3ZWJWaWV3QmFzZSwgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIAogICAg
IHJldHVybiBGQUxTRTsKQEAgLTMwMSwxMyArMzAxLDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlU2V0VG9wbGV2ZWwKICAgICBwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93ID0g
d2luZG93OwogCiAgICAgaWYgKCFwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93KSB7Ci0gICAg
ICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUgPSAwOworICAgICAgICBPcHRp
b25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gZmxhZ3NUb1VwZGF0ZTsKICAgICAgICAgaWYgKHBy
aXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KSB7Ci0gICAgICAg
ICAgICBwcml2LT5hY3Rpdml0eVN0YXRlICY9IH5BY3Rpdml0eVN0YXRlOjpJc0luV2luZG93Owor
ICAgICAgICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAtPSBBY3Rpdml0eVN0YXRlOjpJc0luV2lu
ZG93OwogICAgICAgICAgICAgZmxhZ3NUb1VwZGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0luV2lu
ZG93OwogICAgICAgICB9CiAgICAgICAgIGlmIChwcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZp
dHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpIHsKLSAgICAgICAgICAgIHByaXYtPmFjdGl2aXR5U3Rh
dGUgJj0gfkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlOworICAgICAgICAgICAgcHJpdi0+
YWN0aXZpdHlTdGF0ZSAtPSBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKICAgICAgICAg
ICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKICAgICAgICAg
fQogICAgICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSkKQEAgLTYyNCw3ICs2MjQsNyBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZU1hcChHdGtXaWRnCiAKICAgICBXZWJLaXRXZWJWaWV3QmFz
ZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwogICAgIFdlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwotICAgIEFjdGl2
aXR5U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUgPSAwOworICAgIE9wdGlvblNldDxBY3Rpdml0
eVN0YXRlOjpGbGFnPiBmbGFnc1RvVXBkYXRlOwogICAgIGlmICghKHByaXYtPmFjdGl2aXR5U3Rh
dGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpKQogICAgICAgICBmbGFnc1RvVXBkYXRlIHw9
IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsKICAgICBpZiAocHJpdi0+dG9wbGV2ZWxPblNjcmVl
bldpbmRvdykgewpAQCAtNjQ5LDcgKzY0OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdC
YXNlVW5tYXAoR3RrV2kKICAgICBpZiAoIShwcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJpdi0+YWN0aXZpdHlT
dGF0ZSAmPSB+QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworICAgIHByaXYtPmFjdGl2aXR5U3Rh
dGUgLT0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOwogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2No
ZWR1bGVVcGRhdGVBY3Rpdml0eVN0YXRlKHdlYlZpZXdCYXNlLCBBY3Rpdml0eVN0YXRlOjpJc1Zp
c2libGUpOwogfQogCkBAIC0xNDkzLDcgKzE0OTMsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNl
U2V0Rm9jdXMoV2ViS2l0V2ViCiAgICAgaWYgKChmb2N1c2VkICYmIHByaXYtPmFjdGl2aXR5U3Rh
dGUgJiBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpIHx8ICghZm9jdXNlZCAmJiAhKHByaXYtPmFj
dGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IEFjdGl2aXR5U3Rh
dGU6OklzRm9jdXNlZDsKKyAgICBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gZmxhZ3NU
b1VwZGF0ZSB7IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCB9OwogICAgIGlmIChmb2N1c2VkKSB7
CiAgICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2Vk
OwogCkBAIC0xNTA3LDI5ICsxNTA3LDI5IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRGb2N1
cyhXZWJLaXRXZWIKICAgICAgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6
V2luZG93SXNBY3RpdmU7CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAgcHJpdi0+YWN0
aXZpdHlTdGF0ZSAmPSB+QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkOworICAgICAgICBwcml2LT5h
Y3Rpdml0eVN0YXRlIC09IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZDsKIAogICAgIHdlYmtpdFdl
YlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rpdml0eVN0YXRlKHdlYlZpZXdCYXNlLCBmbGFnc1Rv
VXBkYXRlKTsKIH0KIAogYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUlzSW5XaW5kb3dBY3RpdmUoV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQogewotICAgIHJldHVybiB3ZWJWaWV3QmFzZS0+
cHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlOworICAg
IHJldHVybiB3ZWJWaWV3QmFzZS0+cHJpdi0+YWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0
eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiB9CiAKIGJvb2wgd2Via2l0V2ViVmlld0Jhc2VJc0Zv
Y3VzZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQogewotICAgIHJldHVybiB3ZWJW
aWV3QmFzZS0+cHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZDsK
KyAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYtPmFjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0
aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKTsKIH0KIAogYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUlzVmlz
aWJsZShXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCiB7Ci0gICAgcmV0dXJuIHdlYlZp
ZXdCYXNlLT5wcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOwor
ICAgIHJldHVybiB3ZWJWaWV3QmFzZS0+cHJpdi0+YWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rp
dml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCiBib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNJbldp
bmRvdyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCiB7Ci0gICAgcmV0dXJuIHdlYlZp
ZXdCYXNlLT5wcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsK
KyAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYtPmFjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0
aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRJ
bnB1dE1ldGhvZFN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgYm9v
bCBlbmFibGVkKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZp
ZXcuY3BwCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dQRVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsMTEgKzE3MiwxMSBAQCB2b2lk
IFZpZXc6OnNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6CiAgICAgICAgIG1fcGFnZVByb3h5
LT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKHNpemUpOwogfQogCi12b2lkIFZpZXc6OnNldFZpZXdT
dGF0ZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBmbGFncykKK3ZvaWQgVmlldzo6c2V0
Vmlld1N0YXRlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBmbGFncykK
IHsKLSAgICBzdGF0aWMgY29uc3QgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZGVmYXVs
dEZsYWdzID0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfCBXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQ7CisgICAgc3RhdGljIGNvbnN0IE9wdGlvblNldDxX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBkZWZhdWx0RmxhZ3MgeyBXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNGb2N1
c2VkIH07CiAKLSAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkRmxhZ3Mg
PSBtX3ZpZXdTdGF0ZUZsYWdzIF4gKGRlZmF1bHRGbGFncyB8IGZsYWdzKTsKKyAgICBhdXRvID0g
bV92aWV3U3RhdGVGbGFncyBeIChkZWZhdWx0RmxhZ3MgfCBmbGFncyk7CiAgICAgbV92aWV3U3Rh
dGVGbGFncyA9IGRlZmF1bHRGbGFncyB8IGZsYWdzOwogCiAgICAgaWYgKGNoYW5nZWRGbGFncykK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oCShyZXZpc2lv
biAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuaAko
d29ya2luZyBjb3B5KQpAQCAtNjcsOCArNjcsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAKLSAgICBXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyB2aWV3U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZXdTdGF0ZUZsYWdzOyB9Ci0gICAgdm9pZCBzZXRWaWV3U3RhdGUoV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6RmxhZ3MpOworICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFn
PiB2aWV3U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdTdGF0ZUZsYWdzOyB9CisgICAgdm9p
ZCBzZXRWaWV3U3RhdGUoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+KTsK
IAogICAgIHZvaWQgY2xvc2UoKTsKIApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPiBtX3BhZ2VDbGllbnQ7CiAgICAg
UmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3BhZ2VQcm94eTsKICAgICBXZWJDb3JlOjpJ
bnRTaXplIG1fc2l6ZTsKLSAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBtX3ZpZXdT
dGF0ZUZsYWdzOworICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBt
X3ZpZXdTdGF0ZUZsYWdzOwogCiAgICAgV2ViS2l0OjpDb21wb3NpdGluZ01hbmFnZXJQcm94eSBt
X2NvbXBvc2l0aW5nTWFuYWdlclByb3h5OwogICAgIHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBt
X2JhY2tlbmQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4OTIsMTMgKzE4OTIsMTMgQEAg
ZmxvYXQgV2ViVmlld0ltcGw6OmludHJpbnNpY0RldmljZVNjYWxlRgogdm9pZCBXZWJWaWV3SW1w
bDo6d2luZG93RGlkT3JkZXJPZmZTY3JlZW4oKQogewogICAgIExPRyhBY3Rpdml0eVN0YXRlLCAi
V2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4iLCB0aGlz
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Uo
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlIHwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6V2luZG93SXNBY3RpdmUpOworICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZSh7
IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6V2luZG93SXNBY3RpdmUgfSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZE9y
ZGVyT25TY3JlZW4oKQogewogICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAg
KHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPblNjcmVlbiIsIHRoaXMsIG1fcGFnZS0+cGFnZUlE
KCkpOwotICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGUgfCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2
ZSk7CisgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2
ZSB9KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkQmVjb21lS2V5KE5TV2luZG93
ICprZXlXaW5kb3cpCkBAIC0yMDY0LDcgKzIwNjQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3
RGlkTW92ZVRvV2luZG93KCkKICAgICBpZiAod2luZG93KSB7CiAgICAgICAgIHdpbmRvd0RpZENo
YW5nZVNjcmVlbigpOwogCi0gICAgICAgIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGFj
dGl2aXR5U3RhdGVDaGFuZ2VzID0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3Rp
dmUgfCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisgICAgICAgIE9wdGlvblNl
dDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlcyB7IFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlLCBXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUgfTsKICAgICAgICAgaWYgKG1fc2hvdWxkRGVmZXJWaWV3SW5XaW5kb3dD
aGFuZ2VzKQogICAgICAgICAgICAgbV92aWV3SW5XaW5kb3dDaGFuZ2VXYXNEZWZlcnJlZCA9IHRy
dWU7CiAgICAgICAgIGVsc2UKQEAgLTIwOTAsNyArMjA5MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnZpZXdEaWRNb3ZlVG9XaW5kb3coKQogICAgICAgICBpZiAobV9pbW1lZGlhdGVBY3Rpb25HZXN0
dXJlUmVjb2duaXplciAmJiAhW1ttX3ZpZXcgZ2VzdHVyZVJlY29nbml6ZXJzXSBjb250YWluc09i
amVjdDptX2ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmdldCgpXSAmJiAhbV9pZ25v
cmVzTm9uV2hlZWxFdmVudHMgJiYgbV9hbGxvd3NMaW5rUHJldmlldykKICAgICAgICAgICAgIFtt
X3ZpZXcgYWRkR2VzdHVyZVJlY29nbml6ZXI6bV9pbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2du
aXplci5nZXQoKV07CiAgICAgfSBlbHNlIHsKLSAgICAgICAgV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZUNoYW5nZXMgPSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpX
aW5kb3dJc0FjdGl2ZSB8IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsKKyAgICAg
ICAgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGVD
aGFuZ2VzIHsgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUsIFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSB9OwogICAgICAgICBpZiAobV9zaG91bGREZWZlclZp
ZXdJbldpbmRvd0NoYW5nZXMpCiAgICAgICAgICAgICBtX3ZpZXdJbldpbmRvd0NoYW5nZVdhc0Rl
ZmVycmVkID0gdHJ1ZTsKICAgICAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3
Lm1tCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tB
cHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3
Myw3IEBAIC0gKHZvaWQpX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kCiAgICAgICAgIHJl
dHVybjsKIAogICAgIHBhZ2UtPmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCk7Ci0gICAg
cGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpBbGxG
bGFncyAmIH5XZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKKyAgICBwYWdlLT5h
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OmFsbEZsYWdzKCkg
LSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKIH0KIAogLSAodm9pZClfYXBw
bGljYXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3VuZApAQCAt
ODksNyArODksNyBAQCAtICh2b2lkKV9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgcGFnZS0+YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5k
KCk7Ci0gICAgcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpBbGxGbGFncyAmIH5XZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93LCB0cnVl
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eTo6QWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6
SW1tZWRpYXRlKTsKKyAgICBwYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OmFsbEZsYWdzKCkgLSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2lu
ZG93LCB0cnVlLCBXZWJLaXQ6OldlYlBhZ2VQcm94eTo6QWN0aXZpdHlTdGF0ZUNoYW5nZURpc3Bh
dGNoTW9kZTo6SW1tZWRpYXRlKTsKIH0KIAogLSAoQk9PTClpc0JhY2tncm91bmQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIzNDg0MSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM3Myw3ICsxMzczLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVDUFVNb25pdG9yU3Rh
dGUoQwogCiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0ZURpZENo
YW5nZSh1aW50NjRfdCwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCkKK3Zv
aWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UodWludDY0X3QsIE9wdGlv
blNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKQogewogICAgIGlmIChj
aGFuZ2VkICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQogICAgICAgICB1cGRh
dGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJlYXNvbjo6VmlzaWJpbGl0eUhhc0No
YW5nZWQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lv
biAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTQsNyArMTk0LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lk
IHVwZGF0ZUFjdGl2ZVBhZ2VzKCk7Ci0gICAgdm9pZCBwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5n
ZSh1aW50NjRfdCBwYWdlSUQsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQp
OworICAgIHZvaWQgcGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UodWludDY0X3QgcGFnZUlELCBP
cHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCk7CiAKICAgICB2
b2lkIHNldEhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdJbmNyZWFzZUxpbWl0KGludCBtaWxs
aXNlY29uZHMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNSw3ICs1
MTUsNyBAQCB2b2lkIFBsdWdpblZpZXc6OndlYlBhZ2VEZXN0cm95ZWQoKQogICAgIG1fd2ViUGFn
ZSA9IDA7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rp
dml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkKQordm9pZCBQbHVnaW5WaWV3OjphY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2Vk
KQogewogICAgIGlmICghbV9wbHVnaW4gfHwgIW1faXNJbml0aWFsaXplZCkKICAgICAgICAgcmV0
dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaAkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIG1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBtYW51YWxM
b2FkRGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKLSAgICB2b2lkIGFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdl
ZCk7CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKTsKICAgICB2b2lkIHNldExheWVySG9zdGluZ01v
ZGUoTGF5ZXJIb3N0aW5nTW9kZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVk
RHJhd2luZ0FyZWEuY3BwCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6ZGV2aWNlT3JQ
YWcKIH0KICNlbmRpZgogCi12b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgQWN0aXZpdHlTdGF0ZUNo
YW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKQordm9pZCBBY2NlbGVyYXRlZERyYXdp
bmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpG
bGFnPiBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFj
a0lEPiYpCiB7CiAgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpIHsK
ICAgICAgICAgaWYgKG1fd2ViUGFnZS5pc1Zpc2libGUoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVh
LmgJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkZXN0cm95TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBv
c2l0aW5nKGJvb2wmKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdm9pZCBhY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzLCBBY3Rpdml0eVN0YXRlQ2hh
bmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgLyogY2FsbGJhY2tJRHMgKi8pIG92ZXJy
aWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6RmxhZz4sIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9y
PENhbGxiYWNrSUQ+JiAvKiBjYWxsYmFja0lEcyAqLykgb3ZlcnJpZGU7CiAgICAgdm9pZCBhdHRh
Y2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFw
aGljc0xheWVyKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxheWVySG9zdERpZEZsdXNoTGF5ZXJz
KCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDIzNDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTks
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBk
YXRlZFNjcm9sbFBvc2l0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFncywgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4sIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3Qg
VmVjdG9yPENhbGxiYWNrSUQ+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVySG9zdGlu
Z01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgbWFya0xheWVy
c1ZvbGF0aWxlSW1tZWRpYXRlbHlJZlBvc3NpYmxlKCkgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9u
IDIzNDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NjMsMTMgKzY2Myw5IEBAIHZvaWQgV2ViUGFnZTo6cmVpbml0
aWFsaXplV2ViUGFnZShXZWJQYWcKIAogdm9pZCBXZWJQYWdlOjp1cGRhdGVUaHJvdHRsZVN0YXRl
KCkKIHsKLSAgICAvLyBXZSBzaG91bGQgc3VwcHJlc3MgaWYgdGhlIHBhZ2UgaXMgbm90IGFjdGl2
ZSwgaXMgdmlzdWFsbHkgaWRsZSwgYW5kIHN1cHJlc3Npb24gaXMgZW5hYmxlZC4KLSAgICBib29s
IGlzTG9hZGluZyA9IG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzTG9hZGluZzsK
LSAgICBib29sIGlzUGxheWluZ0F1ZGlvID0gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0
ZTo6SXNBdWRpYmxlOwotICAgIGJvb2wgaXNDYXB0dXJpbmdNZWRpYSA9IG1fYWN0aXZpdHlTdGF0
ZSAmIEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWE7Ci0gICAgYm9vbCBpc1Zpc3VhbGx5
SWRsZSA9IG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlOwot
ICAgIGJvb2wgd2luZG93SXNBY3RpdmUgPSBtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRl
OjpXaW5kb3dJc0FjdGl2ZTsKLSAgICBib29sIHBhZ2VTdXBwcmVzc2VkID0gIXdpbmRvd0lzQWN0
aXZlICYmICFpc0xvYWRpbmcgJiYgIWlzUGxheWluZ0F1ZGlvICYmICFpc0NhcHR1cmluZ01lZGlh
ICYmIG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCAmJiBpc1Zpc3VhbGx5SWRsZTsKKyAgICBi
b29sIGlzQWN0aXZlID0gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zQW55KHsgQWN0aXZpdHlTdGF0
ZTo6SXNMb2FkaW5nLCBBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUsIEFjdGl2aXR5U3RhdGU6Oklz
Q2FwdHVyaW5nTWVkaWEsIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH0pOworICAgIGJv
b2wgaXNWaXN1YWxseUlkbGUgPSBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0
ZTo6SXNWaXN1YWxseUlkbGUpOworICAgIGJvb2wgcGFnZVN1cHByZXNzZWQgPSBtX3Byb2Nlc3NT
dXBwcmVzc2lvbkVuYWJsZWQgJiYgIWlzQWN0aXZlICYmIGlzVmlzdWFsbHlJZGxlOwogCiAjaWYg
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcp
CiAgICAgaWYgKCFwYWdlU3VwcHJlc3NlZCkgewpAQCAtMjc2MCw3ICsyNzU2LDcgQEAgdm9pZCBX
ZWJQYWdlOjpzZXRDYW5TdGFydE1lZGlhVGltZXJGaXJlZAogCiB2b2lkIFdlYlBhZ2U6OnVwZGF0
ZUlzSW5XaW5kb3coYm9vbCBpc0luaXRpYWxTdGF0ZSkKIHsKLSAgICBib29sIGlzSW5XaW5kb3cg
PSBtX2FjdGl2aXR5U3RhdGUgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93Owor
ICAgIGJvb2wgaXNJbldpbmRvdyA9IG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKIAogICAgIGlmICghaXNJbldpbmRvdykgewogICAg
ICAgICBtX3NldENhblN0YXJ0TWVkaWFUaW1lci5zdG9wKCk7CkBAIC0yNzg1LDcgKzI3ODEsNyBA
QCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUlzSW5XaW5kb3coYm9vbCBpc0luCiAKIHZvaWQgV2ViUGFn
ZTo6dmlzaWJpbGl0eURpZENoYW5nZSgpCiB7Ci0gICAgYm9vbCBpc1Zpc2libGUgPSBtX2FjdGl2
aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisgICAgYm9vbCBpc1Zpc2libGUg
PSBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKICAg
ICBpZiAoIWlzVmlzaWJsZSkgewogICAgICAgICAvLyBXZSBzYXZlIHRoZSBkb2N1bWVudCAvIHNj
cm9sbCBzdGF0ZSB3aGVuIGJhY2tncm91bmRpbmcgYSB0YWIgc28gdGhhdCB3ZSBhcmUgYWJsZSB0
byByZXN0b3JlIGl0CiAgICAgICAgIC8vIGlmIGl0IGdldHMgdGVybWluYXRlZCB3aGlsZSBpbiB0
aGUgYmFja2dyb3VuZC4KQEAgLTI3OTQsMTEgKzI3OTAsMTEgQEAgdm9pZCBXZWJQYWdlOjp2aXNp
YmlsaXR5RGlkQ2hhbmdlKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0QWN0aXZpdHlT
dGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlQ2hh
bmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNh
bGxiYWNrSURzKQordm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rp
dml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0
aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURz
KQogewotICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBh
Z2UgIiA8PCBwYWdlSUQoKSA8PCAiIHNldEFjdGl2aXR5U3RhdGUgdG8gIiA8PCBhY3Rpdml0eVN0
YXRlRmxhZ3NUb1N0cmluZyhhY3Rpdml0eVN0YXRlKSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKEFj
dGl2aXR5U3RhdGUsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IHBhZ2VJRCgpIDw8ICIgc2V0QWN0
aXZpdHlTdGF0ZSB0byAiIDw8IGFjdGl2aXR5U3RhdGUpOwogCi0gICAgQWN0aXZpdHlTdGF0ZTo6
RmxhZ3MgY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIGFjdGl2aXR5U3RhdGU7CisgICAgYXV0
byBjaGFuZ2VkID0gbV9hY3Rpdml0eVN0YXRlIF4gYWN0aXZpdHlTdGF0ZTsKICAgICBtX2FjdGl2
aXR5U3RhdGUgPSBhY3Rpdml0eVN0YXRlOwogCiAgICAgaWYgKGNoYW5nZWQpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMzQ4NDEp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5OCw4ICs0OTgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRQbHVnaW5WaWV3
KFBsdWdpblZpZXcqKTsKICAgICB2b2lkIHJlbW92ZVBsdWdpblZpZXcoUGx1Z2luVmlldyopOwog
Ci0gICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7IH0KLSAgICBib29sIGlzVmlzaWJsZU9y
T2NjbHVkZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkOyB9CisgICAgYm9vbCBpc1Zpc2libGUoKSBj
b25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlKTsgfQorICAgIGJvb2wgaXNWaXNpYmxlT3JPY2NsdWRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpJc1Zpc2libGVPck9jY2x1ZGVkKTsgfQogCiAgICAgTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhv
c3RpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9sYXllckhvc3RpbmdNb2RlOyB9CiAgICAgdm9p
ZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpOwpAQCAtMTE3MSw3ICsxMTcx
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJv
b2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmLCBDYWxsYmFj
a0lEKTsKICAgICB2b2lkIHVwZGF0ZUlzSW5XaW5kb3coYm9vbCBpc0luaXRpYWxTdGF0ZSA9IGZh
bHNlKTsKICAgICB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoKTsKLSAgICB2b2lkIHNldEFjdGl2
aXR5U3RhdGUoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIEFjdGl2aXR5U3RhdGVDaGFu
Z2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcyk7CisgICAgdm9pZCBz
ZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiwg
QWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNr
SURzKTsKICAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lE
KTsKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmKTsKICAgICB2b2lkIHNldEVkaXRhYmxlKGJvb2wpOwpAQCAtMTY4OSw3ICsxNjg5LDcgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgbV91c2VBc3luY1Njcm9sbGluZyB7IGZhbHNlIH07CiAKLSAg
ICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBtX2FjdGl2aXR5U3RhdGU7CisgICAgT3B0
aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IG1fYWN0aXZpdHlTdGF0ZTsKIAog
ICAgIGJvb2wgbV9wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkOwogICAgIFVzZXJBY3Rpdml0eSBt
X3VzZXJBY3Rpdml0eTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjM0ODQxKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBj
b3B5KQpAQCAtMjIsNyArMjIsNyBAQAogCiBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2Vp
dmVyIHsKICAgICBTZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRF
dmVudFZhbGlkLCBXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQgZXZlbnQsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQotICAgIFNldEFjdGl2aXR5U3RhdGUodW5zaWduZWQgYWN0aXZpdHlT
dGF0ZSwgV2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlE
LCBWZWN0b3I8V2ViS2l0OjpDYWxsYmFja0lEPiBjYWxsYmFja0lEcykKKyAgICBTZXRBY3Rpdml0
eVN0YXRlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0
YXRlLCBXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQs
IFZlY3RvcjxXZWJLaXQ6OkNhbGxiYWNrSUQ+IGNhbGxiYWNrSURzKQogICAgIFNldExheWVySG9z
dGluZ01vZGUoZW51bSBXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSkK
IAogICAgIFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCShy
ZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG1haW5GcmFtZUNvbnRlbnRT
aXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lk
IGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hh
bmdlZCwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNh
bGxiYWNrSURzKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0
aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQsIEFjdGl2aXR5U3Rh
dGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcykgb3ZlcnJp
ZGU7CiAKICAgICBib29sIGFkanVzdExheWVyRmx1c2hUaHJvdHRsaW5nKFdlYkNvcmU6OkxheWVy
Rmx1c2hUaHJvdHRsZVN0YXRlOjpGbGFncykgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0JKHJldmlzaW9u
IDIzNDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDg4
LDcgKzQ4OCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmcKICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdURk1vdmUobV9jb21taXRFbmNvZGVyKSwgeyB9
KTsKIH0KIAotdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncywgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2
aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JikKK3ZvaWQgUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+LCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZp
dHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKQogewogICAgIC8vIEZJ
WE1FOiBTaG91bGQgd2Ugc3VzcGVuZCBwYWludGluZyB3aGlsZSBub3QgdmlzaWJsZSwgbGlrZSBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT8gUHJvYmFibHkuCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBzaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgV2ViQ29yZTo6RnJh
bWVWaWV3Jikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlE
LCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNo
YW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+Jikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCgpOwog
CiAgICAgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUq
LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyMzQ4NDEpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ2OCw3ICs0NjgsNyBAQCBib29sIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjpmbHVzCiAgICAgfQogfQogCi12b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZs
YWdzIGNoYW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQs
IGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFj
a0lEcykKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQs
IEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3Rv
cjxDYWxsYmFja0lEPiYgbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKIHsKICAg
ICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuYXBwZW5kVmVjdG9yKG5leHRB
Y3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpOwogICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5n
ZUlEID0gc3RkOjptYXgobV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGFjdGl2aXR5U3RhdGVDaGFu
Z2VJRCk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMzQ4NDgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxOC0wOC0xNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXNlIE9wdGlvblNldCBmb3IgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU1NAor
CisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisKIDIwMTgtMDgtMTQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTEZDXVtGbG9hdGluZ10gQWRqdXN0IHZlcnRpY2FsIHBvc2l0aW9uIHdpdGggbm9u
LWNvbGxhcHNpbmcgcHJldmlvdXMgc2libGluZyBtYXJnaW4uCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5jcHAJKHJldmlzaW9uIDIzNDg0MSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3OSw2ICszNzksMzEgQEAgVEVTVChXVEZfT3B0aW9uU2V0LCBPcGVyYXRvckFuZCkKICAg
ICB9CiB9CiAKK1RFU1QoV1RGX09wdGlvblNldCwgT3BlcmF0b3JYb3IpCit7CisgICAgT3B0aW9u
U2V0PEV4YW1wbGVGbGFncz4gYSB7IEV4YW1wbGVGbGFnczo6QSB9OworICAgIE9wdGlvblNldDxF
eGFtcGxlRmxhZ3M+IGFjIHsgRXhhbXBsZUZsYWdzOjpBLCBFeGFtcGxlRmxhZ3M6OkMgfTsKKyAg
ICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPiBiYyB7IEV4YW1wbGVGbGFnczo6QiwgRXhhbXBsZUZs
YWdzOjpDIH07CisgICAgeworICAgICAgICBhdXRvIHNldCA9IGEgXiBhYzsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkEpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkIpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QykpOworICAgIH0KKyAgICB7CisgICAgICAg
IGF1dG8gc2V0ID0gYSBeIGJjOworICAgICAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMoRXhh
bXBsZUZsYWdzOjpBKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhFeGFtcGxl
RmxhZ3M6OkIpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFn
czo6QykpOworICAgIH0KKyAgICB7CisgICAgICAgIGF1dG8gc2V0ID0gYWMgXiBiYzsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QSkpOworICAgICAgICBF
WFBFQ1RfVFJVRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpCKSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpDKSk7CisgICAgfQorfQorCiBURVNU
KFdURl9PcHRpb25TZXQsIENvbnRhaW5zQW55KQogewogICAgIE9wdGlvblNldDxFeGFtcGxlRmxh
Z3M+IHNldCB7IEV4YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZsYWdzOjpCIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>